Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Snippets Groups Projects
Commit 4394b950 authored by Mohammed Althaf Thayyil's avatar Mohammed Althaf Thayyil :blush:
Browse files

feat: Check for widgets before rebind

parent af18292a
Branches
No related tags found
No related merge requests found
...@@ -25,8 +25,6 @@ import android.content.Context ...@@ -25,8 +25,6 @@ import android.content.Context
import com.android.launcher3.R import com.android.launcher3.R
class BlissAppWidgetHost(val context: Context) : AppWidgetHost(context, WIDGET_HOST_ID) { class BlissAppWidgetHost(val context: Context) : AppWidgetHost(context, WIDGET_HOST_ID) {
private val widgetsDbHelper = WidgetsDbHelper.getInstance(context)
fun createView(widgetId: Int, widgetInfo: AppWidgetProviderInfo): AppWidgetHostView { fun createView(widgetId: Int, widgetInfo: AppWidgetProviderInfo): AppWidgetHostView {
return createView(context, widgetId, widgetInfo).apply { return createView(context, widgetId, widgetInfo).apply {
val widgetTopBottom = val widgetTopBottom =
...@@ -49,7 +47,6 @@ class BlissAppWidgetHost(val context: Context) : AppWidgetHost(context, WIDGET_H ...@@ -49,7 +47,6 @@ class BlissAppWidgetHost(val context: Context) : AppWidgetHost(context, WIDGET_H
override fun onAppWidgetRemoved(appWidgetId: Int) { override fun onAppWidgetRemoved(appWidgetId: Int) {
deleteAppWidgetId(appWidgetId) deleteAppWidgetId(appWidgetId)
widgetsDbHelper.delete(appWidgetId)
} }
companion object { companion object {
......
...@@ -223,7 +223,17 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont ...@@ -223,7 +223,17 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont
private val mAppMonitorCallback: LauncherAppMonitorCallback = private val mAppMonitorCallback: LauncherAppMonitorCallback =
object : LauncherAppMonitorCallback { object : LauncherAppMonitorCallback {
override fun onPackageRemoved(packageName: String?, user: UserHandle?) { 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()
}
} }
} }
......
...@@ -35,6 +35,7 @@ class WidgetsActivity : Activity(), OnActionClickListener { ...@@ -35,6 +35,7 @@ class WidgetsActivity : Activity(), OnActionClickListener {
private lateinit var mAddedWidgetsAdapter: AddedWidgetsAdapter private lateinit var mAddedWidgetsAdapter: AddedWidgetsAdapter
private lateinit var mAppWidgetManager: AppWidgetManager private lateinit var mAppWidgetManager: AppWidgetManager
private lateinit var mAppWidgetHost: BlissAppWidgetHost private lateinit var mAppWidgetHost: BlissAppWidgetHost
private lateinit var widgetsDbHelper: WidgetsDbHelper
private val mCompositeDisposable = CompositeDisposable() private val mCompositeDisposable = CompositeDisposable()
...@@ -60,6 +61,7 @@ class WidgetsActivity : Activity(), OnActionClickListener { ...@@ -60,6 +61,7 @@ class WidgetsActivity : Activity(), OnActionClickListener {
mAppWidgetManager = AppWidgetManager.getInstance(this) mAppWidgetManager = AppWidgetManager.getInstance(this)
mAppWidgetHost = BlissAppWidgetHost(this) mAppWidgetHost = BlissAppWidgetHost(this)
widgetsDbHelper = WidgetsDbHelper.getInstance(this)
val addedWidgets = findViewById<RecyclerView>(R.id.added_widgets_recycler_view) val addedWidgets = findViewById<RecyclerView>(R.id.added_widgets_recycler_view)
addedWidgets.apply { addedWidgets.apply {
...@@ -86,6 +88,7 @@ class WidgetsActivity : Activity(), OnActionClickListener { ...@@ -86,6 +88,7 @@ class WidgetsActivity : Activity(), OnActionClickListener {
override fun removeWidget(id: Int) { override fun removeWidget(id: Int) {
mAppWidgetHost.onAppWidgetRemoved(id) mAppWidgetHost.onAppWidgetRemoved(id)
widgetsDbHelper.delete(id)
CoroutineScope(Dispatchers.Main).launch { CoroutineScope(Dispatchers.Main).launch {
WidgetContainer.WidgetFragment.eventFlow.emit(Unit) WidgetContainer.WidgetFragment.eventFlow.emit(Unit)
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment