From 3aa5c4b9266f76a94b02c134f4b2ab81e75b7b37 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 6 Dec 2023 10:48:36 +0300 Subject: [PATCH 1/2] Updated on 2026-08-14 --- .../local/preferences/utils/AppPreferencesStoreExt.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/utils/AppPreferencesStoreExt.kt b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/utils/AppPreferencesStoreExt.kt index 974b36147a..862962e88d 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/utils/AppPreferencesStoreExt.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/utils/AppPreferencesStoreExt.kt @@ -2,6 +2,7 @@ package com.tangem.datasource.local.preferences.utils import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.edit +import com.squareup.moshi.JsonDataException import com.squareup.moshi.Types import com.tangem.datasource.local.preferences.AppPreferencesStore import kotlinx.coroutines.flow.Flow @@ -23,7 +24,13 @@ inline fun AppPreferencesStore.getObject(key: Preferences.Key AppPreferencesStore.getObject(key: Preferences.Key, default: T): Flow { val adapter = moshi.adapter(T::class.java) // TODO: Support parameterized types - return data.map { it[key]?.let(adapter::fromJson) ?: default } + return data.map { + try { + it[key]?.let(adapter::fromJson) ?: default + } catch (e: JsonDataException) { + default + } + } } /** From 3558e81bde77716c672a971b04caae5950d6cad2 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 6 Dec 2023 11:39:05 +0300 Subject: [PATCH 2/2] Updated on 2026-08-14 --- .../utils/AppPreferencesStoreExt.kt | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/utils/AppPreferencesStoreExt.kt b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/utils/AppPreferencesStoreExt.kt index 862962e88d..5622eb2351 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/preferences/utils/AppPreferencesStoreExt.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/preferences/utils/AppPreferencesStoreExt.kt @@ -12,7 +12,15 @@ import kotlinx.coroutines.flow.map /** Get flow of nullable data [T] by string [key] */ inline fun AppPreferencesStore.getObject(key: Preferences.Key): Flow { val adapter = moshi.adapter(T::class.java) - return data.map { it[key]?.let(adapter::fromJson) } + return data.map { preferences -> + preferences[key]?.let { + try { + adapter.fromJson(it) + } catch (e: JsonDataException) { + null + } + } + } } /** @@ -44,7 +52,13 @@ suspend inline fun AppPreferencesStore.getObjectSyncOrNull(key: Pref val adapter = moshi.adapter(T::class.java) // TODO: Support parameterized types return data.firstOrNull() ?.get(key) - ?.let(adapter::fromJson) + ?.let { + try { + adapter.fromJson(it) + } catch (e: JsonDataException) { + null + } + } } /** Get data [T] by string [key]. If data is not found, it returns [default] */ @@ -55,7 +69,13 @@ suspend inline fun AppPreferencesStore.getObjectSyncOrDefault( val adapter = moshi.adapter(T::class.java) return data.firstOrNull() ?.get(key) - ?.let(adapter::fromJson) + ?.let { + try { + adapter.fromJson(it) + } catch (e: JsonDataException) { + default + } + } ?: default }