Cleanup BaseOAuthLoginActivity and TrackLoginActivity (#2748)

This commit is contained in:
AntsyLich
2025-11-30 18:17:25 +06:00
committed by GitHub
parent 7161bc2e82
commit c222a28bd1
2 changed files with 39 additions and 39 deletions

View File

@@ -14,7 +14,7 @@ abstract class BaseOAuthLoginActivity : BaseActivity() {
internal val trackerManager: TrackerManager by injectLazy()
abstract fun handleResult(data: Uri?)
abstract fun handleResult(uri: Uri)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -23,7 +23,12 @@ abstract class BaseOAuthLoginActivity : BaseActivity() {
LoadingScreen()
}
handleResult(intent.data)
val data = intent.data
if (data == null) {
returnToSettings()
} else {
handleResult(data)
}
}
internal fun returnToSettings() {

View File

@@ -2,69 +2,64 @@ package eu.kanade.tachiyomi.ui.setting.track
import android.net.Uri
import androidx.lifecycle.lifecycleScope
import tachiyomi.core.common.util.lang.launchIO
import kotlinx.coroutines.launch
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)
override fun handleResult(uri: Uri) {
val data = when {
!uri.encodedQuery.isNullOrBlank() -> uri.encodedQuery
!uri.encodedFragment.isNullOrBlank() -> uri.encodedFragment
else -> null
}
?.split("&")
?.filter { it.isNotBlank() }
?.associate {
val parts = it.split("=", limit = 2).map<String, String>(Uri::decode)
parts[0] to parts.getOrNull(1)
}
.orEmpty()
lifecycleScope.launch {
when (uri.host) {
"anilist-auth" -> handleAniList(data["access_token"])
"bangumi-auth" -> handleBangumi(data["code"])
"myanimelist-auth" -> handleMyAnimeList(data["code"])
"shikimori-auth" -> handleShikimori(data["code"])
}
returnToSettings()
}
}
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 {
trackerManager.aniList.login(matchResult.groups[1]!!.value)
returnToSettings()
}
private suspend fun handleAniList(accessToken: String?) {
if (accessToken != null) {
trackerManager.aniList.login(accessToken)
} else {
trackerManager.aniList.logout()
returnToSettings()
}
}
private fun handleBangumi(data: Uri) {
val code = data.getQueryParameter("code")
private suspend fun handleBangumi(code: String?) {
if (code != null) {
lifecycleScope.launchIO {
trackerManager.bangumi.login(code)
returnToSettings()
}
} else {
trackerManager.bangumi.logout()
returnToSettings()
}
}
private fun handleMyAnimeList(data: Uri) {
val code = data.getQueryParameter("code")
private suspend fun handleMyAnimeList(code: String?) {
if (code != null) {
lifecycleScope.launchIO {
trackerManager.myAnimeList.login(code)
returnToSettings()
}
} else {
trackerManager.myAnimeList.logout()
returnToSettings()
}
}
private fun handleShikimori(data: Uri) {
val code = data.getQueryParameter("code")
private suspend fun handleShikimori(code: String?) {
if (code != null) {
lifecycleScope.launchIO {
trackerManager.shikimori.login(code)
returnToSettings()
}
} else {
trackerManager.shikimori.logout()
returnToSettings()
}
}
}