Fix crashes

This commit is contained in:
Koitharu
2023-06-14 10:49:33 +03:00
parent cd23b044df
commit d81c22b586
14 changed files with 115 additions and 42 deletions

View File

@@ -9,6 +9,7 @@ import androidx.fragment.app.viewModels
import coil.ImageLoader
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.filterNotNull
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.ui.AlertDialogFragment
import org.koitharu.kotatsu.core.util.ext.observe
@@ -38,7 +39,8 @@ class NewSourcesDialogFragment :
binding.recyclerView.adapter = adapter
binding.textViewTitle.setText(R.string.new_sources_text)
viewModel.sources.observe(viewLifecycleOwner) { adapter.items = it }
viewModel.sources.filterNotNull()
.observe(viewLifecycleOwner) { adapter.items = it }
}
override fun onBuildDialog(builder: MaterialAlertDialogBuilder): MaterialAlertDialogBuilder {

View File

@@ -1,7 +1,9 @@
package org.koitharu.kotatsu.settings.newsources
import androidx.annotation.WorkerThread
import androidx.core.os.LocaleListCompat
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import org.koitharu.kotatsu.core.model.getLocaleTitle
import org.koitharu.kotatsu.core.prefs.AppSettings
@@ -15,8 +17,14 @@ class NewSourcesViewModel @Inject constructor(
private val settings: AppSettings,
) : BaseViewModel() {
val sources = MutableStateFlow<List<SourceConfigItem>>(buildList())
private val initialList = settings.newSources
val sources = MutableStateFlow<List<SourceConfigItem>?>(null)
init {
launchJob(Dispatchers.Default) {
sources.value = buildList()
}
}
fun onItemEnabledChanged(item: SourceConfigItem.SourceItem, isEnabled: Boolean) {
if (isEnabled) {
@@ -30,6 +38,7 @@ class NewSourcesViewModel @Inject constructor(
settings.markKnownSources(initialList)
}
@WorkerThread
private fun buildList(): List<SourceConfigItem.SourceItem> {
val locales = LocaleListCompat.getDefault().mapToSet { it.language }
val pendingHidden = HashSet<String>()