Recreate icon repository on activity recreation

This commit is contained in:
MM20 2022-01-29 17:14:54 +01:00
parent dcb315baec
commit 8f5e920d4e
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389
3 changed files with 37 additions and 31 deletions

View File

@ -7,7 +7,7 @@ import android.content.IntentFilter
import android.util.LruCache
import de.mm20.launcher2.icons.providers.*
import de.mm20.launcher2.preferences.LauncherDataStore
import de.mm20.launcher2.preferences.LauncherPreferences
import de.mm20.launcher2.preferences.Settings
import de.mm20.launcher2.search.data.Searchable
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
@ -45,28 +45,7 @@ class IconRepository(
scope.launch {
dataStore.data.map { it.icons }.distinctUntilChanged().collectLatest {
val placeholderProvider = if (it.themedIcons) {
ThemedPlaceholderIconProvider(context)
} else {
PlaceholderIconProvider(context)
}
val providers = mutableListOf<IconProvider>()
if (it.themedIcons) {
providers.add(ThemedIconProvider(context))
}
if (it.iconPack.isNotBlank()) {
providers.add(IconPackIconProvider(context, it.iconPack, it.legacyIconBg))
}
providers.add(GoogleClockIconProvider(context))
providers.add(CalendarIconProvider(context))
providers.add(SystemIconProvider(context, it.legacyIconBg))
providers.add(placeholderProvider)
cache.evictAll()
this@IconRepository.placeholderProvider = placeholderProvider
iconProviders.value = providers
recreate(it)
}
}
}
@ -120,4 +99,35 @@ class IconRepository(
suspend fun getInstalledIconPacks(): List<IconPack> {
return iconPackManager.getInstalledIconPacks()
}
fun recreate() {
scope.launch {
recreate(dataStore.data.map { it.icons }.first())
}
}
private fun recreate(settings: Settings.IconSettings) {
val placeholderProvider = if (settings.themedIcons) {
ThemedPlaceholderIconProvider(context)
} else {
PlaceholderIconProvider(context)
}
val providers = mutableListOf<IconProvider>()
if (settings.themedIcons) {
providers.add(ThemedIconProvider(context))
}
if (settings.iconPack.isNotBlank()) {
providers.add(IconPackIconProvider(context, settings.iconPack, settings.legacyIconBg))
}
providers.add(GoogleClockIconProvider(context))
providers.add(CalendarIconProvider(context))
providers.add(SystemIconProvider(context, settings.legacyIconBg))
providers.add(placeholderProvider)
cache.evictAll()
this@IconRepository.placeholderProvider = placeholderProvider
iconProviders.value = providers
}
}

View File

@ -24,6 +24,7 @@ import de.mm20.launcher2.ui.launcher.modals.EditFavoritesView
import de.mm20.launcher2.ui.launcher.modals.HiddenItemsView
import kotlinx.coroutines.*
import org.koin.android.ext.android.inject
import org.koin.core.component.inject
import java.util.*
@ -36,6 +37,9 @@ class LauncherActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val iconRepository: IconRepository by inject()
iconRepository.recreate()
WindowCompat.setDecorFitsSystemWindows(window, false)
viewModel.setDarkMode(resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES)

View File

@ -3,12 +3,10 @@ package de.mm20.launcher2.ui.launcher
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
import androidx.lifecycle.viewModelScope
import de.mm20.launcher2.preferences.LauncherDataStore
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
import org.koin.core.component.KoinComponent
import org.koin.core.component.inject
@ -27,12 +25,6 @@ class LauncherActivityVM : ViewModel(), KoinComponent {
dim && darkMode
}.asLiveData()
init {
viewModelScope.launch {
}
}
fun setDarkMode(darkMode: Boolean) {
isDarkInMode.value = darkMode
}