Use no-op snapshot store in restorers (2/2).
When the revamped UI flag is off, the undo system doesn't start a
session, which means it doesn't hand a "store" to its restorers. By
having all restorers start off with a safe-to-use no-op store, we
circumvent a lot of crashes.
Fix: 272157475
Fix: 271967027
Test: manually verified that the crashes no longer occur with the flag
on or off and that the undo system (reset button) still works.
Change-Id: I0a6e709d569ace7b2e8468e3f4810ae4f67a3b7d
diff --git a/src/com/android/customization/model/grid/domain/interactor/GridSnapshotRestorer.kt b/src/com/android/customization/model/grid/domain/interactor/GridSnapshotRestorer.kt
index 5e0fe7a..19d4c77 100644
--- a/src/com/android/customization/model/grid/domain/interactor/GridSnapshotRestorer.kt
+++ b/src/com/android/customization/model/grid/domain/interactor/GridSnapshotRestorer.kt
@@ -27,7 +27,7 @@
private val interactor: GridInteractor,
) : SnapshotRestorer {
- private lateinit var store: SnapshotStore
+ private var store: SnapshotStore = SnapshotStore.NOOP
private var originalOption: GridOptionItemModel? = null
override suspend fun setUpSnapshotRestorer(store: SnapshotStore): RestorableSnapshot {
diff --git a/src/com/android/customization/model/mode/DarkModeSnapshotRestorer.kt b/src/com/android/customization/model/mode/DarkModeSnapshotRestorer.kt
index aa8d97c..93bd0bf 100644
--- a/src/com/android/customization/model/mode/DarkModeSnapshotRestorer.kt
+++ b/src/com/android/customization/model/mode/DarkModeSnapshotRestorer.kt
@@ -33,7 +33,7 @@
private val isActive: () -> Boolean
private val setActive: suspend (Boolean) -> Unit
- private lateinit var store: SnapshotStore
+ private var store: SnapshotStore = SnapshotStore.NOOP
constructor(
context: Context,
diff --git a/src/com/android/customization/model/themedicon/domain/interactor/ThemedIconSnapshotRestorer.kt b/src/com/android/customization/model/themedicon/domain/interactor/ThemedIconSnapshotRestorer.kt
index 639a92d..cacc45e 100644
--- a/src/com/android/customization/model/themedicon/domain/interactor/ThemedIconSnapshotRestorer.kt
+++ b/src/com/android/customization/model/themedicon/domain/interactor/ThemedIconSnapshotRestorer.kt
@@ -27,7 +27,7 @@
private val interactor: ThemedIconInteractor,
) : SnapshotRestorer {
- private lateinit var store: SnapshotStore
+ private var store: SnapshotStore = SnapshotStore.NOOP
override suspend fun setUpSnapshotRestorer(store: SnapshotStore): RestorableSnapshot {
this.store = store
diff --git a/src/com/android/customization/picker/color/domain/interactor/ColorPickerSnapshotRestorer.kt b/src/com/android/customization/picker/color/domain/interactor/ColorPickerSnapshotRestorer.kt
index d952b4c..dce59eb 100644
--- a/src/com/android/customization/picker/color/domain/interactor/ColorPickerSnapshotRestorer.kt
+++ b/src/com/android/customization/picker/color/domain/interactor/ColorPickerSnapshotRestorer.kt
@@ -28,7 +28,7 @@
private val interactor: ColorPickerInteractor,
) : SnapshotRestorer {
- private lateinit var snapshotStore: SnapshotStore
+ private var snapshotStore: SnapshotStore = SnapshotStore.NOOP
private var originalOption: ColorOptionModel? = null
fun storeSnapshot(colorOptionModel: ColorOptionModel) {
diff --git a/src/com/android/customization/picker/notifications/domain/interactor/NotificationsSnapshotRestorer.kt b/src/com/android/customization/picker/notifications/domain/interactor/NotificationsSnapshotRestorer.kt
index 1fc205c..c782b74 100644
--- a/src/com/android/customization/picker/notifications/domain/interactor/NotificationsSnapshotRestorer.kt
+++ b/src/com/android/customization/picker/notifications/domain/interactor/NotificationsSnapshotRestorer.kt
@@ -27,7 +27,7 @@
private val interactor: NotificationsInteractor,
) : SnapshotRestorer {
- private lateinit var snapshotStore: SnapshotStore
+ private var snapshotStore: SnapshotStore = SnapshotStore.NOOP
fun storeSnapshot(model: NotificationSettingsModel) {
snapshotStore.store(snapshot(model))
diff --git a/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordanceSnapshotRestorer.kt b/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordanceSnapshotRestorer.kt
index 2dfa38a..3c7928c 100644
--- a/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordanceSnapshotRestorer.kt
+++ b/src/com/android/customization/picker/quickaffordance/domain/interactor/KeyguardQuickAffordanceSnapshotRestorer.kt
@@ -28,7 +28,7 @@
private val client: CustomizationProviderClient,
) : SnapshotRestorer {
- private lateinit var snapshotStore: SnapshotStore
+ private var snapshotStore: SnapshotStore = SnapshotStore.NOOP
suspend fun storeSnapshot() {
snapshotStore.store(snapshot())