From 58d1ace61221303eaa516461ae8a28b9649af0e9 Mon Sep 17 00:00:00 2001 From: tarsin Date: Fri, 2 Jun 2023 17:55:40 +0800 Subject: [PATCH] Singletonize FavouriteStatusRouter --- app/src/main/java/com/hippo/ehviewer/EhApplication.kt | 4 +--- .../java/com/hippo/ehviewer/FavouriteStatusRouter.kt | 2 +- .../java/com/hippo/ehviewer/ui/CommonOperations.kt | 6 +++--- .../ehviewer/ui/legacy/GalleryInfoContentHelper.kt | 11 ++++------- .../com/hippo/ehviewer/ui/scene/GalleryListScene.kt | 7 ++----- 5 files changed, 11 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/EhApplication.kt b/app/src/main/java/com/hippo/ehviewer/EhApplication.kt index 2e535f44d..aa95944d2 100644 --- a/app/src/main/java/com/hippo/ehviewer/EhApplication.kt +++ b/app/src/main/java/com/hippo/ehviewer/EhApplication.kt @@ -164,14 +164,12 @@ class EhApplication : Application(), ImageLoaderFactory { val galleryDetailCache by lazy { LruCache(25).also { - favouriteStatusRouter.addListener { gid, slot -> + FavouriteStatusRouter.addListener { gid, slot -> it[gid]?.favoriteSlot = slot } } } - val favouriteStatusRouter by lazy { FavouriteStatusRouter() } - val readerPreferences by lazy { ReaderPreferences(AndroidPreferenceStore(appCtx)) } val ehDatabase by lazy { roomDb("eh.db") { allowMainThreadQueries() } } diff --git a/app/src/main/java/com/hippo/ehviewer/FavouriteStatusRouter.kt b/app/src/main/java/com/hippo/ehviewer/FavouriteStatusRouter.kt index 2629b20d5..275898fd4 100644 --- a/app/src/main/java/com/hippo/ehviewer/FavouriteStatusRouter.kt +++ b/app/src/main/java/com/hippo/ehviewer/FavouriteStatusRouter.kt @@ -19,7 +19,7 @@ import android.annotation.SuppressLint import com.hippo.ehviewer.client.data.GalleryInfo import com.hippo.ehviewer.yorozuya.IntIdGenerator -class FavouriteStatusRouter { +object FavouriteStatusRouter { private val idGenerator = IntIdGenerator(Settings.dataMapNextId) @SuppressLint("UseSparseArrays") diff --git a/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.kt b/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.kt index f131036af..56ba4e2cf 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.kt @@ -30,8 +30,8 @@ import androidx.compose.material.icons.filled.MenuBook import androidx.compose.material3.Text import androidx.compose.ui.res.stringResource import androidx.core.content.ContextCompat -import com.hippo.ehviewer.EhApplication.Companion.favouriteStatusRouter import com.hippo.ehviewer.EhDB +import com.hippo.ehviewer.FavouriteStatusRouter import com.hippo.ehviewer.GetText import com.hippo.ehviewer.R import com.hippo.ehviewer.Settings @@ -212,7 +212,7 @@ suspend fun Context.addToFavorites(galleryInfo: GalleryInfo, select: Boolean = f galleryInfo.favoriteName = newFavoriteName galleryInfo.favoriteSlot = slot withUIContext { - favouriteStatusRouter.modifyFavourites(galleryInfo.gid, slot) + FavouriteStatusRouter.modifyFavourites(galleryInfo.gid, slot) } } if (!select && slot >= -1 && slot <= 9) { @@ -246,7 +246,7 @@ suspend fun removeFromFavorites(galleryInfo: GalleryInfo) { galleryInfo.favoriteName = null galleryInfo.favoriteSlot = -2 withUIContext { - favouriteStatusRouter.modifyFavourites(galleryInfo.gid, -2) + FavouriteStatusRouter.modifyFavourites(galleryInfo.gid, -2) } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/legacy/GalleryInfoContentHelper.kt b/app/src/main/java/com/hippo/ehviewer/ui/legacy/GalleryInfoContentHelper.kt index acef310f8..04cd8c056 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/legacy/GalleryInfoContentHelper.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/legacy/GalleryInfoContentHelper.kt @@ -18,7 +18,6 @@ package com.hippo.ehviewer.ui.legacy import android.annotation.SuppressLint import android.os.Bundle import android.os.Parcelable -import com.hippo.ehviewer.EhApplication import com.hippo.ehviewer.FavouriteStatusRouter import com.hippo.ehviewer.client.data.GalleryInfo import com.hippo.ehviewer.ui.legacy.ContentLayout.ContentHelper @@ -43,11 +42,11 @@ abstract class GalleryInfoContentHelper : ContentHelper() { info.favoriteSlot = slot } } - EhApplication.favouriteStatusRouter.addListener(listener) + FavouriteStatusRouter.addListener(listener) } fun destroy() { - EhApplication.favouriteStatusRouter.removeListener(listener) + FavouriteStatusRouter.removeListener(listener) } override fun onAddData(data: List) { @@ -66,8 +65,7 @@ abstract class GalleryInfoContentHelper : ContentHelper() { val bundle = super.saveInstanceState(superState) as Bundle // TODO It's a bad design - val router = EhApplication.favouriteStatusRouter - val id = router.saveDataMap(map) + val id = FavouriteStatusRouter.saveDataMap(map) bundle.putInt(KEY_DATA_MAP, id) return bundle } @@ -76,8 +74,7 @@ abstract class GalleryInfoContentHelper : ContentHelper() { val bundle = state as Bundle val id = bundle.getInt(KEY_DATA_MAP, IntIdGenerator.INVALID_ID) if (id != IntIdGenerator.INVALID_ID) { - val router = EhApplication.favouriteStatusRouter - router.restoreDataMap(id)?.let { this.map = it } + FavouriteStatusRouter.restoreDataMap(id)?.let { this.map = it } } return super.restoreInstanceState(state) } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt index e7e0da4dc..1aee23f11 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.kt @@ -52,7 +52,6 @@ import com.google.android.material.datepicker.DateValidatorPointBackward import com.google.android.material.datepicker.DateValidatorPointForward import com.google.android.material.datepicker.MaterialDatePicker import com.google.android.material.floatingactionbutton.FloatingActionButton -import com.hippo.ehviewer.EhApplication.Companion.favouriteStatusRouter import com.hippo.ehviewer.EhDB import com.hippo.ehviewer.FavouriteStatusRouter import com.hippo.ehviewer.R @@ -187,8 +186,6 @@ class GalleryListScene : SearchBarScene(), OnDragHandlerListener, SearchLayout.H override fun onUpdateLabels() {} } - private val mFavouriteStatusRouter: FavouriteStatusRouter = favouriteStatusRouter - @SuppressLint("NotifyDataSetChanged") private val mFavouriteStatusRouterListener: FavouriteStatusRouter.Listener = FavouriteStatusRouter.Listener { _: Long, _: Int -> @@ -225,7 +222,7 @@ class GalleryListScene : SearchBarScene(), OnDragHandlerListener, SearchLayout.H override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) mDownloadManager.addDownloadInfoListener(mDownloadInfoListener) - mFavouriteStatusRouter.addListener(mFavouriteStatusRouterListener) + FavouriteStatusRouter.addListener(mFavouriteStatusRouterListener) if (savedInstanceState == null) { onInit() } else { @@ -263,7 +260,7 @@ class GalleryListScene : SearchBarScene(), OnDragHandlerListener, SearchLayout.H override fun onDestroy() { super.onDestroy() mDownloadManager.removeDownloadInfoListener(mDownloadInfoListener) - mFavouriteStatusRouter.removeListener(mFavouriteStatusRouterListener) + FavouriteStatusRouter.removeListener(mFavouriteStatusRouterListener) } private fun setSearchBarHint() {