From 4394b9500287e119453dc62f61660d0a0ff64515 Mon Sep 17 00:00:00 2001 From: althafvly Date: Tue, 30 Apr 2024 20:37:23 +0530 Subject: [PATCH] feat: Check for widgets before rebind --- .../foundation/e/bliss/widgets/BlissAppWidgetHost.kt | 3 --- .../foundation/e/bliss/widgets/WidgetContainer.kt | 12 +++++++++++- .../foundation/e/bliss/widgets/WidgetsActivity.kt | 3 +++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/bliss/src/foundation/e/bliss/widgets/BlissAppWidgetHost.kt b/bliss/src/foundation/e/bliss/widgets/BlissAppWidgetHost.kt index aa915b0283a..9985c5e8722 100644 --- a/bliss/src/foundation/e/bliss/widgets/BlissAppWidgetHost.kt +++ b/bliss/src/foundation/e/bliss/widgets/BlissAppWidgetHost.kt @@ -25,8 +25,6 @@ import android.content.Context import com.android.launcher3.R class BlissAppWidgetHost(val context: Context) : AppWidgetHost(context, WIDGET_HOST_ID) { - private val widgetsDbHelper = WidgetsDbHelper.getInstance(context) - fun createView(widgetId: Int, widgetInfo: AppWidgetProviderInfo): AppWidgetHostView { return createView(context, widgetId, widgetInfo).apply { val widgetTopBottom = @@ -49,7 +47,6 @@ class BlissAppWidgetHost(val context: Context) : AppWidgetHost(context, WIDGET_H override fun onAppWidgetRemoved(appWidgetId: Int) { deleteAppWidgetId(appWidgetId) - widgetsDbHelper.delete(appWidgetId) } companion object { diff --git a/bliss/src/foundation/e/bliss/widgets/WidgetContainer.kt b/bliss/src/foundation/e/bliss/widgets/WidgetContainer.kt index 827c3115d3f..7d22dcbeab6 100644 --- a/bliss/src/foundation/e/bliss/widgets/WidgetContainer.kt +++ b/bliss/src/foundation/e/bliss/widgets/WidgetContainer.kt @@ -223,7 +223,17 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont private val mAppMonitorCallback: LauncherAppMonitorCallback = object : LauncherAppMonitorCallback { override fun onPackageRemoved(packageName: String?, user: UserHandle?) { - rebindWidgets() + if (!::widgetsDbHelper.isInitialized) { + return + } + val widgets = + widgetsDbHelper.getWidgets().filter { + it.component.packageName == packageName + } + if (packageName != null && widgets.isNotEmpty()) { + widgets.map { it.widgetId }.forEach { widgetsDbHelper.delete(it) } + rebindWidgets() + } } } diff --git a/bliss/src/foundation/e/bliss/widgets/WidgetsActivity.kt b/bliss/src/foundation/e/bliss/widgets/WidgetsActivity.kt index e34ba053212..eb6a4e0b62d 100644 --- a/bliss/src/foundation/e/bliss/widgets/WidgetsActivity.kt +++ b/bliss/src/foundation/e/bliss/widgets/WidgetsActivity.kt @@ -35,6 +35,7 @@ class WidgetsActivity : Activity(), OnActionClickListener { private lateinit var mAddedWidgetsAdapter: AddedWidgetsAdapter private lateinit var mAppWidgetManager: AppWidgetManager private lateinit var mAppWidgetHost: BlissAppWidgetHost + private lateinit var widgetsDbHelper: WidgetsDbHelper private val mCompositeDisposable = CompositeDisposable() @@ -60,6 +61,7 @@ class WidgetsActivity : Activity(), OnActionClickListener { mAppWidgetManager = AppWidgetManager.getInstance(this) mAppWidgetHost = BlissAppWidgetHost(this) + widgetsDbHelper = WidgetsDbHelper.getInstance(this) val addedWidgets = findViewById(R.id.added_widgets_recycler_view) addedWidgets.apply { @@ -86,6 +88,7 @@ class WidgetsActivity : Activity(), OnActionClickListener { override fun removeWidget(id: Int) { mAppWidgetHost.onAppWidgetRemoved(id) + widgetsDbHelper.delete(id) CoroutineScope(Dispatchers.Main).launch { WidgetContainer.WidgetFragment.eventFlow.emit(Unit) } -- GitLab