diff --git a/composeApp/src/androidMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsStorage.android.kt b/composeApp/src/androidMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsStorage.android.kt
index 45e63d432..2d77ab611 100644
--- a/composeApp/src/androidMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsStorage.android.kt
+++ b/composeApp/src/androidMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsStorage.android.kt
@@ -22,6 +22,7 @@ actual object MdbListSettingsStorage {
private const val useTraktKey = "mdblist_use_trakt"
private const val useLetterboxdKey = "mdblist_use_letterboxd"
private const val useAudienceKey = "mdblist_use_audience"
+ private const val useMalKey = "mdblist_use_mal"
private val syncKeys = listOf(
enabledKey,
apiKey,
@@ -32,6 +33,7 @@ actual object MdbListSettingsStorage {
useTraktKey,
useLetterboxdKey,
useAudienceKey,
+ useMalKey,
)
private var preferences: SharedPreferences? = null
@@ -98,6 +100,12 @@ actual object MdbListSettingsStorage {
saveBoolean(useAudienceKey, enabled)
}
+ actual fun loadUseMal(): Boolean? = loadBoolean(useMalKey)
+
+ actual fun saveUseMal(enabled: Boolean) {
+ saveBoolean(useMalKey, enabled)
+ }
+
private fun loadBoolean(key: String): Boolean? =
preferences?.let { sharedPreferences ->
val scopedKey = ProfileScopedKey.of(key)
@@ -125,6 +133,7 @@ actual object MdbListSettingsStorage {
loadUseTrakt()?.let { put(useTraktKey, encodeSyncBoolean(it)) }
loadUseLetterboxd()?.let { put(useLetterboxdKey, encodeSyncBoolean(it)) }
loadUseAudience()?.let { put(useAudienceKey, encodeSyncBoolean(it)) }
+ loadUseMal()?.let { put(useMalKey, encodeSyncBoolean(it)) }
}
actual fun replaceFromSyncPayload(payload: JsonObject) {
@@ -141,5 +150,6 @@ actual object MdbListSettingsStorage {
payload.decodeSyncBoolean(useTraktKey)?.let(::saveUseTrakt)
payload.decodeSyncBoolean(useLetterboxdKey)?.let(::saveUseLetterboxd)
payload.decodeSyncBoolean(useAudienceKey)?.let(::saveUseAudience)
+ payload.decodeSyncBoolean(useMalKey)?.let(::saveUseMal)
}
}
diff --git a/composeApp/src/commonMain/composeResources/values/strings.xml b/composeApp/src/commonMain/composeResources/values/strings.xml
index eafc76341..4a7626a7d 100644
--- a/composeApp/src/commonMain/composeResources/values/strings.xml
+++ b/composeApp/src/commonMain/composeResources/values/strings.xml
@@ -1144,6 +1144,7 @@
Rotten Tomatoes
TMDB
Trakt
+ MyAnimeList
Unknown
Amber
Crimson
diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListMetadataService.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListMetadataService.kt
index b1ca1c1e1..1316e3720 100644
--- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListMetadataService.kt
+++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListMetadataService.kt
@@ -23,6 +23,7 @@ object MdbListMetadataService {
const val PROVIDER_TRAKT = "trakt"
const val PROVIDER_LETTERBOXD = "letterboxd"
const val PROVIDER_AUDIENCE = "audience"
+ const val PROVIDER_MAL = "mal"
val PROVIDER_PRIORITY_ORDER = listOf(
PROVIDER_IMDB,
@@ -32,6 +33,7 @@ object MdbListMetadataService {
PROVIDER_TRAKT,
PROVIDER_LETTERBOXD,
PROVIDER_AUDIENCE,
+ PROVIDER_MAL,
)
private val log = Logger.withTag("MdbListMetadata")
diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettings.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettings.kt
index e9002303e..31435d398 100644
--- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettings.kt
+++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettings.kt
@@ -10,6 +10,7 @@ data class MdbListSettings(
val useTrakt: Boolean = true,
val useLetterboxd: Boolean = true,
val useAudience: Boolean = true,
+ val useMal: Boolean = true,
) {
val hasApiKey: Boolean
get() = apiKey.isNotBlank()
@@ -23,6 +24,7 @@ data class MdbListSettings(
MdbListMetadataService.PROVIDER_TRAKT -> useTrakt
MdbListMetadataService.PROVIDER_LETTERBOXD -> useLetterboxd
MdbListMetadataService.PROVIDER_AUDIENCE -> useAudience
+ MdbListMetadataService.PROVIDER_MAL -> useMal
else -> false
}
diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsRepository.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsRepository.kt
index 6f48eb800..4a7f44e27 100644
--- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsRepository.kt
+++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsRepository.kt
@@ -19,6 +19,7 @@ object MdbListSettingsRepository {
private var useTrakt = true
private var useLetterboxd = true
private var useAudience = true
+ private var useMal = true
fun ensureLoaded() {
if (hasLoaded) return
@@ -88,6 +89,10 @@ object MdbListSettingsRepository {
useAudience = value
MdbListSettingsStorage.saveUseAudience(value)
} else return
+ MdbListMetadataService.PROVIDER_MAL -> if (useMal != value) {
+ useMal = value
+ MdbListSettingsStorage.saveUseMal(value)
+ } else return
else -> return
}
publish()
@@ -105,6 +110,7 @@ object MdbListSettingsRepository {
useTrakt = MdbListSettingsStorage.loadUseTrakt() ?: true
useLetterboxd = MdbListSettingsStorage.loadUseLetterboxd() ?: true
useAudience = MdbListSettingsStorage.loadUseAudience() ?: true
+ useMal = MdbListSettingsStorage.loadUseMal() ?: true
publish()
}
@@ -119,6 +125,7 @@ object MdbListSettingsRepository {
useTrakt = useTrakt,
useLetterboxd = useLetterboxd,
useAudience = useAudience,
+ useMal = useMal,
)
}
}
diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsStorage.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsStorage.kt
index c1a6f51e1..ff9cd57fd 100644
--- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsStorage.kt
+++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsStorage.kt
@@ -21,6 +21,8 @@ internal expect object MdbListSettingsStorage {
fun saveUseLetterboxd(enabled: Boolean)
fun loadUseAudience(): Boolean?
fun saveUseAudience(enabled: Boolean)
+ fun loadUseMal(): Boolean?
+ fun saveUseMal(enabled: Boolean)
fun exportToSyncPayload(): JsonObject
fun replaceFromSyncPayload(payload: JsonObject)
}
diff --git a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/MdbListSettingsPage.kt b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/MdbListSettingsPage.kt
index 3a7a2c40a..e56d1a0b3 100644
--- a/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/MdbListSettingsPage.kt
+++ b/composeApp/src/commonMain/kotlin/com/nuvio/app/features/settings/MdbListSettingsPage.kt
@@ -117,6 +117,7 @@ private fun ProviderRows(
MdbListMetadataService.PROVIDER_TRAKT to Res.string.source_trakt,
MdbListMetadataService.PROVIDER_LETTERBOXD to Res.string.source_letterboxd,
MdbListMetadataService.PROVIDER_AUDIENCE to Res.string.source_audience_score,
+ MdbListMetadataService.PROVIDER_MAL to Res.string.source_mal,
)
providers.forEachIndexed { index, (providerId, providerLabelRes) ->
diff --git a/composeApp/src/iosMain/kotlin/com/nuvio/app/core/storage/PlatformLocalAccountDataCleaner.ios.kt b/composeApp/src/iosMain/kotlin/com/nuvio/app/core/storage/PlatformLocalAccountDataCleaner.ios.kt
index c9a439664..b6c5373fb 100644
--- a/composeApp/src/iosMain/kotlin/com/nuvio/app/core/storage/PlatformLocalAccountDataCleaner.ios.kt
+++ b/composeApp/src/iosMain/kotlin/com/nuvio/app/core/storage/PlatformLocalAccountDataCleaner.ios.kt
@@ -51,6 +51,7 @@ internal actual object PlatformLocalAccountDataCleaner {
"mdblist_use_trakt",
"mdblist_use_letterboxd",
"mdblist_use_audience",
+ "mdblist_use_mal",
"trakt_auth_payload",
"trakt_library_payload",
"trakt_settings_payload",
diff --git a/composeApp/src/iosMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsStorage.ios.kt b/composeApp/src/iosMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsStorage.ios.kt
index d05e79f14..3c4297207 100644
--- a/composeApp/src/iosMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsStorage.ios.kt
+++ b/composeApp/src/iosMain/kotlin/com/nuvio/app/features/mdblist/MdbListSettingsStorage.ios.kt
@@ -20,6 +20,7 @@ actual object MdbListSettingsStorage {
private const val useTraktKey = "mdblist_use_trakt"
private const val useLetterboxdKey = "mdblist_use_letterboxd"
private const val useAudienceKey = "mdblist_use_audience"
+ private const val useMalKey = "mdblist_use_mal"
private val syncKeys = listOf(
enabledKey,
apiKey,
@@ -30,6 +31,7 @@ actual object MdbListSettingsStorage {
useTraktKey,
useLetterboxdKey,
useAudienceKey,
+ useMalKey,
)
actual fun loadEnabled(): Boolean? = loadBoolean(enabledKey)
@@ -87,6 +89,12 @@ actual object MdbListSettingsStorage {
saveBoolean(useAudienceKey, enabled)
}
+ actual fun loadUseMal(): Boolean? = loadBoolean(useMalKey)
+
+ actual fun saveUseMal(enabled: Boolean) {
+ saveBoolean(useMalKey, enabled)
+ }
+
private fun loadBoolean(key: String): Boolean? {
val defaults = NSUserDefaults.standardUserDefaults
val scopedKey = ProfileScopedKey.of(key)
@@ -111,6 +119,7 @@ actual object MdbListSettingsStorage {
loadUseTrakt()?.let { put(useTraktKey, encodeSyncBoolean(it)) }
loadUseLetterboxd()?.let { put(useLetterboxdKey, encodeSyncBoolean(it)) }
loadUseAudience()?.let { put(useAudienceKey, encodeSyncBoolean(it)) }
+ loadUseMal()?.let { put(useMalKey, encodeSyncBoolean(it)) }
}
actual fun replaceFromSyncPayload(payload: JsonObject) {
@@ -127,5 +136,6 @@ actual object MdbListSettingsStorage {
payload.decodeSyncBoolean(useTraktKey)?.let(::saveUseTrakt)
payload.decodeSyncBoolean(useLetterboxdKey)?.let(::saveUseLetterboxd)
payload.decodeSyncBoolean(useAudienceKey)?.let(::saveUseAudience)
+ payload.decodeSyncBoolean(useMalKey)?.let(::saveUseMal)
}
}