mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 06:17:57 +01:00 
			
		
		
		
	Misc tracker code cleanup
This commit is contained in:
		| @@ -4,6 +4,7 @@ import android.net.Uri | ||||
| import androidx.core.net.toUri | ||||
| import eu.kanade.tachiyomi.data.database.models.Track | ||||
| import eu.kanade.tachiyomi.data.track.model.TrackSearch | ||||
| import eu.kanade.tachiyomi.network.POST | ||||
| import eu.kanade.tachiyomi.network.asObservableSuccess | ||||
| import kotlinx.serialization.decodeFromString | ||||
| import kotlinx.serialization.json.Json | ||||
| @@ -18,9 +19,8 @@ import kotlinx.serialization.json.jsonPrimitive | ||||
| import kotlinx.serialization.json.long | ||||
| import kotlinx.serialization.json.put | ||||
| import kotlinx.serialization.json.putJsonObject | ||||
| import okhttp3.MediaType.Companion.toMediaTypeOrNull | ||||
| import okhttp3.MediaType.Companion.toMediaType | ||||
| import okhttp3.OkHttpClient | ||||
| import okhttp3.Request | ||||
| import okhttp3.RequestBody.Companion.toRequestBody | ||||
| import rx.Observable | ||||
| import uy.kohesive.injekt.injectLazy | ||||
| @@ -30,7 +30,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) { | ||||
|  | ||||
|     private val json: Json by injectLazy() | ||||
|  | ||||
|     private val jsonMime = "application/json; charset=utf-8".toMediaTypeOrNull() | ||||
|     private val jsonMime = "application/json; charset=utf-8".toMediaType() | ||||
|     private val authClient = client.newBuilder().addInterceptor(interceptor).build() | ||||
|  | ||||
|     fun addLibManga(track: Track): Observable<Track> { | ||||
| @@ -51,22 +51,18 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) { | ||||
|                 put("status", track.toAnilistStatus()) | ||||
|             } | ||||
|         } | ||||
|         val body = payload.toString().toRequestBody(jsonMime) | ||||
|         val request = Request.Builder() | ||||
|             .url(apiUrl) | ||||
|             .post(body) | ||||
|             .build() | ||||
|         return authClient.newCall(request) | ||||
|         return authClient.newCall(POST(apiUrl, body = payload.toString().toRequestBody(jsonMime))) | ||||
|             .asObservableSuccess() | ||||
|             .map { netResponse -> | ||||
|                 val responseBody = netResponse.body?.string().orEmpty() | ||||
|                 netResponse.close() | ||||
|                 if (responseBody.isEmpty()) { | ||||
|                     throw Exception("Null Response") | ||||
|                 netResponse.use { | ||||
|                     val responseBody = it.body?.string().orEmpty() | ||||
|                     if (responseBody.isEmpty()) { | ||||
|                         throw Exception("Null Response") | ||||
|                     } | ||||
|                     val response = json.decodeFromString<JsonObject>(responseBody) | ||||
|                     track.library_id = response["data"]!!.jsonObject["SaveMediaListEntry"]!!.jsonObject["id"]!!.jsonPrimitive.long | ||||
|                     track | ||||
|                 } | ||||
|                 val response = json.decodeFromString<JsonObject>(responseBody) | ||||
|                 track.library_id = response["data"]!!.jsonObject["SaveMediaListEntry"]!!.jsonObject["id"]!!.jsonPrimitive.long | ||||
|                 track | ||||
|             } | ||||
|     } | ||||
|  | ||||
| @@ -90,12 +86,7 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) { | ||||
|                 put("score", track.score.toInt()) | ||||
|             } | ||||
|         } | ||||
|         val body = payload.toString().toRequestBody(jsonMime) | ||||
|         val request = Request.Builder() | ||||
|             .url(apiUrl) | ||||
|             .post(body) | ||||
|             .build() | ||||
|         return authClient.newCall(request) | ||||
|         return authClient.newCall(POST(apiUrl, body = payload.toString().toRequestBody(jsonMime))) | ||||
|             .asObservableSuccess() | ||||
|             .map { | ||||
|                 track | ||||
| @@ -134,24 +125,21 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) { | ||||
|                 put("query", search) | ||||
|             } | ||||
|         } | ||||
|         val body = payload.toString().toRequestBody(jsonMime) | ||||
|         val request = Request.Builder() | ||||
|             .url(apiUrl) | ||||
|             .post(body) | ||||
|             .build() | ||||
|         return authClient.newCall(request) | ||||
|         return authClient.newCall(POST(apiUrl, body = payload.toString().toRequestBody(jsonMime))) | ||||
|             .asObservableSuccess() | ||||
|             .map { netResponse -> | ||||
|                 val responseBody = netResponse.body?.string().orEmpty() | ||||
|                 if (responseBody.isEmpty()) { | ||||
|                     throw Exception("Null Response") | ||||
|                 netResponse.use { | ||||
|                     val responseBody = it.body?.string().orEmpty() | ||||
|                     if (responseBody.isEmpty()) { | ||||
|                         throw Exception("Null Response") | ||||
|                     } | ||||
|                     val response = json.decodeFromString<JsonObject>(responseBody) | ||||
|                     val data = response["data"]!!.jsonObject | ||||
|                     val page = data["Page"]!!.jsonObject | ||||
|                     val media = page["media"]!!.jsonArray | ||||
|                     val entries = media.map { jsonToALManga(it.jsonObject) } | ||||
|                     entries.map { it.toTrack() } | ||||
|                 } | ||||
|                 val response = json.decodeFromString<JsonObject>(responseBody) | ||||
|                 val data = response["data"]!!.jsonObject | ||||
|                 val page = data["Page"]!!.jsonObject | ||||
|                 val media = page["media"]!!.jsonArray | ||||
|                 val entries = media.map { jsonToALManga(it.jsonObject) } | ||||
|                 entries.map { it.toTrack() } | ||||
|             } | ||||
|     } | ||||
|  | ||||
| @@ -194,24 +182,21 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) { | ||||
|                 put("manga_id", track.media_id) | ||||
|             } | ||||
|         } | ||||
|         val body = payload.toString().toRequestBody(jsonMime) | ||||
|         val request = Request.Builder() | ||||
|             .url(apiUrl) | ||||
|             .post(body) | ||||
|             .build() | ||||
|         return authClient.newCall(request) | ||||
|         return authClient.newCall(POST(apiUrl, body = payload.toString().toRequestBody(jsonMime))) | ||||
|             .asObservableSuccess() | ||||
|             .map { netResponse -> | ||||
|                 val responseBody = netResponse.body?.string().orEmpty() | ||||
|                 if (responseBody.isEmpty()) { | ||||
|                     throw Exception("Null Response") | ||||
|                 netResponse.use { | ||||
|                     val responseBody = it.body?.string().orEmpty() | ||||
|                     if (responseBody.isEmpty()) { | ||||
|                         throw Exception("Null Response") | ||||
|                     } | ||||
|                     val response = json.decodeFromString<JsonObject>(responseBody) | ||||
|                     val data = response["data"]!!.jsonObject | ||||
|                     val page = data["Page"]!!.jsonObject | ||||
|                     val media = page["mediaList"]!!.jsonArray | ||||
|                     val entries = media.map { jsonToALUserManga(it.jsonObject) } | ||||
|                     entries.firstOrNull()?.toTrack() | ||||
|                 } | ||||
|                 val response = json.decodeFromString<JsonObject>(responseBody) | ||||
|                 val data = response["data"]!!.jsonObject | ||||
|                 val page = data["Page"]!!.jsonObject | ||||
|                 val media = page["mediaList"]!!.jsonArray | ||||
|                 val entries = media.map { jsonToALUserManga(it.jsonObject) } | ||||
|                 entries.firstOrNull()?.toTrack() | ||||
|             } | ||||
|     } | ||||
|  | ||||
| @@ -239,22 +224,22 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) { | ||||
|         val payload = buildJsonObject { | ||||
|             put("query", query) | ||||
|         } | ||||
|         val body = payload.toString().toRequestBody(jsonMime) | ||||
|         val request = Request.Builder() | ||||
|             .url(apiUrl) | ||||
|             .post(body) | ||||
|             .build() | ||||
|         return authClient.newCall(request) | ||||
|         return authClient.newCall(POST(apiUrl, body = payload.toString().toRequestBody(jsonMime))) | ||||
|             .asObservableSuccess() | ||||
|             .map { netResponse -> | ||||
|                 val responseBody = netResponse.body?.string().orEmpty() | ||||
|                 if (responseBody.isEmpty()) { | ||||
|                     throw Exception("Null Response") | ||||
|                 netResponse.use { | ||||
|                     val responseBody = it.body?.string().orEmpty() | ||||
|                     if (responseBody.isEmpty()) { | ||||
|                         throw Exception("Null Response") | ||||
|                     } | ||||
|                     val response = json.decodeFromString<JsonObject>(responseBody) | ||||
|                     val data = response["data"]!!.jsonObject | ||||
|                     val viewer = data["Viewer"]!!.jsonObject | ||||
|                     Pair( | ||||
|                         viewer["id"]!!.jsonPrimitive.int, | ||||
|                         viewer["mediaListOptions"]!!.jsonObject["scoreFormat"]!!.jsonPrimitive.content | ||||
|                     ) | ||||
|                 } | ||||
|                 val response = json.decodeFromString<JsonObject>(responseBody) | ||||
|                 val data = response["data"]!!.jsonObject | ||||
|                 val viewer = data["Viewer"]!!.jsonObject | ||||
|                 Pair(viewer["id"]!!.jsonPrimitive.int, viewer["mediaListOptions"]!!.jsonObject["scoreFormat"]!!.jsonPrimitive.content) | ||||
|             } | ||||
|     } | ||||
|  | ||||
| @@ -298,7 +283,6 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) { | ||||
|  | ||||
|     companion object { | ||||
|         private const val clientId = "385" | ||||
|         private const val clientUrl = "tachiyomi://anilist-auth" | ||||
|         private const val apiUrl = "https://graphql.anilist.co/" | ||||
|         private const val baseUrl = "https://anilist.co/api/v2/" | ||||
|         private const val baseMangaUrl = "https://anilist.co/manga/" | ||||
|   | ||||
| @@ -5,6 +5,7 @@ import androidx.core.net.toUri | ||||
| import eu.kanade.tachiyomi.data.database.models.Track | ||||
| import eu.kanade.tachiyomi.data.track.TrackManager | ||||
| import eu.kanade.tachiyomi.data.track.model.TrackSearch | ||||
| import eu.kanade.tachiyomi.network.GET | ||||
| import eu.kanade.tachiyomi.network.POST | ||||
| import eu.kanade.tachiyomi.network.asObservableSuccess | ||||
| import kotlinx.serialization.decodeFromString | ||||
| @@ -34,11 +35,7 @@ class BangumiApi(private val client: OkHttpClient, interceptor: BangumiIntercept | ||||
|             .add("rating", track.score.toInt().toString()) | ||||
|             .add("status", track.toBangumiStatus()) | ||||
|             .build() | ||||
|         val request = Request.Builder() | ||||
|             .url("$apiUrl/collection/${track.media_id}/update") | ||||
|             .post(body) | ||||
|             .build() | ||||
|         return authClient.newCall(request) | ||||
|         return authClient.newCall(POST("$apiUrl/collection/${track.media_id}/update", body = body)) | ||||
|             .asObservableSuccess() | ||||
|             .map { | ||||
|                 track | ||||
| @@ -46,29 +43,20 @@ class BangumiApi(private val client: OkHttpClient, interceptor: BangumiIntercept | ||||
|     } | ||||
|  | ||||
|     fun updateLibManga(track: Track): Observable<Track> { | ||||
|         // chapter update | ||||
|         val body = FormBody.Builder() | ||||
|             .add("watched_eps", track.last_chapter_read.toString()) | ||||
|             .build() | ||||
|         val request = Request.Builder() | ||||
|             .url("$apiUrl/subject/${track.media_id}/update/watched_eps") | ||||
|             .post(body) | ||||
|             .build() | ||||
|  | ||||
|         // read status update | ||||
|         val sbody = FormBody.Builder() | ||||
|             .add("status", track.toBangumiStatus()) | ||||
|             .build() | ||||
|         val srequest = Request.Builder() | ||||
|             .url("$apiUrl/collection/${track.media_id}/update") | ||||
|             .post(sbody) | ||||
|             .build() | ||||
|         return authClient.newCall(srequest) | ||||
|         return authClient.newCall(POST("$apiUrl/collection/${track.media_id}/update", body = sbody)) | ||||
|             .asObservableSuccess() | ||||
|             .map { | ||||
|                 track | ||||
|             }.flatMap { | ||||
|                 authClient.newCall(request) | ||||
|                 // chapter update | ||||
|                 val body = FormBody.Builder() | ||||
|                     .add("watched_eps", track.last_chapter_read.toString()) | ||||
|                     .build() | ||||
|                 authClient.newCall(POST("$apiUrl/subject/${track.media_id}/update/watched_eps", body = body)) | ||||
|                     .asObservableSuccess() | ||||
|                     .map { | ||||
|                         track | ||||
| @@ -82,11 +70,7 @@ class BangumiApi(private val client: OkHttpClient, interceptor: BangumiIntercept | ||||
|             .buildUpon() | ||||
|             .appendQueryParameter("max_results", "20") | ||||
|             .build() | ||||
|         val request = Request.Builder() | ||||
|             .url(url.toString()) | ||||
|             .get() | ||||
|             .build() | ||||
|         return authClient.newCall(request) | ||||
|         return authClient.newCall(GET(url.toString())) | ||||
|             .asObservableSuccess() | ||||
|             .map { netResponse -> | ||||
|                 var responseBody = netResponse.body?.string().orEmpty() | ||||
| @@ -126,13 +110,7 @@ class BangumiApi(private val client: OkHttpClient, interceptor: BangumiIntercept | ||||
|     } | ||||
|  | ||||
|     fun findLibManga(track: Track): Observable<Track?> { | ||||
|         val urlMangas = "$apiUrl/subject/${track.media_id}" | ||||
|         val requestMangas = Request.Builder() | ||||
|             .url(urlMangas) | ||||
|             .get() | ||||
|             .build() | ||||
|  | ||||
|         return authClient.newCall(requestMangas) | ||||
|         return authClient.newCall(GET("$apiUrl/subject/${track.media_id}")) | ||||
|             .asObservableSuccess() | ||||
|             .map { netResponse -> | ||||
|                 // get comic info | ||||
| @@ -162,13 +140,17 @@ class BangumiApi(private val client: OkHttpClient, interceptor: BangumiIntercept | ||||
|     } | ||||
|  | ||||
|     fun accessToken(code: String): Observable<OAuth> { | ||||
|         return client.newCall(accessTokenRequest(code)).asObservableSuccess().map { netResponse -> | ||||
|             val responseBody = netResponse.body?.string().orEmpty() | ||||
|             if (responseBody.isEmpty()) { | ||||
|                 throw Exception("Null Response") | ||||
|         return client.newCall(accessTokenRequest(code)) | ||||
|             .asObservableSuccess() | ||||
|             .map { netResponse -> | ||||
|                 netResponse.use { | ||||
|                     val responseBody = it.body?.string().orEmpty() | ||||
|                     if (responseBody.isEmpty()) { | ||||
|                         throw Exception("Null Response") | ||||
|                     } | ||||
|                     json.decodeFromString<OAuth>(responseBody) | ||||
|                 } | ||||
|             } | ||||
|             json.decodeFromString<OAuth>(responseBody) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private fun accessTokenRequest(code: String) = POST( | ||||
|   | ||||
| @@ -12,7 +12,7 @@ import eu.kanade.tachiyomi.util.lang.toCalendar | ||||
| import eu.kanade.tachiyomi.util.selectInt | ||||
| import eu.kanade.tachiyomi.util.selectText | ||||
| import okhttp3.FormBody | ||||
| import okhttp3.MediaType.Companion.toMediaTypeOrNull | ||||
| import okhttp3.MediaType.Companion.toMediaType | ||||
| import okhttp3.OkHttpClient | ||||
| import okhttp3.RequestBody | ||||
| import okhttp3.RequestBody.Companion.toRequestBody | ||||
| @@ -282,7 +282,7 @@ class MyAnimeListApi(private val client: OkHttpClient, interceptor: MyAnimeListI | ||||
|                 .put("score", track.score) | ||||
|                 .put("num_read_chapters", track.last_chapter_read) | ||||
|  | ||||
|             return body.toString().toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull()) | ||||
|             return body.toString().toRequestBody("application/json; charset=utf-8".toMediaType()) | ||||
|         } | ||||
|  | ||||
|         private fun mangaEditPostBody(track: MyAnimeListEditData): RequestBody { | ||||
|   | ||||
| @@ -19,9 +19,8 @@ import kotlinx.serialization.json.jsonPrimitive | ||||
| import kotlinx.serialization.json.put | ||||
| import kotlinx.serialization.json.putJsonObject | ||||
| import okhttp3.FormBody | ||||
| import okhttp3.MediaType.Companion.toMediaTypeOrNull | ||||
| import okhttp3.MediaType.Companion.toMediaType | ||||
| import okhttp3.OkHttpClient | ||||
| import okhttp3.Request | ||||
| import okhttp3.RequestBody.Companion.toRequestBody | ||||
| import rx.Observable | ||||
| import uy.kohesive.injekt.injectLazy | ||||
| @@ -30,7 +29,7 @@ class ShikimoriApi(private val client: OkHttpClient, interceptor: ShikimoriInter | ||||
|  | ||||
|     private val json: Json by injectLazy() | ||||
|  | ||||
|     private val jsonime = "application/json; charset=utf-8".toMediaTypeOrNull() | ||||
|     private val jsonMime = "application/json; charset=utf-8".toMediaType() | ||||
|     private val authClient = client.newBuilder().addInterceptor(interceptor).build() | ||||
|  | ||||
|     fun addLibManga(track: Track, user_id: String): Observable<Track> { | ||||
| @@ -44,12 +43,7 @@ class ShikimoriApi(private val client: OkHttpClient, interceptor: ShikimoriInter | ||||
|                 put("status", track.toShikimoriStatus()) | ||||
|             } | ||||
|         } | ||||
|         val body = payload.toString().toRequestBody(jsonime) | ||||
|         val request = Request.Builder() | ||||
|             .url("$apiUrl/v2/user_rates") | ||||
|             .post(body) | ||||
|             .build() | ||||
|         return authClient.newCall(request) | ||||
|         return authClient.newCall(POST("$apiUrl/v2/user_rates", body = payload.toString().toRequestBody(jsonMime))) | ||||
|             .asObservableSuccess() | ||||
|             .map { | ||||
|                 track | ||||
| @@ -64,11 +58,7 @@ class ShikimoriApi(private val client: OkHttpClient, interceptor: ShikimoriInter | ||||
|             .appendQueryParameter("search", search) | ||||
|             .appendQueryParameter("limit", "20") | ||||
|             .build() | ||||
|         val request = Request.Builder() | ||||
|             .url(url.toString()) | ||||
|             .get() | ||||
|             .build() | ||||
|         return authClient.newCall(request) | ||||
|         return authClient.newCall(GET(url.toString())) | ||||
|             .asObservableSuccess() | ||||
|             .map { netResponse -> | ||||
|                 val responseBody = netResponse.body?.string().orEmpty() | ||||
| @@ -107,30 +97,21 @@ class ShikimoriApi(private val client: OkHttpClient, interceptor: ShikimoriInter | ||||
|     } | ||||
|  | ||||
|     fun findLibManga(track: Track, user_id: String): Observable<Track?> { | ||||
|         val url = "$apiUrl/v2/user_rates".toUri().buildUpon() | ||||
|             .appendQueryParameter("user_id", user_id) | ||||
|             .appendQueryParameter("target_id", track.media_id.toString()) | ||||
|             .appendQueryParameter("target_type", "Manga") | ||||
|             .build() | ||||
|         val request = Request.Builder() | ||||
|             .url(url.toString()) | ||||
|             .get() | ||||
|             .build() | ||||
|  | ||||
|         val urlMangas = "$apiUrl/mangas".toUri().buildUpon() | ||||
|             .appendPath(track.media_id.toString()) | ||||
|             .build() | ||||
|         val requestMangas = Request.Builder() | ||||
|             .url(urlMangas.toString()) | ||||
|             .get() | ||||
|             .build() | ||||
|         return authClient.newCall(requestMangas) | ||||
|         return authClient.newCall(GET(urlMangas.toString())) | ||||
|             .asObservableSuccess() | ||||
|             .map { netResponse -> | ||||
|                 val responseBody = netResponse.body?.string().orEmpty() | ||||
|                 json.decodeFromString<JsonObject>(responseBody) | ||||
|             }.flatMap { mangas -> | ||||
|                 authClient.newCall(request) | ||||
|                 val url = "$apiUrl/v2/user_rates".toUri().buildUpon() | ||||
|                     .appendQueryParameter("user_id", user_id) | ||||
|                     .appendQueryParameter("target_id", track.media_id.toString()) | ||||
|                     .appendQueryParameter("target_type", "Manga") | ||||
|                     .build() | ||||
|                 authClient.newCall(GET(url.toString())) | ||||
|                     .asObservableSuccess() | ||||
|                     .map { netResponse -> | ||||
|                         val responseBody = netResponse.body?.string().orEmpty() | ||||
| @@ -155,13 +136,17 @@ class ShikimoriApi(private val client: OkHttpClient, interceptor: ShikimoriInter | ||||
|     } | ||||
|  | ||||
|     fun accessToken(code: String): Observable<OAuth> { | ||||
|         return client.newCall(accessTokenRequest(code)).asObservableSuccess().map { netResponse -> | ||||
|             val responseBody = netResponse.body?.string().orEmpty() | ||||
|             if (responseBody.isEmpty()) { | ||||
|                 throw Exception("Null Response") | ||||
|         return client.newCall(accessTokenRequest(code)) | ||||
|             .asObservableSuccess() | ||||
|             .map { netResponse -> | ||||
|                 netResponse.use { | ||||
|                     val responseBody = it.body?.string().orEmpty() | ||||
|                     if (responseBody.isEmpty()) { | ||||
|                         throw Exception("Null Response") | ||||
|                     } | ||||
|                     json.decodeFromString<OAuth>(responseBody) | ||||
|                 } | ||||
|             } | ||||
|             json.decodeFromString<OAuth>(responseBody) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private fun accessTokenRequest(code: String) = POST( | ||||
|   | ||||
| @@ -1,30 +1,14 @@ | ||||
| package eu.kanade.tachiyomi.ui.setting.track | ||||
|  | ||||
| import android.content.Intent | ||||
| import android.os.Bundle | ||||
| import android.view.Gravity.CENTER | ||||
| import android.view.ViewGroup.LayoutParams.WRAP_CONTENT | ||||
| import android.widget.FrameLayout | ||||
| import android.widget.ProgressBar | ||||
| import androidx.appcompat.app.AppCompatActivity | ||||
| import eu.kanade.tachiyomi.data.track.TrackManager | ||||
| import eu.kanade.tachiyomi.ui.main.MainActivity | ||||
| import android.net.Uri | ||||
| import rx.android.schedulers.AndroidSchedulers | ||||
| import rx.schedulers.Schedulers | ||||
| import uy.kohesive.injekt.injectLazy | ||||
|  | ||||
| class AnilistLoginActivity : AppCompatActivity() { | ||||
|  | ||||
|     private val trackManager: TrackManager by injectLazy() | ||||
|  | ||||
|     override fun onCreate(savedState: Bundle?) { | ||||
|         super.onCreate(savedState) | ||||
|  | ||||
|         val view = ProgressBar(this) | ||||
|         setContentView(view, FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT, CENTER)) | ||||
| class AnilistLoginActivity : BaseOAuthLoginActivity() { | ||||
|  | ||||
|     override fun handleResult(data: Uri?) { | ||||
|         val regex = "(?:access_token=)(.*?)(?:&)".toRegex() | ||||
|         val matchResult = regex.find(intent.data?.fragment.toString()) | ||||
|         val matchResult = regex.find(data?.fragment.toString()) | ||||
|         if (matchResult?.groups?.get(1) != null) { | ||||
|             trackManager.aniList.login(matchResult.groups[1]!!.value) | ||||
|                 .subscribeOn(Schedulers.io()) | ||||
| @@ -42,12 +26,4 @@ class AnilistLoginActivity : AppCompatActivity() { | ||||
|             returnToSettings() | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private fun returnToSettings() { | ||||
|         finish() | ||||
|  | ||||
|         val intent = Intent(this, MainActivity::class.java) | ||||
|         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) | ||||
|         startActivity(intent) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,29 +1,13 @@ | ||||
| package eu.kanade.tachiyomi.ui.setting.track | ||||
|  | ||||
| import android.content.Intent | ||||
| import android.os.Bundle | ||||
| import android.view.Gravity.CENTER | ||||
| import android.view.ViewGroup.LayoutParams.WRAP_CONTENT | ||||
| import android.widget.FrameLayout | ||||
| import android.widget.ProgressBar | ||||
| import androidx.appcompat.app.AppCompatActivity | ||||
| import eu.kanade.tachiyomi.data.track.TrackManager | ||||
| import eu.kanade.tachiyomi.ui.main.MainActivity | ||||
| import android.net.Uri | ||||
| import rx.android.schedulers.AndroidSchedulers | ||||
| import rx.schedulers.Schedulers | ||||
| import uy.kohesive.injekt.injectLazy | ||||
|  | ||||
| class BangumiLoginActivity : AppCompatActivity() { | ||||
| class BangumiLoginActivity : BaseOAuthLoginActivity() { | ||||
|  | ||||
|     private val trackManager: TrackManager by injectLazy() | ||||
|  | ||||
|     override fun onCreate(savedState: Bundle?) { | ||||
|         super.onCreate(savedState) | ||||
|  | ||||
|         val view = ProgressBar(this) | ||||
|         setContentView(view, FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT, CENTER)) | ||||
|  | ||||
|         val code = intent.data?.getQueryParameter("code") | ||||
|     override fun handleResult(data: Uri?) { | ||||
|         val code = data?.getQueryParameter("code") | ||||
|         if (code != null) { | ||||
|             trackManager.bangumi.login(code) | ||||
|                 .subscribeOn(Schedulers.io()) | ||||
| @@ -41,12 +25,4 @@ class BangumiLoginActivity : AppCompatActivity() { | ||||
|             returnToSettings() | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private fun returnToSettings() { | ||||
|         finish() | ||||
|  | ||||
|         val intent = Intent(this, MainActivity::class.java) | ||||
|         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) | ||||
|         startActivity(intent) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,44 @@ | ||||
| package eu.kanade.tachiyomi.ui.setting.track | ||||
|  | ||||
| import android.content.Intent | ||||
| import android.net.Uri | ||||
| import android.os.Bundle | ||||
| import android.view.Gravity | ||||
| import android.view.ViewGroup | ||||
| import android.widget.FrameLayout | ||||
| import android.widget.ProgressBar | ||||
| import androidx.appcompat.app.AppCompatActivity | ||||
| import eu.kanade.tachiyomi.data.track.TrackManager | ||||
| import eu.kanade.tachiyomi.ui.main.MainActivity | ||||
| import uy.kohesive.injekt.injectLazy | ||||
|  | ||||
| abstract class BaseOAuthLoginActivity : AppCompatActivity() { | ||||
|  | ||||
|     internal val trackManager: TrackManager by injectLazy() | ||||
|  | ||||
|     abstract fun handleResult(data: Uri?) | ||||
|  | ||||
|     override fun onCreate(savedState: Bundle?) { | ||||
|         super.onCreate(savedState) | ||||
|  | ||||
|         val view = ProgressBar(this) | ||||
|         setContentView( | ||||
|             view, | ||||
|             FrameLayout.LayoutParams( | ||||
|                 ViewGroup.LayoutParams.WRAP_CONTENT, | ||||
|                 ViewGroup.LayoutParams.WRAP_CONTENT, | ||||
|                 Gravity.CENTER | ||||
|             ) | ||||
|         ) | ||||
|  | ||||
|         handleResult(intent.data) | ||||
|     } | ||||
|  | ||||
|     internal fun returnToSettings() { | ||||
|         finish() | ||||
|  | ||||
|         val intent = Intent(this, MainActivity::class.java) | ||||
|         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) | ||||
|         startActivity(intent) | ||||
|     } | ||||
| } | ||||
| @@ -1,29 +1,13 @@ | ||||
| package eu.kanade.tachiyomi.ui.setting.track | ||||
|  | ||||
| import android.content.Intent | ||||
| import android.os.Bundle | ||||
| import android.view.Gravity.CENTER | ||||
| import android.view.ViewGroup.LayoutParams.WRAP_CONTENT | ||||
| import android.widget.FrameLayout | ||||
| import android.widget.ProgressBar | ||||
| import androidx.appcompat.app.AppCompatActivity | ||||
| import eu.kanade.tachiyomi.data.track.TrackManager | ||||
| import eu.kanade.tachiyomi.ui.main.MainActivity | ||||
| import android.net.Uri | ||||
| import rx.android.schedulers.AndroidSchedulers | ||||
| import rx.schedulers.Schedulers | ||||
| import uy.kohesive.injekt.injectLazy | ||||
|  | ||||
| class ShikimoriLoginActivity : AppCompatActivity() { | ||||
| class ShikimoriLoginActivity : BaseOAuthLoginActivity() { | ||||
|  | ||||
|     private val trackManager: TrackManager by injectLazy() | ||||
|  | ||||
|     override fun onCreate(savedState: Bundle?) { | ||||
|         super.onCreate(savedState) | ||||
|  | ||||
|         val view = ProgressBar(this) | ||||
|         setContentView(view, FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT, CENTER)) | ||||
|  | ||||
|         val code = intent.data?.getQueryParameter("code") | ||||
|     override fun handleResult(data: Uri?) { | ||||
|         val code = data?.getQueryParameter("code") | ||||
|         if (code != null) { | ||||
|             trackManager.shikimori.login(code) | ||||
|                 .subscribeOn(Schedulers.io()) | ||||
| @@ -41,12 +25,4 @@ class ShikimoriLoginActivity : AppCompatActivity() { | ||||
|             returnToSettings() | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private fun returnToSettings() { | ||||
|         finish() | ||||
|  | ||||
|         val intent = Intent(this, MainActivity::class.java) | ||||
|         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP) | ||||
|         startActivity(intent) | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user