Fix issue #3 - Cache not cleared after update
This commit is contained in:
parent
3485d6d183
commit
3abcc17fc6
|
@ -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'
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue