Failsafe implementation of MangaSource.valueOf
This commit is contained in:
@@ -1,10 +1,18 @@
|
|||||||
package org.koitharu.kotatsu.core.model
|
package org.koitharu.kotatsu.core.model
|
||||||
|
|
||||||
|
import java.util.*
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
import org.koitharu.kotatsu.parsers.model.MangaSource
|
||||||
import org.koitharu.kotatsu.parsers.util.toTitleCase
|
import org.koitharu.kotatsu.parsers.util.toTitleCase
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
fun MangaSource.getLocaleTitle(): String? {
|
fun MangaSource.getLocaleTitle(): String? {
|
||||||
val lc = Locale(locale ?: return null)
|
val lc = Locale(locale ?: return null)
|
||||||
return lc.getDisplayLanguage(lc).toTitleCase(lc)
|
return lc.getDisplayLanguage(lc).toTitleCase(lc)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("FunctionName")
|
||||||
|
fun MangaSource(name: String): MangaSource? {
|
||||||
|
MangaSource.values().forEach {
|
||||||
|
if (it.name == name) return it
|
||||||
|
}
|
||||||
|
return null
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@ import coil.map.Mapper
|
|||||||
import coil.request.Options
|
import coil.request.Options
|
||||||
import okhttp3.HttpUrl
|
import okhttp3.HttpUrl
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
import okhttp3.HttpUrl.Companion.toHttpUrl
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
import org.koitharu.kotatsu.core.model.MangaSource
|
||||||
|
|
||||||
class FaviconMapper : Mapper<Uri, HttpUrl> {
|
class FaviconMapper : Mapper<Uri, HttpUrl> {
|
||||||
|
|
||||||
@@ -13,7 +13,7 @@ class FaviconMapper : Mapper<Uri, HttpUrl> {
|
|||||||
if (data.scheme != "favicon") {
|
if (data.scheme != "favicon") {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
val mangaSource = MangaSource.valueOf(data.schemeSpecificPart)
|
val mangaSource = MangaSource(data.schemeSpecificPart) ?: return null
|
||||||
val repo = MangaRepository(mangaSource) as RemoteMangaRepository
|
val repo = MangaRepository(mangaSource) as RemoteMangaRepository
|
||||||
return repo.getFaviconUrl().toHttpUrl()
|
return repo.getFaviconUrl().toHttpUrl()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,15 +3,16 @@ package org.koitharu.kotatsu.settings.onboard
|
|||||||
import androidx.collection.ArraySet
|
import androidx.collection.ArraySet
|
||||||
import androidx.core.os.LocaleListCompat
|
import androidx.core.os.LocaleListCompat
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
|
import java.util.*
|
||||||
import org.koitharu.kotatsu.base.ui.BaseViewModel
|
import org.koitharu.kotatsu.base.ui.BaseViewModel
|
||||||
|
import org.koitharu.kotatsu.core.model.MangaSource
|
||||||
import org.koitharu.kotatsu.core.prefs.AppSettings
|
import org.koitharu.kotatsu.core.prefs.AppSettings
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaSource
|
import org.koitharu.kotatsu.parsers.util.mapNotNullToSet
|
||||||
import org.koitharu.kotatsu.parsers.util.mapToSet
|
import org.koitharu.kotatsu.parsers.util.mapToSet
|
||||||
import org.koitharu.kotatsu.parsers.util.toTitleCase
|
import org.koitharu.kotatsu.parsers.util.toTitleCase
|
||||||
import org.koitharu.kotatsu.settings.onboard.model.SourceLocale
|
import org.koitharu.kotatsu.settings.onboard.model.SourceLocale
|
||||||
import org.koitharu.kotatsu.utils.ext.map
|
import org.koitharu.kotatsu.utils.ext.map
|
||||||
import org.koitharu.kotatsu.utils.ext.mapToSet
|
import org.koitharu.kotatsu.utils.ext.mapToSet
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
class OnboardViewModel(
|
class OnboardViewModel(
|
||||||
private val settings: AppSettings,
|
private val settings: AppSettings,
|
||||||
@@ -27,7 +28,7 @@ class OnboardViewModel(
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
if (settings.isSourcesSelected) {
|
if (settings.isSourcesSelected) {
|
||||||
selectedLocales.removeAll(settings.hiddenSources.mapToSet { x -> MangaSource.valueOf(x).locale })
|
selectedLocales.removeAll(settings.hiddenSources.mapNotNullToSet { x -> MangaSource(x)?.locale })
|
||||||
} else {
|
} else {
|
||||||
val deviceLocales = LocaleListCompat.getDefault().mapToSet { x ->
|
val deviceLocales = LocaleListCompat.getDefault().mapToSet { x ->
|
||||||
x.language
|
x.language
|
||||||
@@ -66,7 +67,7 @@ class OnboardViewModel(
|
|||||||
SourceLocale(
|
SourceLocale(
|
||||||
key = key,
|
key = key,
|
||||||
title = locale?.getDisplayLanguage(locale)?.toTitleCase(locale),
|
title = locale?.getDisplayLanguage(locale)?.toTitleCase(locale),
|
||||||
isChecked = key in selectedLocales
|
isChecked = key in selectedLocales,
|
||||||
)
|
)
|
||||||
}.sortedWith(SourceLocaleComparator())
|
}.sortedWith(SourceLocaleComparator())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user