mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Combine tracking OAuth login activities
This commit is contained in:
		@@ -124,8 +124,8 @@
 | 
			
		||||
            android:exported="false" />
 | 
			
		||||
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".ui.setting.track.AnilistLoginActivity"
 | 
			
		||||
            android:label="Anilist"
 | 
			
		||||
            android:name=".ui.setting.track.TrackLoginActivity"
 | 
			
		||||
            android:label="@string/track_activity_name"
 | 
			
		||||
            android:exported="true">
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
@@ -133,54 +133,12 @@
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data
 | 
			
		||||
                    android:host="anilist-auth"
 | 
			
		||||
                    android:scheme="tachiyomi" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".ui.setting.track.MyAnimeListLoginActivity"
 | 
			
		||||
            android:label="MyAnimeList"
 | 
			
		||||
            android:exported="true">
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
                <data android:host="anilist-auth"/>
 | 
			
		||||
                <data android:host="bangumi-auth"/>
 | 
			
		||||
                <data android:host="myanimelist-auth"/>
 | 
			
		||||
                <data android:host="shikimori-auth"/>
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data
 | 
			
		||||
                    android:host="myanimelist-auth"
 | 
			
		||||
                    android:scheme="tachiyomi" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".ui.setting.track.ShikimoriLoginActivity"
 | 
			
		||||
            android:label="Shikimori"
 | 
			
		||||
            android:exported="true">
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data
 | 
			
		||||
                    android:host="shikimori-auth"
 | 
			
		||||
                    android:scheme="tachiyomi" />
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
        </activity>
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".ui.setting.track.BangumiLoginActivity"
 | 
			
		||||
            android:label="Bangumi"
 | 
			
		||||
            android:exported="true">
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.VIEW" />
 | 
			
		||||
 | 
			
		||||
                <category android:name="android.intent.category.DEFAULT" />
 | 
			
		||||
                <category android:name="android.intent.category.BROWSABLE" />
 | 
			
		||||
 | 
			
		||||
                <data
 | 
			
		||||
                    android:host="bangumi-auth"
 | 
			
		||||
                    android:scheme="tachiyomi" />
 | 
			
		||||
                <data android:scheme="tachiyomi"/>
 | 
			
		||||
            </intent-filter>
 | 
			
		||||
        </activity>
 | 
			
		||||
 | 
			
		||||
@@ -210,7 +168,8 @@
 | 
			
		||||
            android:name=".data.updater.AppUpdateService"
 | 
			
		||||
            android:exported="false" />
 | 
			
		||||
 | 
			
		||||
        <service android:name=".extension.util.ExtensionInstallService"
 | 
			
		||||
        <service
 | 
			
		||||
            android:name=".extension.util.ExtensionInstallService"
 | 
			
		||||
            android:exported="false" />
 | 
			
		||||
 | 
			
		||||
        <service
 | 
			
		||||
 
 | 
			
		||||
@@ -1,22 +0,0 @@
 | 
			
		||||
package eu.kanade.tachiyomi.ui.setting.track
 | 
			
		||||
 | 
			
		||||
import android.net.Uri
 | 
			
		||||
import androidx.lifecycle.lifecycleScope
 | 
			
		||||
import tachiyomi.core.util.lang.launchIO
 | 
			
		||||
 | 
			
		||||
class AnilistLoginActivity : BaseOAuthLoginActivity() {
 | 
			
		||||
 | 
			
		||||
    override fun handleResult(data: Uri?) {
 | 
			
		||||
        val regex = "(?:access_token=)(.*?)(?:&)".toRegex()
 | 
			
		||||
        val matchResult = regex.find(data?.fragment.toString())
 | 
			
		||||
        if (matchResult?.groups?.get(1) != null) {
 | 
			
		||||
            lifecycleScope.launchIO {
 | 
			
		||||
                trackManager.aniList.login(matchResult.groups[1]!!.value)
 | 
			
		||||
                returnToSettings()
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            trackManager.aniList.logout()
 | 
			
		||||
            returnToSettings()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,21 +0,0 @@
 | 
			
		||||
package eu.kanade.tachiyomi.ui.setting.track
 | 
			
		||||
 | 
			
		||||
import android.net.Uri
 | 
			
		||||
import androidx.lifecycle.lifecycleScope
 | 
			
		||||
import tachiyomi.core.util.lang.launchIO
 | 
			
		||||
 | 
			
		||||
class BangumiLoginActivity : BaseOAuthLoginActivity() {
 | 
			
		||||
 | 
			
		||||
    override fun handleResult(data: Uri?) {
 | 
			
		||||
        val code = data?.getQueryParameter("code")
 | 
			
		||||
        if (code != null) {
 | 
			
		||||
            lifecycleScope.launchIO {
 | 
			
		||||
                trackManager.bangumi.login(code)
 | 
			
		||||
                returnToSettings()
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            trackManager.bangumi.logout()
 | 
			
		||||
            returnToSettings()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,21 +0,0 @@
 | 
			
		||||
package eu.kanade.tachiyomi.ui.setting.track
 | 
			
		||||
 | 
			
		||||
import android.net.Uri
 | 
			
		||||
import androidx.lifecycle.lifecycleScope
 | 
			
		||||
import tachiyomi.core.util.lang.launchIO
 | 
			
		||||
 | 
			
		||||
class MyAnimeListLoginActivity : BaseOAuthLoginActivity() {
 | 
			
		||||
 | 
			
		||||
    override fun handleResult(data: Uri?) {
 | 
			
		||||
        val code = data?.getQueryParameter("code")
 | 
			
		||||
        if (code != null) {
 | 
			
		||||
            lifecycleScope.launchIO {
 | 
			
		||||
                trackManager.myAnimeList.login(code)
 | 
			
		||||
                returnToSettings()
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            trackManager.myAnimeList.logout()
 | 
			
		||||
            returnToSettings()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,21 +0,0 @@
 | 
			
		||||
package eu.kanade.tachiyomi.ui.setting.track
 | 
			
		||||
 | 
			
		||||
import android.net.Uri
 | 
			
		||||
import androidx.lifecycle.lifecycleScope
 | 
			
		||||
import tachiyomi.core.util.lang.launchIO
 | 
			
		||||
 | 
			
		||||
class ShikimoriLoginActivity : BaseOAuthLoginActivity() {
 | 
			
		||||
 | 
			
		||||
    override fun handleResult(data: Uri?) {
 | 
			
		||||
        val code = data?.getQueryParameter("code")
 | 
			
		||||
        if (code != null) {
 | 
			
		||||
            lifecycleScope.launchIO {
 | 
			
		||||
                trackManager.shikimori.login(code)
 | 
			
		||||
                returnToSettings()
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            trackManager.shikimori.logout()
 | 
			
		||||
            returnToSettings()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,70 @@
 | 
			
		||||
package eu.kanade.tachiyomi.ui.setting.track
 | 
			
		||||
 | 
			
		||||
import android.net.Uri
 | 
			
		||||
import androidx.lifecycle.lifecycleScope
 | 
			
		||||
import tachiyomi.core.util.lang.launchIO
 | 
			
		||||
 | 
			
		||||
class TrackLoginActivity : BaseOAuthLoginActivity() {
 | 
			
		||||
 | 
			
		||||
    override fun handleResult(data: Uri?) {
 | 
			
		||||
        when (data?.host) {
 | 
			
		||||
            "anilist-auth" -> handleAnilist(data)
 | 
			
		||||
            "bangumi-auth" -> handleBangumi(data)
 | 
			
		||||
            "myanimelist-auth" -> handleMyAnimeList(data)
 | 
			
		||||
            "shikimori-auth" -> handleShikimori(data)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun handleAnilist(data: Uri) {
 | 
			
		||||
        val regex = "(?:access_token=)(.*?)(?:&)".toRegex()
 | 
			
		||||
        val matchResult = regex.find(data.fragment.toString())
 | 
			
		||||
        if (matchResult?.groups?.get(1) != null) {
 | 
			
		||||
            lifecycleScope.launchIO {
 | 
			
		||||
                trackManager.aniList.login(matchResult.groups[1]!!.value)
 | 
			
		||||
                returnToSettings()
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            trackManager.aniList.logout()
 | 
			
		||||
            returnToSettings()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun handleBangumi(data: Uri) {
 | 
			
		||||
        val code = data.getQueryParameter("code")
 | 
			
		||||
        if (code != null) {
 | 
			
		||||
            lifecycleScope.launchIO {
 | 
			
		||||
                trackManager.bangumi.login(code)
 | 
			
		||||
                returnToSettings()
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            trackManager.bangumi.logout()
 | 
			
		||||
            returnToSettings()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun handleMyAnimeList(data: Uri) {
 | 
			
		||||
        val code = data.getQueryParameter("code")
 | 
			
		||||
        if (code != null) {
 | 
			
		||||
            lifecycleScope.launchIO {
 | 
			
		||||
                trackManager.myAnimeList.login(code)
 | 
			
		||||
                returnToSettings()
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            trackManager.myAnimeList.logout()
 | 
			
		||||
            returnToSettings()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun handleShikimori(data: Uri) {
 | 
			
		||||
        val code = data.getQueryParameter("code")
 | 
			
		||||
        if (code != null) {
 | 
			
		||||
            lifecycleScope.launchIO {
 | 
			
		||||
                trackManager.shikimori.login(code)
 | 
			
		||||
                returnToSettings()
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            trackManager.shikimori.logout()
 | 
			
		||||
            returnToSettings()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -462,6 +462,7 @@
 | 
			
		||||
    <string name="enhanced_services_not_installed">Available but source not installed: %s</string>
 | 
			
		||||
    <string name="enhanced_tracking_info">Services that provide enhanced features for specific sources. Entries are automatically tracked when added to your library.</string>
 | 
			
		||||
    <string name="action_track">Track</string>
 | 
			
		||||
    <string name="track_activity_name">Tracking login</string>
 | 
			
		||||
 | 
			
		||||
      <!-- Browse section -->
 | 
			
		||||
    <string name="pref_hide_in_library_items">Hide entries already in library</string>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user