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

Commit e875a9c4 authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

feat: Check for widgets before rebind

parent 372a1997
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -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 {
+11 −1
Original line number Diff line number Diff line
@@ -223,9 +223,19 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont
        private val mAppMonitorCallback: LauncherAppMonitorCallback =
            object : LauncherAppMonitorCallback {
                override fun onPackageRemoved(packageName: String?, user: UserHandle?) {
                    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()
                    }
                }
            }

        private var initialWidgetsAdded: Boolean
            set(value) {
+3 −0
Original line number Diff line number Diff line
@@ -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<RecyclerView>(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)
        }