diff --git a/app/build.gradle b/app/build.gradle index 8a71e20..8427099 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "app.fedilab.mobilizon" minSdkVersion 23 targetSdkVersion 30 - versionCode 2 - versionName "1.0.1" + versionCode 3 + versionName "1.0.2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -47,7 +47,7 @@ dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.2.1' - implementation 'androidx.constraintlayout:constraintlayout:2.0.3' + implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'androidx.navigation:navigation-fragment:2.3.1' implementation 'androidx.navigation:navigation-ui:2.3.1' testImplementation 'junit:junit:4.13' diff --git a/app/src/main/java/app/fedilab/mobilizon/MainActivity.java b/app/src/main/java/app/fedilab/mobilizon/MainActivity.java index 27a8e71..7deed6d 100644 --- a/app/src/main/java/app/fedilab/mobilizon/MainActivity.java +++ b/app/src/main/java/app/fedilab/mobilizon/MainActivity.java @@ -133,21 +133,17 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On if (instanceNodeInfo.getSoftware() != null && instanceNodeInfo.getSoftware().getName().trim().toLowerCase().compareTo("mobilizon") == 0) { runOnUiThread(() -> { final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); + boolean forcedCacheDeletedDone = sharedpreferences.getBoolean(Helper.FORCED_CACHE_DELETE_DONE, false); String previousVersion = sharedpreferences.getString(Helper.PREF_VERSION+instance, null); - if( previousVersion != null && previousVersion.trim().compareTo(instanceNodeInfo.getSoftware().getVersion()) != 0) { + if( !forcedCacheDeletedDone || (previousVersion != null && previousVersion.trim().compareTo(instanceNodeInfo.getSoftware().getVersion()) != 0)) { SharedPreferences.Editor editor = sharedpreferences.edit(); editor.putString(Helper.PREF_VERSION + instance.trim(), instanceNodeInfo.getSoftware().getVersion().trim()); + editor.putBoolean(Helper.FORCED_CACHE_DELETE_DONE, true); editor.apply(); - File dir = new File(getFilesDir().getPath()+"/" + instance); - if (dir.isDirectory()) { - String[] children = dir.list(); - if( children != null) { - for (String child : children) { - //noinspection ResultOfMethodCallIgnored - new File(dir, child).delete(); - } - } - } + File dir = new File(getCacheDir().getPath()); + try { + Helper.deleteDir(dir); + }catch (Exception ignored){} main_webview.reload(); }else if(previousVersion == null) { SharedPreferences.Editor editor = sharedpreferences.edit(); @@ -159,11 +155,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On } catch (Exception ignored) {} }).start(); - } - @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. @@ -201,7 +195,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); - //noinspection SimplifiableIfStatement if (id == R.id.action_instance) { showRadioButtonDialogFullInstances(); return true; @@ -360,7 +353,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On } }).start()); - //TODO: uncomment and add support for picking instances when available alt_bld.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss()); alt_bld.setNeutralButton(R.string.help, (dialog, which) -> { Intent intent = new Intent(MainActivity.this, InstancePickerActivity.class); diff --git a/app/src/main/java/app/fedilab/mobilizon/helper/Helper.java b/app/src/main/java/app/fedilab/mobilizon/helper/Helper.java index f655323..0f1bc23 100644 --- a/app/src/main/java/app/fedilab/mobilizon/helper/Helper.java +++ b/app/src/main/java/app/fedilab/mobilizon/helper/Helper.java @@ -11,6 +11,7 @@ import android.webkit.WebSettings; import android.webkit.WebStorage; import android.webkit.WebView; +import java.io.File; import java.io.InputStream; /* Copyright 2020 Thomas Schneider @@ -34,6 +35,9 @@ public class Helper { public static final String APP_PREFS = "app_prefs"; public static final String PREF_INSTANCE = "instance"; public static final String PREF_VERSION = "version_"; + + public static final String FORCED_CACHE_DELETE_DONE = "forced_cache_delete_done"; + /** * Returns the preferred instance * @@ -62,7 +66,6 @@ public class Helper { webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setLoadsImagesAutomatically(true); webView.getSettings().setSupportMultipleWindows(false); - webView.getSettings().setGeolocationDatabasePath(context.getFilesDir().getPath()+"/" + instance); webView.getSettings().setGeolocationEnabled(true); webView.getSettings().setAppCachePath(context.getCacheDir().getPath()); webView.getSettings().setAppCacheEnabled(true); @@ -82,6 +85,30 @@ public class Helper { } + /** + * Delete a directory + * @param dir File + * @return boolean + */ + public static boolean deleteDir(File dir) { + if (dir != null && dir.isDirectory()) { + String[] children = dir.list(); + for (String child : children) { + boolean success = deleteDir(new File(dir, child)); + if (!success) { + return false; + } + } + return dir.delete(); + } else if(dir!= null && dir.isFile()) { + return dir.delete(); + } else { + return false; + } + } + + + @SuppressWarnings({"ResultOfMethodCallIgnored"}) public static void injectCSS(Activity activity, WebView view, String cssFile) { try {