|
17 | 17 | package com.google.firebase.sessions.settings |
18 | 18 |
|
19 | 19 | import android.content.Context |
| 20 | +import android.util.Log |
20 | 21 | import androidx.datastore.core.DataStore |
| 22 | +import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler |
21 | 23 | import androidx.datastore.preferences.core.Preferences |
| 24 | +import androidx.datastore.preferences.core.emptyPreferences |
22 | 25 | import androidx.datastore.preferences.preferencesDataStore |
23 | 26 | import com.google.firebase.Firebase |
24 | 27 | import com.google.firebase.FirebaseApp |
25 | 28 | import com.google.firebase.app |
26 | 29 | import com.google.firebase.installations.FirebaseInstallationsApi |
27 | 30 | import com.google.firebase.sessions.ApplicationInfo |
| 31 | +import com.google.firebase.sessions.ProcessDetailsProvider.getProcessName |
28 | 32 | import com.google.firebase.sessions.SessionDataStoreConfigs |
29 | 33 | import com.google.firebase.sessions.SessionEvents |
30 | 34 | import kotlin.coroutines.CoroutineContext |
@@ -136,10 +140,19 @@ internal class SessionsSettings( |
136 | 140 | } |
137 | 141 |
|
138 | 142 | internal companion object { |
| 143 | + private const val TAG = "SessionsSettings" |
| 144 | + |
139 | 145 | val instance: SessionsSettings |
140 | 146 | get() = Firebase.app[SessionsSettings::class.java] |
141 | 147 |
|
142 | 148 | private val Context.dataStore: DataStore<Preferences> by |
143 | | - preferencesDataStore(name = SessionDataStoreConfigs.SETTINGS_CONFIG_NAME) |
| 149 | + preferencesDataStore( |
| 150 | + name = SessionDataStoreConfigs.SETTINGS_CONFIG_NAME, |
| 151 | + corruptionHandler = |
| 152 | + ReplaceFileCorruptionHandler { ex -> |
| 153 | + Log.w(TAG, "CorruptionException in settings DataStore in ${getProcessName()}.", ex) |
| 154 | + emptyPreferences() |
| 155 | + }, |
| 156 | + ) |
144 | 157 | } |
145 | 158 | } |
0 commit comments