From 48d646361b1bfa640dd6744f2ba9643ade473ef1 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Fri, 29 Apr 2022 16:45:48 -0300 Subject: [PATCH] [app] Adjust settings UI to new DB --- .../fdroid/panic/PanicResponderActivity.java | 32 ++++--------------- .../java/org/fdroid/fdroid/FDroidApp.java | 25 ++++++++------- .../java/org/fdroid/fdroid/data/DBHelper.java | 10 ++++++ .../fdroid/views/InstallHistoryActivity.java | 9 +++--- .../fdroid/views/PreferencesFragment.java | 8 ++--- 5 files changed, 36 insertions(+), 48 deletions(-) diff --git a/app/src/full/java/org/fdroid/fdroid/panic/PanicResponderActivity.java b/app/src/full/java/org/fdroid/fdroid/panic/PanicResponderActivity.java index fb3e673e4..164f16b7e 100644 --- a/app/src/full/java/org/fdroid/fdroid/panic/PanicResponderActivity.java +++ b/app/src/full/java/org/fdroid/fdroid/panic/PanicResponderActivity.java @@ -8,7 +8,9 @@ import android.os.Build; import android.os.Bundle; import android.util.Log; +import org.fdroid.database.FDroidDatabase; import org.fdroid.fdroid.Preferences; +import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.Apk; import org.fdroid.fdroid.data.DBHelper; import org.fdroid.fdroid.data.InstalledApp; @@ -95,8 +97,9 @@ public class PanicResponderActivity extends AppCompatActivity { lbm.registerReceiver(receiver, Installer.getUninstallIntentFilter(lastToUninstall)); for (String packageName : wipeList) { - InstalledApp installedApp = InstalledAppProvider.Helper.findByPackageName(context, packageName); - InstallerService.uninstall(context, new Apk(installedApp)); + Apk apk = new Apk(); + apk.packageName = packageName; + InstallerService.uninstall(context, apk); } // wait for apps to uninstall before triggering final responses @@ -139,30 +142,7 @@ public class PanicResponderActivity extends AppCompatActivity { } static void resetRepos(Context context) { - HashSet enabledAddresses = new HashSet<>(); - HashSet disabledAddresses = new HashSet<>(); - String[] defaultReposItems = DBHelper.loadInitialRepos(context).toArray(new String[0]); - for (int i = 1; i < defaultReposItems.length; i += DBHelper.REPO_XML_ITEM_COUNT) { - if ("1".equals(defaultReposItems[i + 3])) { - enabledAddresses.add(defaultReposItems[i]); - } else { - disabledAddresses.add(defaultReposItems[i]); - } - } - - List repos = RepoProvider.Helper.all(context); - for (Repo repo : repos) { - ContentValues values = new ContentValues(1); - if (enabledAddresses.contains(repo.address)) { - values.put(Schema.RepoTable.Cols.IN_USE, true); - RepoProvider.Helper.update(context, repo, values); - } else if (disabledAddresses.contains(repo.address)) { - values.put(Schema.RepoTable.Cols.IN_USE, false); - RepoProvider.Helper.update(context, repo, values); - } else { - RepoProvider.Helper.remove(context, repo.getId()); - } - } + DBHelper.resetRepos(context); } private void exitAndClear() { diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java index ee89a2afe..3e4b17937 100644 --- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java +++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java @@ -58,7 +58,6 @@ import org.fdroid.fdroid.Preferences.ChangeListener; import org.fdroid.fdroid.Preferences.Theme; import org.fdroid.fdroid.compat.PRNGFixes; import org.fdroid.fdroid.data.App; -import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.data.DBHelper; import org.fdroid.fdroid.data.Repo; import org.fdroid.fdroid.installer.ApkFileProvider; @@ -251,19 +250,23 @@ public class FDroidApp extends Application implements androidx.work.Configuratio currentLocale = newConfig.getLocales().toString(); } if (!TextUtils.equals(lastLocale, currentLocale)) { - FDroidDatabase db = DBHelper.getDb(this.getApplicationContext()); - Single.fromCallable(() -> { - long now = System.currentTimeMillis(); - LocaleListCompat locales = - ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration()); - db.afterLocalesChanged(locales); - Log.d(TAG, "Updating DB locales took: " + (System.currentTimeMillis() - now) + "ms"); - return true; - }).subscribeOn(Schedulers.io()).subscribe(); + onLanguageChanged(getApplicationContext()); } atStartTime.edit().putString(lastLocaleKey, currentLocale).apply(); } + public static void onLanguageChanged(Context context) { + FDroidDatabase db = DBHelper.getDb(context); + Single.fromCallable(() -> { + long now = System.currentTimeMillis(); + LocaleListCompat locales = + ConfigurationCompat.getLocales(Resources.getSystem().getConfiguration()); + db.afterLocalesChanged(locales); + Log.d(TAG, "Updating DB locales took: " + (System.currentTimeMillis() - now) + "ms"); + return true; + }).subscribeOn(Schedulers.io()).subscribe(); + } + @Override public void onTrimMemory(int level) { super.onTrimMemory(level); @@ -363,7 +366,7 @@ public class FDroidApp extends Application implements androidx.work.Configuratio preferences.registerAppsRequiringAntiFeaturesChangeListener(new Preferences.ChangeListener() { @Override public void onPreferenceChange() { - getContentResolver().notifyChange(AppProvider.getContentUri(), null); + // TODO check if anything else needs updating/reloading } }); diff --git a/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java b/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java index 7b6867636..9b7df767f 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java +++ b/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java @@ -31,6 +31,7 @@ import android.database.sqlite.SQLiteOpenHelper; import android.text.TextUtils; import android.util.Log; +import androidx.annotation.AnyThread; import androidx.annotation.VisibleForTesting; import androidx.annotation.WorkerThread; @@ -99,6 +100,15 @@ public class DBHelper extends SQLiteOpenHelper { } } + @AnyThread + public static void resetRepos(Context context) { + FDroidDatabase db = getDb(context); + Utils.runOffUiThread(() -> db.runInTransaction(() -> { + db.getRepositoryDao().clearAll(); + prePopulateDb(context, db); + })); + } + private static final String CREATE_TABLE_PACKAGE = "CREATE TABLE " + PackageTable.NAME + " ( " + PackageTable.Cols.PACKAGE_NAME + " text not null, " diff --git a/app/src/main/java/org/fdroid/fdroid/views/InstallHistoryActivity.java b/app/src/main/java/org/fdroid/fdroid/views/InstallHistoryActivity.java index d8b62a8cf..683b82e32 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/InstallHistoryActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/InstallHistoryActivity.java @@ -32,11 +32,10 @@ import android.widget.TextView; import com.google.android.material.appbar.MaterialToolbar; import org.apache.commons.io.IOUtils; +import org.fdroid.database.Repository; import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.R; -import org.fdroid.fdroid.data.Repo; -import org.fdroid.fdroid.data.RepoProvider; import org.fdroid.fdroid.installer.InstallHistoryService; import org.fdroid.fdroid.work.FDroidMetricsWorker; @@ -140,10 +139,10 @@ public class InstallHistoryActivity extends AppCompatActivity { if (showingInstallHistory) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("Repos:\n"); - for (Repo repo : RepoProvider.Helper.all(this)) { - if (repo.inuse) { + for (Repository repo: FDroidApp.repos) { + if (repo.getEnabled()) { stringBuilder.append("* "); - stringBuilder.append(repo.address); + stringBuilder.append(repo.getAddress()); stringBuilder.append('\n'); } } diff --git a/app/src/main/java/org/fdroid/fdroid/views/PreferencesFragment.java b/app/src/main/java/org/fdroid/fdroid/views/PreferencesFragment.java index 9194fb610..c143049bc 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/PreferencesFragment.java +++ b/app/src/main/java/org/fdroid/fdroid/views/PreferencesFragment.java @@ -49,7 +49,6 @@ import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.R; import org.fdroid.fdroid.UpdateService; import org.fdroid.fdroid.Utils; -import org.fdroid.fdroid.data.RepoProvider; import org.fdroid.fdroid.installer.InstallHistoryService; import org.fdroid.fdroid.installer.PrivilegedInstaller; import org.fdroid.fdroid.work.CleanCacheWorker; @@ -325,12 +324,9 @@ public class PreferencesFragment extends PreferenceFragmentCompat case Preferences.PREF_LANGUAGE: entrySummary(key); if (changing) { - AppCompatActivity activity = (AppCompatActivity) getActivity(); + AppCompatActivity activity = (AppCompatActivity) requireActivity(); Languages.setLanguage(activity); - - RepoProvider.Helper.clearEtags(getActivity()); - UpdateService.updateNow(getActivity()); - + FDroidApp.onLanguageChanged(activity.getApplicationContext()); Languages.forceChangeLanguage(activity); } break;