From 1d63b16ff12221d0458a3f54219ad8d3f0ceadeb Mon Sep 17 00:00:00 2001 From: akwizgran Date: Mon, 24 Feb 2020 13:44:47 +0000 Subject: [PATCH] Don't delete the code_cache directory when deleting account. This seems to avoid the disappearing account bug when installing a new version. --- .../account/AndroidAccountManager.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/bramble-android/src/main/java/org/briarproject/bramble/account/AndroidAccountManager.java b/bramble-android/src/main/java/org/briarproject/bramble/account/AndroidAccountManager.java index 012f76c4b..b0cb783d3 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/account/AndroidAccountManager.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/account/AndroidAccountManager.java @@ -12,6 +12,7 @@ import org.briarproject.bramble.api.identity.IdentityManager; import java.io.File; import java.util.HashSet; +import java.util.List; import java.util.Set; import java.util.logging.Logger; @@ -20,6 +21,7 @@ import javax.annotation.concurrent.GuardedBy; import javax.inject.Inject; import static android.os.Build.VERSION.SDK_INT; +import static java.util.Arrays.asList; import static java.util.logging.Level.INFO; import static org.briarproject.bramble.util.IoUtils.deleteFileOrDir; import static org.briarproject.bramble.util.LogUtils.logFileOrDir; @@ -30,6 +32,12 @@ class AndroidAccountManager extends AccountManagerImpl private static final Logger LOG = Logger.getLogger(AndroidAccountManager.class.getName()); + /** + * Directories that shouldn't be deleted when deleting the user's account. + */ + private static final List PROTECTED_DIR_NAMES = + asList("code_cache", "lib", "shared_prefs"); + protected final Context appContext; private final SharedPreferences prefs; @@ -81,7 +89,7 @@ class AndroidAccountManager extends AccountManagerImpl if (!prefs.edit().clear().commit()) LOG.warning("Could not clear shared preferences"); } - // Delete files, except lib and shared_prefs directories + // Delete files, except protected directories Set files = new HashSet<>(); File dataDir = getDataDir(); @Nullable @@ -90,8 +98,7 @@ class AndroidAccountManager extends AccountManagerImpl LOG.warning("Could not list files in app data dir"); } else { for (File file : fileArray) { - String name = file.getName(); - if (!name.equals("lib") && !name.equals("shared_prefs")) { + if (!PROTECTED_DIR_NAMES.contains(file.getName())) { files.add(file); } } @@ -110,11 +117,15 @@ class AndroidAccountManager extends AccountManagerImpl } } for (File file : files) { + if (LOG.isLoggable(INFO)) { + LOG.info("Deleting " + file.getAbsolutePath()); + } deleteFileOrDir(file); } // Recreate the cache dir as some OpenGL drivers expect it to exist - if (!new File(dataDir, "cache").mkdirs()) + if (!new File(dataDir, "cache").mkdirs()) { LOG.warning("Could not recreate cache dir"); + } } private File getDataDir() {