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

Commit ca314e0b authored by Yash Garg's avatar Yash Garg 💬
Browse files

Merge v1.12.2 changes into master

parent db74dcd6
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -54,6 +54,8 @@ public class Preferences {
    private static final String ADDED_ECLOUD_WIDGET = "added_ecloud_widget";
    private static final String ADDED_PRIVACY_WIDGET = "added_privacy_widget";

    private static final String AP_MIGRATION_1 = "ap_migration_1";

    private Preferences() {
    }

@@ -390,6 +392,18 @@ public class Preferences {
        getPrefs(context).edit().putBoolean(ADDED_PRIVACY_WIDGET, true).apply();
    }

    public static void setRemovedPrivacyWidget(Context context) {
        getPrefs(context).edit().putBoolean(ADDED_PRIVACY_WIDGET, false).apply();
    }

    public static void setApMigration1Status(Context context, boolean status) {
        getPrefs(context).edit().putBoolean(AP_MIGRATION_1, status).apply();
    }

    public static boolean getApMigration1Status(Context context) {
        return getPrefs(context).getBoolean(AP_MIGRATION_1, false);
    }

    public static boolean getAddedPrivacyWidget(Context context) {
        return getPrefs(context).getBoolean(ADDED_PRIVACY_WIDGET, false);
    }
+3 −0
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@ import foundation.e.blisslauncher.core.database.LauncherDB;
import foundation.e.blisslauncher.core.database.model.LauncherItem;
import foundation.e.blisslauncher.core.migrate.Migration;
import foundation.e.blisslauncher.features.launcher.AppProvider;
import foundation.e.blisslauncher.features.widgets.WidgetMigration;

import java.util.List;

public class LoadDatabaseTask extends AsyncTask<Void, Void, List<LauncherItem>> {
@@ -22,6 +24,7 @@ public class LoadDatabaseTask extends AsyncTask<Void, Void, List<LauncherItem>>
    @Override
    protected List<LauncherItem> doInBackground(Void... voids) {
        Migration.migrateSafely(mAppProvider.getContext());
        WidgetMigration.migrateAdvancedPrivacy(mAppProvider.getContext());
        return LauncherDB.getDatabase(mAppProvider.getContext()).launcherDao().getAllItems();
    }

+50 −0
Original line number Diff line number Diff line
package foundation.e.blisslauncher.features.widgets

import android.appwidget.AppWidgetManager
import android.content.ComponentName
import android.content.Context
import foundation.e.blisslauncher.core.Preferences
import foundation.e.blisslauncher.core.database.LauncherDB
import foundation.e.blisslauncher.features.widgets.DefaultWidgets.privacyWidget
import timber.log.Timber

object WidgetMigration {
    @JvmStatic
    fun migrateAdvancedPrivacy(context: Context) {
        Timber.tag(TAG).d("Starting widget migration for Advanced Privacy")
        val addedAp = Preferences.getAddedPrivacyWidget(context)
        val oldComponent =
            ComponentName("foundation.e.advancedprivacy", "foundation.e.privacycentralapp.Widget")

        val shouldMigrate = migrate(context, addedAp, oldComponent)
        Timber.tag(TAG).d("Should migrate?: $shouldMigrate")

        if (shouldMigrate && !Preferences.getApMigration1Status(context)) {
            Preferences.setRemovedPrivacyWidget(context)
            Preferences.setApMigration1Status(context, true)
        }
    }

    private fun migrate(context: Context, isAdded: Boolean, oldComponent: ComponentName): Boolean {
        val widgetDao = LauncherDB.getDatabase(context).widgetDao()
        var containsInDB = false

        for (widget in widgetDao.all) {
            val info = AppWidgetManager.getInstance(context).getAppWidgetInfo(widget.id)
            Timber.tag(TAG).d("Widget Id: ${widget.id} | Widget info: $info")

            if (info != null && (info.provider == oldComponent || info.provider == privacyWidget)) {
                Timber.tag(TAG).d("Migrating widget ${info.provider}")
                containsInDB = true
            }
        }

        if (containsInDB && isAdded) {
            Preferences.setApMigration1Status(context, true)
        }

        return !containsInDB && isAdded
    }

    private const val TAG = "WidgetMigration"
}