Skip to content

Commit c222a28

Browse files
authored
Cleanup BaseOAuthLoginActivity and TrackLoginActivity (#2748)
1 parent 7161bc2 commit c222a28

File tree

2 files changed

+39
-39
lines changed

2 files changed

+39
-39
lines changed

app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/BaseOAuthLoginActivity.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ abstract class BaseOAuthLoginActivity : BaseActivity() {
1414

1515
internal val trackerManager: TrackerManager by injectLazy()
1616

17-
abstract fun handleResult(data: Uri?)
17+
abstract fun handleResult(uri: Uri)
1818

1919
override fun onCreate(savedInstanceState: Bundle?) {
2020
super.onCreate(savedInstanceState)
@@ -23,7 +23,12 @@ abstract class BaseOAuthLoginActivity : BaseActivity() {
2323
LoadingScreen()
2424
}
2525

26-
handleResult(intent.data)
26+
val data = intent.data
27+
if (data == null) {
28+
returnToSettings()
29+
} else {
30+
handleResult(data)
31+
}
2732
}
2833

2934
internal fun returnToSettings() {

app/src/main/java/eu/kanade/tachiyomi/ui/setting/track/TrackLoginActivity.kt

Lines changed: 32 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,69 +2,64 @@ package eu.kanade.tachiyomi.ui.setting.track
22

33
import android.net.Uri
44
import androidx.lifecycle.lifecycleScope
5-
import tachiyomi.core.common.util.lang.launchIO
5+
import kotlinx.coroutines.launch
66

77
class TrackLoginActivity : BaseOAuthLoginActivity() {
88

9-
override fun handleResult(data: Uri?) {
10-
when (data?.host) {
11-
"anilist-auth" -> handleAnilist(data)
12-
"bangumi-auth" -> handleBangumi(data)
13-
"myanimelist-auth" -> handleMyAnimeList(data)
14-
"shikimori-auth" -> handleShikimori(data)
9+
override fun handleResult(uri: Uri) {
10+
val data = when {
11+
!uri.encodedQuery.isNullOrBlank() -> uri.encodedQuery
12+
!uri.encodedFragment.isNullOrBlank() -> uri.encodedFragment
13+
else -> null
1514
}
16-
}
15+
?.split("&")
16+
?.filter { it.isNotBlank() }
17+
?.associate {
18+
val parts = it.split("=", limit = 2).map<String, String>(Uri::decode)
19+
parts[0] to parts.getOrNull(1)
20+
}
21+
.orEmpty()
1722

18-
private fun handleAnilist(data: Uri) {
19-
val regex = "(?:access_token=)(.*?)(?:&)".toRegex()
20-
val matchResult = regex.find(data.fragment.toString())
21-
if (matchResult?.groups?.get(1) != null) {
22-
lifecycleScope.launchIO {
23-
trackerManager.aniList.login(matchResult.groups[1]!!.value)
24-
returnToSettings()
23+
lifecycleScope.launch {
24+
when (uri.host) {
25+
"anilist-auth" -> handleAniList(data["access_token"])
26+
"bangumi-auth" -> handleBangumi(data["code"])
27+
"myanimelist-auth" -> handleMyAnimeList(data["code"])
28+
"shikimori-auth" -> handleShikimori(data["code"])
2529
}
30+
returnToSettings()
31+
}
32+
}
33+
34+
private suspend fun handleAniList(accessToken: String?) {
35+
if (accessToken != null) {
36+
trackerManager.aniList.login(accessToken)
2637
} else {
2738
trackerManager.aniList.logout()
28-
returnToSettings()
2939
}
3040
}
3141

32-
private fun handleBangumi(data: Uri) {
33-
val code = data.getQueryParameter("code")
42+
private suspend fun handleBangumi(code: String?) {
3443
if (code != null) {
35-
lifecycleScope.launchIO {
36-
trackerManager.bangumi.login(code)
37-
returnToSettings()
38-
}
44+
trackerManager.bangumi.login(code)
3945
} else {
4046
trackerManager.bangumi.logout()
41-
returnToSettings()
4247
}
4348
}
4449

45-
private fun handleMyAnimeList(data: Uri) {
46-
val code = data.getQueryParameter("code")
50+
private suspend fun handleMyAnimeList(code: String?) {
4751
if (code != null) {
48-
lifecycleScope.launchIO {
49-
trackerManager.myAnimeList.login(code)
50-
returnToSettings()
51-
}
52+
trackerManager.myAnimeList.login(code)
5253
} else {
5354
trackerManager.myAnimeList.logout()
54-
returnToSettings()
5555
}
5656
}
5757

58-
private fun handleShikimori(data: Uri) {
59-
val code = data.getQueryParameter("code")
58+
private suspend fun handleShikimori(code: String?) {
6059
if (code != null) {
61-
lifecycleScope.launchIO {
62-
trackerManager.shikimori.login(code)
63-
returnToSettings()
64-
}
60+
trackerManager.shikimori.login(code)
6561
} else {
6662
trackerManager.shikimori.logout()
67-
returnToSettings()
6863
}
6964
}
7065
}

0 commit comments

Comments
 (0)