From d200dd9cbe16254b68627bd7a85c426f883cc533 Mon Sep 17 00:00:00 2001 From: tarsin Date: Sat, 22 Apr 2023 15:43:00 +0800 Subject: [PATCH] Kill FavouriteScene AddFavoritesListener --- .../com/hippo/ehviewer/client/EhClient.kt | 13 +--- .../com/hippo/ehviewer/client/EhEngine.kt | 3 +- .../hippo/ehviewer/ui/scene/FavoritesScene.kt | 65 +++++++------------ 3 files changed, 28 insertions(+), 53 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhClient.kt b/app/src/main/java/com/hippo/ehviewer/client/EhClient.kt index 2c1cb8498..37a85f0ed 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhClient.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhClient.kt @@ -26,7 +26,7 @@ object EhClient { request.job = scope.launchIO { val callback: Callback? = request.callback try { - val result: Any? = request.run { + val result: Any = request.run { if (args == null) { execute(method) } else { @@ -44,20 +44,12 @@ object EhClient { } } - suspend fun execute(method: Int, vararg params: Any?): Any? { + suspend fun execute(method: Int, vararg params: Any?): Any { return when (method) { METHOD_GET_FAVORITES -> EhEngine.getFavorites( params[0] as String, ) - METHOD_ADD_FAVORITES_RANGE -> - @Suppress("UNCHECKED_CAST") - EhEngine.addFavoritesRange( - params[0] as LongArray, - params[1] as Array, - params[2] as Int, - ) - METHOD_MODIFY_FAVORITES -> EhEngine.modifyFavorites( params[0] as String, params[1] as LongArray, @@ -87,7 +79,6 @@ object EhClient { } const val METHOD_GET_FAVORITES = 8 - const val METHOD_ADD_FAVORITES_RANGE = 10 const val METHOD_MODIFY_FAVORITES = 11 const val METHOD_GET_TORRENT_LIST = 12 const val METHOD_ARCHIVE_LIST = 17 diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt b/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt index f3c9de4a0..e86f8afbe 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt +++ b/app/src/main/java/com/hippo/ehviewer/client/EhEngine.kt @@ -393,7 +393,7 @@ object EhEngine { gidArray: LongArray, tokenArray: Array, dstCat: Int, - ): Void? { + ) { check(gidArray.size == tokenArray.size) var i = 0 val n = gidArray.size @@ -401,7 +401,6 @@ object EhEngine { addFavorites(gidArray[i], tokenArray[i], dstCat, null) i++ } - return null } suspend fun modifyFavorites( diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt index b992e7c1c..16833d4b5 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.kt @@ -32,6 +32,7 @@ import androidx.core.view.GravityCompat import androidx.core.view.ViewCompat import androidx.core.view.WindowInsetsAnimationCompat import androidx.drawerlayout.widget.DrawerLayout +import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.datepicker.CalendarConstraints @@ -51,6 +52,7 @@ import com.hippo.ehviewer.R import com.hippo.ehviewer.Settings import com.hippo.ehviewer.WindowInsetsAnimationHelper import com.hippo.ehviewer.client.EhClient +import com.hippo.ehviewer.client.EhEngine import com.hippo.ehviewer.client.EhRequest import com.hippo.ehviewer.client.EhUrl import com.hippo.ehviewer.client.data.FavListUrlBuilder @@ -66,6 +68,9 @@ import com.hippo.widget.FabLayout.OnExpandListener import com.hippo.yorozuya.ObjectUtils import com.hippo.yorozuya.SimpleHandler import com.hippo.yorozuya.ViewUtils +import eu.kanade.tachiyomi.util.lang.launchIO +import eu.kanade.tachiyomi.util.lang.withUIContext +import moe.tarsin.coroutines.runSuspendCatching import rikka.core.res.resolveColor import java.time.LocalDateTime import java.time.ZoneId @@ -638,13 +643,11 @@ class FavoritesScene : System.arraycopy(result.catArray, 0, mFavCatArray!!, 0, 10) } mFavCountArray = result.countArray - if (mFavCountArray != null) { - mFavCountSum = 0 - for (i in 0..9) { - mFavCountSum += mFavCountArray!![i] - } - Settings.putFavCloudCount(mFavCountSum) + mFavCountSum = 0 + for (i in 0..9) { + mFavCountSum += mFavCountArray!![i] } + Settings.putFavCloudCount(mFavCountSum) updateSearchBar() mHelper!!.onGetPageData(taskId, 0, 0, result.prev, result.next, result.galleryInfoList) if (mDrawerAdapter != null) { @@ -691,28 +694,6 @@ class FavoritesScene : } } - private inner class AddFavoritesListener( - context: Context, - private val mTaskId: Int, - private val mKeyword: String?, - private val mBackup: List, - ) : EhCallback(context) { - override fun onSuccess(result: Void?) { - val scene = this@FavoritesScene - scene.onGetFavoritesLocal(mKeyword, mTaskId) - } - - override fun onFailure(e: Exception) { - // TODO It's a failure, add all of backup back to db. - // But how to known which one is failed? - EhDB.putLocalFavorites(mBackup) - val scene = this@FavoritesScene - scene.onGetFavoritesLocal(mKeyword, mTaskId) - } - - override fun onCancel() {} - } - private inner class GetFavoritesListener( context: Context, private val mTaskId: Int, // Local fav is shown now, but operation need be done for cloud fav @@ -931,18 +912,22 @@ class FavoritesScene : } val modifyGiListBackup: List = ArrayList(mModifyGiList) mModifyGiList.clear() - val request = EhRequest() - request.setMethod(EhClient.METHOD_ADD_FAVORITES_RANGE) - request.setCallback( - AddFavoritesListener( - context, - taskId, - mUrlBuilder!!.keyword, - modifyGiListBackup, - ), - ) - request.setArgs(gidArray, tokenArray, mModifyFavCat) - request.enqueue(this@FavoritesScene) + lifecycleScope.launchIO { + runSuspendCatching { + EhEngine.addFavoritesRange(gidArray, tokenArray, mModifyFavCat) + }.onSuccess { + withUIContext { + onGetFavoritesLocal(mUrlBuilder?.keyword, taskId) + } + }.onFailure { + // TODO It's a failure, add all of backup back to db. + // But how to known which one is failed? + EhDB.putLocalFavorites(modifyGiListBackup) + withUIContext { + onGetFavoritesLocal(mUrlBuilder?.keyword, taskId) + } + } + } } else { var i = 0 val n = mModifyGiList.size