mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
fix: Actually make AppState singleton
This commit is contained in:
parent
1c8d546a3d
commit
4f59fbae07
8 changed files with 8 additions and 17 deletions
|
@ -31,7 +31,6 @@ import coil3.request.allowHardware
|
||||||
import coil3.request.allowRgb565
|
import coil3.request.allowRgb565
|
||||||
import coil3.request.crossfade
|
import coil3.request.crossfade
|
||||||
import coil3.util.DebugLogger
|
import coil3.util.DebugLogger
|
||||||
import dev.yokai.domain.AppState
|
|
||||||
import eu.kanade.tachiyomi.appwidget.TachiyomiWidgetManager
|
import eu.kanade.tachiyomi.appwidget.TachiyomiWidgetManager
|
||||||
import eu.kanade.tachiyomi.data.coil.CoilDiskCache
|
import eu.kanade.tachiyomi.data.coil.CoilDiskCache
|
||||||
import eu.kanade.tachiyomi.data.coil.InputStreamFetcher
|
import eu.kanade.tachiyomi.data.coil.InputStreamFetcher
|
||||||
|
@ -67,8 +66,6 @@ open class App : Application(), DefaultLifecycleObserver, SingletonImageLoader.F
|
||||||
|
|
||||||
val preferences: PreferencesHelper by injectLazy()
|
val preferences: PreferencesHelper by injectLazy()
|
||||||
|
|
||||||
val state: AppState by lazy { AppState() }
|
|
||||||
|
|
||||||
private val disableIncognitoReceiver = DisableIncognitoReceiver()
|
private val disableIncognitoReceiver = DisableIncognitoReceiver()
|
||||||
|
|
||||||
@SuppressLint("LaunchActivityFromNotification")
|
@SuppressLint("LaunchActivityFromNotification")
|
||||||
|
|
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.di
|
||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
import dev.yokai.domain.AppState
|
||||||
import dev.yokai.domain.extension.TrustExtension
|
import dev.yokai.domain.extension.TrustExtension
|
||||||
import dev.yokai.domain.storage.StorageManager
|
import dev.yokai.domain.storage.StorageManager
|
||||||
import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider
|
import eu.kanade.tachiyomi.core.storage.AndroidStorageFolderProvider
|
||||||
|
@ -64,8 +65,9 @@ class AppModule(val app: Application) : InjektModule {
|
||||||
addSingletonFactory { AndroidStorageFolderProvider(app) }
|
addSingletonFactory { AndroidStorageFolderProvider(app) }
|
||||||
addSingletonFactory { StorageManager(app, get()) }
|
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 {
|
ContextCompat.getMainExecutor(app).execute {
|
||||||
get<NetworkHelper>()
|
get<NetworkHelper>()
|
||||||
|
|
||||||
|
|
|
@ -12,12 +12,11 @@ import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||||
import androidx.interpolator.view.animation.FastOutSlowInInterpolator
|
import androidx.interpolator.view.animation.FastOutSlowInInterpolator
|
||||||
import androidx.interpolator.view.animation.LinearOutSlowInInterpolator
|
import androidx.interpolator.view.animation.LinearOutSlowInInterpolator
|
||||||
import androidx.viewbinding.ViewBinding
|
import androidx.viewbinding.ViewBinding
|
||||||
|
import dev.yokai.domain.AppState
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
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.main.SearchActivity
|
||||||
import eu.kanade.tachiyomi.ui.security.SecureActivityDelegate
|
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.dpToPx
|
||||||
import eu.kanade.tachiyomi.util.system.getThemeWithExtras
|
import eu.kanade.tachiyomi.util.system.getThemeWithExtras
|
||||||
import eu.kanade.tachiyomi.util.system.setLocaleByAppCompat
|
import eu.kanade.tachiyomi.util.system.setLocaleByAppCompat
|
||||||
|
@ -31,6 +30,7 @@ abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
|
||||||
val isBindingInitialized get() = this::binding.isInitialized
|
val isBindingInitialized get() = this::binding.isInitialized
|
||||||
|
|
||||||
private var updatedTheme: Resources.Theme? = null
|
private var updatedTheme: Resources.Theme? = null
|
||||||
|
internal val appState: AppState by injectLazy()
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
setLocaleByAppCompat()
|
setLocaleByAppCompat()
|
||||||
|
|
|
@ -94,7 +94,6 @@ import eu.kanade.tachiyomi.ui.reader.ReaderActivity
|
||||||
import eu.kanade.tachiyomi.ui.source.globalsearch.GlobalSearchController
|
import eu.kanade.tachiyomi.ui.source.globalsearch.GlobalSearchController
|
||||||
import eu.kanade.tachiyomi.util.isLocal
|
import eu.kanade.tachiyomi.util.isLocal
|
||||||
import eu.kanade.tachiyomi.util.moveCategories
|
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.contextCompatDrawable
|
||||||
import eu.kanade.tachiyomi.util.system.disableItems
|
import eu.kanade.tachiyomi.util.system.disableItems
|
||||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||||
|
@ -1130,7 +1129,7 @@ open class LibraryController(
|
||||||
emptyList()
|
emptyList()
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
view?.context?.appState?.ready = true
|
(activity as? MainActivity)?.appState?.ready = true
|
||||||
}
|
}
|
||||||
adapter.setItems(mangaMap)
|
adapter.setItems(mangaMap)
|
||||||
if (binding.libraryGridRecycler.recycler.translationX != 0f) {
|
if (binding.libraryGridRecycler.recycler.translationX != 0f) {
|
||||||
|
|
|
@ -113,7 +113,6 @@ import eu.kanade.tachiyomi.ui.source.BrowseController
|
||||||
import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController
|
import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController
|
||||||
import eu.kanade.tachiyomi.util.manga.MangaCoverMetadata
|
import eu.kanade.tachiyomi.util.manga.MangaCoverMetadata
|
||||||
import eu.kanade.tachiyomi.util.manga.MangaShortcutManager
|
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.contextCompatDrawable
|
||||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||||
|
|
|
@ -55,7 +55,6 @@ import eu.kanade.tachiyomi.ui.recents.options.TabbedRecentsOptionsSheet
|
||||||
import eu.kanade.tachiyomi.ui.source.browse.ProgressItem
|
import eu.kanade.tachiyomi.ui.source.browse.ProgressItem
|
||||||
import eu.kanade.tachiyomi.util.chapter.updateTrackChapterMarkedAsRead
|
import eu.kanade.tachiyomi.util.chapter.updateTrackChapterMarkedAsRead
|
||||||
import eu.kanade.tachiyomi.util.system.addCheckBoxPrompt
|
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.dpToPx
|
||||||
import eu.kanade.tachiyomi.util.system.getBottomGestureInsets
|
import eu.kanade.tachiyomi.util.system.getBottomGestureInsets
|
||||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||||
|
@ -172,7 +171,7 @@ class RecentsController(bundle: Bundle? = null) :
|
||||||
binding.recycler.recycledViewPool.setMaxRecycledViews(0, 0)
|
binding.recycler.recycledViewPool.setMaxRecycledViews(0, 0)
|
||||||
binding.recycler.addItemDecoration(RecentMangaDivider(view.context))
|
binding.recycler.addItemDecoration(RecentMangaDivider(view.context))
|
||||||
binding.recycler.onAnimationsFinished {
|
binding.recycler.onAnimationsFinished {
|
||||||
view.context.appState.ready = true
|
(activity as? MainActivity)?.appState?.ready = true
|
||||||
}
|
}
|
||||||
adapter.isSwipeEnabled = true
|
adapter.isSwipeEnabled = true
|
||||||
adapter.itemTouchHelperCallback.setSwipeFlags(
|
adapter.itemTouchHelperCallback.setSwipeFlags(
|
||||||
|
|
|
@ -45,7 +45,6 @@ import eu.kanade.tachiyomi.ui.setting.SettingsBrowseController
|
||||||
import eu.kanade.tachiyomi.ui.setting.SettingsSourcesController
|
import eu.kanade.tachiyomi.ui.setting.SettingsSourcesController
|
||||||
import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController
|
import eu.kanade.tachiyomi.ui.source.browse.BrowseSourceController
|
||||||
import eu.kanade.tachiyomi.ui.source.globalsearch.GlobalSearchController
|
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.dpToPx
|
||||||
import eu.kanade.tachiyomi.util.system.getBottomGestureInsets
|
import eu.kanade.tachiyomi.util.system.getBottomGestureInsets
|
||||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||||
|
@ -143,7 +142,7 @@ class BrowseController :
|
||||||
|
|
||||||
binding.sourceRecycler.adapter = adapter
|
binding.sourceRecycler.adapter = adapter
|
||||||
binding.sourceRecycler.onAnimationsFinished {
|
binding.sourceRecycler.onAnimationsFinished {
|
||||||
view.context.appState.ready = true
|
(activity as? MainActivity)?.appState?.ready = true
|
||||||
}
|
}
|
||||||
adapter?.isSwipeEnabled = true
|
adapter?.isSwipeEnabled = true
|
||||||
adapter?.stateRestorationPolicy = RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY
|
adapter?.stateRestorationPolicy = RecyclerView.Adapter.StateRestorationPolicy.PREVENT_WHEN_EMPTY
|
||||||
|
|
|
@ -37,7 +37,6 @@ import androidx.work.CoroutineWorker
|
||||||
import androidx.work.WorkInfo
|
import androidx.work.WorkInfo
|
||||||
import androidx.work.WorkManager
|
import androidx.work.WorkManager
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import dev.yokai.domain.AppState
|
|
||||||
import eu.kanade.tachiyomi.App
|
import eu.kanade.tachiyomi.App
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
|
@ -481,8 +480,5 @@ val Context.systemLangContext: Context
|
||||||
val Context.application: App
|
val Context.application: App
|
||||||
get() = applicationContext as App
|
get() = applicationContext as App
|
||||||
|
|
||||||
val Context.appState: AppState
|
|
||||||
get() = application.state
|
|
||||||
|
|
||||||
suspend fun <T> withNonCancellableContext(block: suspend CoroutineScope.() -> T) =
|
suspend fun <T> withNonCancellableContext(block: suspend CoroutineScope.() -> T) =
|
||||||
withContext(NonCancellable, block)
|
withContext(NonCancellable, block)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue