From b405e5a484b4cf7e169fc9c91278fdc953d54925 Mon Sep 17 00:00:00 2001 From: Shuvo Date: Sun, 24 Nov 2024 21:22:51 +0600 Subject: [PATCH] Exception handling for when reading datastore. --- .../core/datastore/NiaPreferencesDataSource.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/datastore/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/NiaPreferencesDataSource.kt b/core/datastore/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/NiaPreferencesDataSource.kt index 9a76a75a1..5cc237ff7 100644 --- a/core/datastore/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/NiaPreferencesDataSource.kt +++ b/core/datastore/src/main/kotlin/com/google/samples/apps/nowinandroid/core/datastore/NiaPreferencesDataSource.kt @@ -21,6 +21,7 @@ import androidx.datastore.core.DataStore import com.google.samples.apps.nowinandroid.core.model.data.DarkThemeConfig import com.google.samples.apps.nowinandroid.core.model.data.ThemeBrand import com.google.samples.apps.nowinandroid.core.model.data.UserData +import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.flow.map import java.io.IOException @@ -30,6 +31,14 @@ class NiaPreferencesDataSource @Inject constructor( private val userPreferences: DataStore, ) { val userData = userPreferences.data + .catch { exception -> + if (exception is IOException) { + Log.e("NiaPreferences", "Error reading user preferences.", exception) + emit(UserPreferences.getDefaultInstance()) + } else { + throw exception + } + } .map { UserData( bookmarkedNewsResources = it.bookmarkedNewsResourceIdsMap.keys,