diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index da9f8f2e9..f8dde8951 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -125,8 +125,8 @@
android:exported="false" />
@@ -134,54 +134,12 @@
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -216,7 +174,8 @@
android:name=".data.updater.AppUpdateService"
android:exported="false" />
-
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()
+ }
+ }
+}
diff --git a/i18n/src/main/res/values/strings.xml b/i18n/src/main/res/values/strings.xml
index d1667277c..3eb096c3d 100755
--- a/i18n/src/main/res/values/strings.xml
+++ b/i18n/src/main/res/values/strings.xml
@@ -462,6 +462,7 @@
Available but source not installed: %s
Services that provide enhanced features for specific sources. Entries are automatically tracked when added to your library.
Track
+ Tracking login
Hide entries already in library