Merge "Revert^2 "Fix a crash when registering/unregistering a smartspace timer listener."" into main
diff --git a/packages/SystemUI/src/com/android/systemui/smartspace/data/repository/SmartspaceRepository.kt b/packages/SystemUI/src/com/android/systemui/smartspace/data/repository/SmartspaceRepository.kt
index 095d30e..52a1c15 100644
--- a/packages/SystemUI/src/com/android/systemui/smartspace/data/repository/SmartspaceRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/smartspace/data/repository/SmartspaceRepository.kt
@@ -21,7 +21,9 @@
 import android.widget.RemoteViews
 import com.android.systemui.communal.smartspace.CommunalSmartspaceController
 import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.dagger.qualifiers.Main
 import com.android.systemui.plugins.BcSmartspaceDataPlugin
+import java.util.concurrent.Executor
 import javax.inject.Inject
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
@@ -41,6 +43,7 @@
 @Inject
 constructor(
     private val communalSmartspaceController: CommunalSmartspaceController,
+    @Main private val uiExecutor: Executor,
 ) : SmartspaceRepository, BcSmartspaceDataPlugin.SmartspaceTargetListener {
 
     override val isSmartspaceRemoteViewsEnabled: Boolean
@@ -51,12 +54,18 @@
     override val communalSmartspaceTargets: Flow<List<SmartspaceTarget>> =
         _communalSmartspaceTargets
             .onStart {
-                communalSmartspaceController.addListener(listener = this@SmartspaceRepositoryImpl)
+                uiExecutor.execute {
+                    communalSmartspaceController.addListener(
+                        listener = this@SmartspaceRepositoryImpl
+                    )
+                }
             }
             .onCompletion {
-                communalSmartspaceController.removeListener(
-                    listener = this@SmartspaceRepositoryImpl
-                )
+                uiExecutor.execute {
+                    communalSmartspaceController.removeListener(
+                        listener = this@SmartspaceRepositoryImpl
+                    )
+                }
             }
 
     override fun onSmartspaceTargetsUpdated(targetsNullable: MutableList<out Parcelable>?) {