Browse Source

Combine tracking OAuth login activities

arkon 1 year ago
parent
commit
9dc66c7c8d

+ 9 - 50
app/src/main/AndroidManifest.xml

@@ -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" />
-
-                <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="anilist-auth"/>
+                <data android:host="bangumi-auth"/>
+                <data android:host="myanimelist-auth"/>
+                <data android:host="shikimori-auth"/>
 
-                <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

+ 0 - 22
app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/AnilistLoginActivity.kt

@@ -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()
-        }
-    }
-}

+ 0 - 21
app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/BangumiLoginActivity.kt

@@ -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()
-        }
-    }
-}

+ 0 - 21
app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/MyAnimeListLoginActivity.kt

@@ -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()
-        }
-    }
-}

+ 0 - 21
app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/ShikimoriLoginActivity.kt

@@ -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()
-        }
-    }
-}

+ 70 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/TrackLoginActivity.kt

@@ -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()
+        }
+    }
+}

+ 1 - 0
i18n/src/main/res/values/strings.xml

@@ -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>