fix: Actually make AppState singleton

This commit is contained in:
Ahmad Ansori Palembani 2024-05-28 12:04:04 +07:00
parent 1c8d546a3d
commit 4f59fbae07
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
8 changed files with 8 additions and 17 deletions

View file

@ -31,7 +31,6 @@ import coil3.request.allowHardware
import coil3.request.allowRgb565
import coil3.request.crossfade
import coil3.util.DebugLogger
import dev.yokai.domain.AppState
import eu.kanade.tachiyomi.appwidget.TachiyomiWidgetManager
import eu.kanade.tachiyomi.data.coil.CoilDiskCache
import eu.kanade.tachiyomi.data.coil.InputStreamFetcher
@ -67,8 +66,6 @@ open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.F
val preferences: PreferencesHelper by injectLazy()
val state: AppState by lazy { AppState() }
private val disableIncognitoReceiver = DisableIncognitoReceiver()
@SuppressLint("LaunchActivityFromNotification")

View file

@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.di
import android.app.Application
import androidx.core.content.ContextCompat
import dev.yokai.domain.AppState
import dev.yokai.domain.extension.TrustExtension
import dev.yokai.domain.storage.StorageManager
import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider
@ -64,8 +65,9 @@ class AppModule(val app: Application) : InjektModule {
addSingletonFactory { AndroidStorageFolderProvider(app) }
addSingletonFactory { StorageManager(app, get()) }
// Asynchronously init expensive components for a faster cold start
addSingletonFactory { AppState() }
// Asynchronously init expensive components for a faster cold start
ContextCompat.getMainExecutor(app).execute {
get<NetworkHelper>()

View file

@ -12,12 +12,11 @@ import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
import androidx.interpolator.view.animation.FastOutSlowInInterpolator
import androidx.interpolator.view.animation.LinearOutSlowInInterpolator
import androidx.viewbinding.ViewBinding
import dev.yokai.domain.AppState
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.main.SearchActivity
import eu.kanade.tachiyomi.ui.security.SecureActivityDelegate
import eu.kanade.tachiyomi.util.system.appState
import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.system.getThemeWithExtras
import eu.kanade.tachiyomi.util.system.setLocaleByAppCompat
@ -31,6 +30,7 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
val isBindingInitialized get() = this::binding.isInitialized
private var updatedTheme: Resources.Theme? = null
internal val appState: AppState by injectLazy()
override fun onCreate(savedInstanceState: Bundle?) {
setLocaleByAppCompat()

View file

@ -94,7 +94,6 @@ import eu.kanade.tachiyomi.ui.reader.ReaderActivity
import eu.kanade.tachiyomi.ui.source.globalsearch.GlobalSearchController
import eu.kanade.tachiyomi.util.isLocal
import eu.kanade.tachiyomi.util.moveCategories
import eu.kanade.tachiyomi.util.system.appState
import eu.kanade.tachiyomi.util.system.contextCompatDrawable
import eu.kanade.tachiyomi.util.system.disableItems
import eu.kanade.tachiyomi.util.system.dpToPx
@ -1130,7 +1129,7 @@ open class LibraryController(
emptyList()
},
)
view?.context?.appState?.ready = true
(activity as? MainActivity)?.appState?.ready = true
}
adapter.setItems(mangaMap)
if (binding.libraryGridRecycler.recycler.translationX != 0f) {

View file

@ -113,7 +113,6 @@ import eu.kanade.tachiyomi.ui.source.BrowseController
import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController
import eu.kanade.tachiyomi.util.manga.MangaCoverMetadata
import eu.kanade.tachiyomi.util.manga.MangaShortcutManager
import eu.kanade.tachiyomi.util.system.appState
import eu.kanade.tachiyomi.util.system.contextCompatDrawable
import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.system.getResourceColor

View file

@ -55,7 +55,6 @@ import eu.kanade.tachiyomi.ui.recents.options.TabbedRecentsOptionsSheet
import eu.kanade.tachiyomi.ui.source.browse.ProgressItem
import eu.kanade.tachiyomi.util.chapter.updateTrackChapterMarkedAsRead
import eu.kanade.tachiyomi.util.system.addCheckBoxPrompt
import eu.kanade.tachiyomi.util.system.appState
import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.system.getBottomGestureInsets
import eu.kanade.tachiyomi.util.system.getResourceColor
@ -172,7 +171,7 @@ class RecentsController(bundle: Bundle? = null) :
binding.recycler.recycledViewPool.setMaxRecycledViews(0, 0)
binding.recycler.addItemDecoration(RecentMangaDivider(view.context))
binding.recycler.onAnimationsFinished {
view.context.appState.ready = true
(activity as? MainActivity)?.appState?.ready = true
}
adapter.isSwipeEnabled = true
adapter.itemTouchHelperCallback.setSwipeFlags(

View file

@ -45,7 +45,6 @@ import eu.kanade.tachiyomi.ui.setting.SettingsBrowseController
import eu.kanade.tachiyomi.ui.setting.SettingsSourcesController
import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController
import eu.kanade.tachiyomi.ui.source.globalsearch.GlobalSearchController
import eu.kanade.tachiyomi.util.system.appState
import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.system.getBottomGestureInsets
import eu.kanade.tachiyomi.util.system.getResourceColor
@ -143,7 +142,7 @@ class BrowseController :
binding.sourceRecycler.adapter = adapter
binding.sourceRecycler.onAnimationsFinished {
view.context.appState.ready = true
(activity as? MainActivity)?.appState?.ready = true
}
adapter?.isSwipeEnabled = true
adapter?.stateRestorationPolicy = RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY

View file

@ -37,7 +37,6 @@ import androidx.work.CoroutineWorker
import androidx.work.WorkInfo
import androidx.work.WorkManager
import com.hippo.unifile.UniFile
import dev.yokai.domain.AppState
import eu.kanade.tachiyomi.App
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
@ -481,8 +480,5 @@ val Context.systemLangContext: Context
val Context.application: App
get() = applicationContext as App
val Context.appState: AppState
get() = application.state
suspend fun <T> withNonCancellableContext(block: suspend CoroutineScope.() -> T) =
withContext(NonCancellable, block)