Loading app/src/main/java/app/fedilab/android/activities/CacheActivity.java +11 −1 Original line number Diff line number Diff line Loading @@ -133,7 +133,17 @@ public class CacheActivity extends BaseActivity { size = size / 1000000.0f; } binding.fileCacheSize.setText(String.format("%s %s", String.format(Locale.getDefault(), "%.2f", size), getString(R.string.cache_units))); cacheAdapter.notifyDataSetChanged(); AlertDialog.Builder restartBuilder = new AlertDialog.Builder(CacheActivity.this, Helper.dialogStyle()); restartBuilder.setMessage(getString(R.string.restart_the_app)); restartBuilder.setNegativeButton(R.string.no, (dialogRestart, whichRestart) -> { recreate(); dialogRestart.dismiss(); }); restartBuilder.setPositiveButton(R.string.restart, (dialogRestart, whichRestart) -> { dialogRestart.dismiss(); Helper.restart(CacheActivity.this); }); restartBuilder.create().show(); })); dialog.dismiss(); }); Loading app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java +28 −6 Original line number Diff line number Diff line Loading @@ -224,9 +224,10 @@ public class StatusCache { throw new DBException("db is null. Wrong initialization."); } Cursor mCount = db.rawQuery("select count(*) from " + Sqlite.TABLE_STATUS_CACHE + " where " + Sqlite.COL_TYPE + " = '" + Timeline.TimeLineEnum.HOME.getValue() + "'" + " AND " + Sqlite.COL_INSTANCE + " = '" + baseAccount.instance + "'" + " AND " + Sqlite.COL_USER_ID + "= '" + baseAccount.user_id + "'", null); + " where " + Sqlite.COL_TYPE + " = ?" + " AND " + Sqlite.COL_INSTANCE + " = ?" + " AND " + Sqlite.COL_USER_ID + "= ?", new String[]{Timeline.TimeLineEnum.HOME.getValue(), baseAccount.instance, baseAccount.user_id}); mCount.moveToFirst(); int count = mCount.getInt(0); mCount.close(); Loading Loading @@ -457,14 +458,35 @@ public class StatusCache { * @return long - db id * @throws DBException exception with database */ public long deleteForAccount(BaseAccount account) throws DBException { public long deleteHomeForAccount(BaseAccount account) throws DBException { if (db == null) { throw new DBException("db is null. Wrong initialization."); } try { return db.delete(Sqlite.TABLE_STATUS_CACHE, Sqlite.COL_TYPE + " = ? AND " + Sqlite.COL_USER_ID + " = ? AND " + Sqlite.COL_INSTANCE + " =?", new String[]{Timeline.TimeLineEnum.HOME.getValue(), account.user_id, account.instance}); } catch (Exception e) { e.printStackTrace(); return -1; } } /** * delete all cache for an account * * @param account - Account * @return long - db id * @throws DBException exception with database */ public long deleteOthersForAccount(BaseAccount account) throws DBException { if (db == null) { throw new DBException("db is null. Wrong initialization."); } try { return db.delete(Sqlite.TABLE_STATUS_CACHE, Sqlite.COL_USER_ID + " = ? AND " + Sqlite.COL_INSTANCE + " =?", new String[]{account.user_id, account.instance}); Sqlite.COL_TYPE + " != ? AND " + Sqlite.COL_USER_ID + " = ? AND " + Sqlite.COL_INSTANCE + " =?", new String[]{Timeline.TimeLineEnum.HOME.getValue(), account.user_id, account.instance}); } catch (Exception e) { e.printStackTrace(); return -1; Loading app/src/main/java/app/fedilab/android/helper/CacheHelper.java +26 −1 Original line number Diff line number Diff line Loading @@ -15,18 +15,24 @@ package app.fedilab.android.helper; * see <http://www.gnu.org/licenses>. */ import android.content.Context; import android.content.SharedPreferences; import android.os.Handler; import android.os.Looper; import androidx.preference.PreferenceManager; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import app.fedilab.android.R; import app.fedilab.android.client.entities.app.BaseAccount; import app.fedilab.android.client.entities.app.CacheAccount; import app.fedilab.android.client.entities.app.StatusCache; import app.fedilab.android.client.entities.app.StatusDraft; import app.fedilab.android.client.entities.app.Timeline; import app.fedilab.android.exception.DBException; public class CacheHelper { Loading Loading @@ -112,10 +118,29 @@ public class CacheHelper { deleteDir(dir); } } SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences.Editor editor = sharedpreferences.edit(); for (CacheAccount cacheAccount : cacheAccounts) { if (cacheAccount.clear_home) { try { new StatusCache(context).deleteForAccount(cacheAccount.account); new StatusCache(context).deleteHomeForAccount(cacheAccount.account); editor.putString(context.getString(R.string.SET_INNER_MARKER) + cacheAccount.account.user_id + cacheAccount.account.instance + Timeline.TimeLineEnum.HOME.getValue(), null); editor.apply(); } catch (DBException e) { e.printStackTrace(); } } if (cacheAccount.clear_other) { try { new StatusCache(context).deleteOthersForAccount(cacheAccount.account); Map<String, ?> keys = sharedpreferences.getAll(); for (Map.Entry<String, ?> entry : keys.entrySet()) { if (entry.getKey().startsWith(context.getString(R.string.SET_INNER_MARKER) + cacheAccount.account.user_id + cacheAccount.account.instance) && !entry.getKey().endsWith(Timeline.TimeLineEnum.HOME.getValue())) { editor.putString(entry.getKey(), null); editor.apply(); } } } catch (DBException e) { e.printStackTrace(); } Loading app/src/main/java/app/fedilab/android/helper/Helper.java +15 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.content.res.Resources; import android.database.Cursor; Loading Loading @@ -1894,6 +1895,20 @@ public class Helper { } } /** * Restart the app * * @param context */ public static void restart(Context context) { Context ctx = context.getApplicationContext(); PackageManager pm = ctx.getPackageManager(); Intent intent = pm.getLaunchIntentForPackage(ctx.getPackageName()); Intent mainIntent = Intent.makeRestartActivityTask(intent.getComponent()); ctx.startActivity(mainIntent); Runtime.getRuntime().exit(0); } //Enum that described actions to replace inside a toot content public enum PatternType { MENTION, Loading app/src/main/res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -1597,4 +1597,6 @@ <string name="account_silenced">Account silenced</string> <string name="report">Report</string> <string name="state">State</string> <string name="restart_the_app">Restart the app?</string> <string name="restart">Restart</string> </resources> Loading
app/src/main/java/app/fedilab/android/activities/CacheActivity.java +11 −1 Original line number Diff line number Diff line Loading @@ -133,7 +133,17 @@ public class CacheActivity extends BaseActivity { size = size / 1000000.0f; } binding.fileCacheSize.setText(String.format("%s %s", String.format(Locale.getDefault(), "%.2f", size), getString(R.string.cache_units))); cacheAdapter.notifyDataSetChanged(); AlertDialog.Builder restartBuilder = new AlertDialog.Builder(CacheActivity.this, Helper.dialogStyle()); restartBuilder.setMessage(getString(R.string.restart_the_app)); restartBuilder.setNegativeButton(R.string.no, (dialogRestart, whichRestart) -> { recreate(); dialogRestart.dismiss(); }); restartBuilder.setPositiveButton(R.string.restart, (dialogRestart, whichRestart) -> { dialogRestart.dismiss(); Helper.restart(CacheActivity.this); }); restartBuilder.create().show(); })); dialog.dismiss(); }); Loading
app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java +28 −6 Original line number Diff line number Diff line Loading @@ -224,9 +224,10 @@ public class StatusCache { throw new DBException("db is null. Wrong initialization."); } Cursor mCount = db.rawQuery("select count(*) from " + Sqlite.TABLE_STATUS_CACHE + " where " + Sqlite.COL_TYPE + " = '" + Timeline.TimeLineEnum.HOME.getValue() + "'" + " AND " + Sqlite.COL_INSTANCE + " = '" + baseAccount.instance + "'" + " AND " + Sqlite.COL_USER_ID + "= '" + baseAccount.user_id + "'", null); + " where " + Sqlite.COL_TYPE + " = ?" + " AND " + Sqlite.COL_INSTANCE + " = ?" + " AND " + Sqlite.COL_USER_ID + "= ?", new String[]{Timeline.TimeLineEnum.HOME.getValue(), baseAccount.instance, baseAccount.user_id}); mCount.moveToFirst(); int count = mCount.getInt(0); mCount.close(); Loading Loading @@ -457,14 +458,35 @@ public class StatusCache { * @return long - db id * @throws DBException exception with database */ public long deleteForAccount(BaseAccount account) throws DBException { public long deleteHomeForAccount(BaseAccount account) throws DBException { if (db == null) { throw new DBException("db is null. Wrong initialization."); } try { return db.delete(Sqlite.TABLE_STATUS_CACHE, Sqlite.COL_TYPE + " = ? AND " + Sqlite.COL_USER_ID + " = ? AND " + Sqlite.COL_INSTANCE + " =?", new String[]{Timeline.TimeLineEnum.HOME.getValue(), account.user_id, account.instance}); } catch (Exception e) { e.printStackTrace(); return -1; } } /** * delete all cache for an account * * @param account - Account * @return long - db id * @throws DBException exception with database */ public long deleteOthersForAccount(BaseAccount account) throws DBException { if (db == null) { throw new DBException("db is null. Wrong initialization."); } try { return db.delete(Sqlite.TABLE_STATUS_CACHE, Sqlite.COL_USER_ID + " = ? AND " + Sqlite.COL_INSTANCE + " =?", new String[]{account.user_id, account.instance}); Sqlite.COL_TYPE + " != ? AND " + Sqlite.COL_USER_ID + " = ? AND " + Sqlite.COL_INSTANCE + " =?", new String[]{Timeline.TimeLineEnum.HOME.getValue(), account.user_id, account.instance}); } catch (Exception e) { e.printStackTrace(); return -1; Loading
app/src/main/java/app/fedilab/android/helper/CacheHelper.java +26 −1 Original line number Diff line number Diff line Loading @@ -15,18 +15,24 @@ package app.fedilab.android.helper; * see <http://www.gnu.org/licenses>. */ import android.content.Context; import android.content.SharedPreferences; import android.os.Handler; import android.os.Looper; import androidx.preference.PreferenceManager; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import app.fedilab.android.R; import app.fedilab.android.client.entities.app.BaseAccount; import app.fedilab.android.client.entities.app.CacheAccount; import app.fedilab.android.client.entities.app.StatusCache; import app.fedilab.android.client.entities.app.StatusDraft; import app.fedilab.android.client.entities.app.Timeline; import app.fedilab.android.exception.DBException; public class CacheHelper { Loading Loading @@ -112,10 +118,29 @@ public class CacheHelper { deleteDir(dir); } } SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences.Editor editor = sharedpreferences.edit(); for (CacheAccount cacheAccount : cacheAccounts) { if (cacheAccount.clear_home) { try { new StatusCache(context).deleteForAccount(cacheAccount.account); new StatusCache(context).deleteHomeForAccount(cacheAccount.account); editor.putString(context.getString(R.string.SET_INNER_MARKER) + cacheAccount.account.user_id + cacheAccount.account.instance + Timeline.TimeLineEnum.HOME.getValue(), null); editor.apply(); } catch (DBException e) { e.printStackTrace(); } } if (cacheAccount.clear_other) { try { new StatusCache(context).deleteOthersForAccount(cacheAccount.account); Map<String, ?> keys = sharedpreferences.getAll(); for (Map.Entry<String, ?> entry : keys.entrySet()) { if (entry.getKey().startsWith(context.getString(R.string.SET_INNER_MARKER) + cacheAccount.account.user_id + cacheAccount.account.instance) && !entry.getKey().endsWith(Timeline.TimeLineEnum.HOME.getValue())) { editor.putString(entry.getKey(), null); editor.apply(); } } } catch (DBException e) { e.printStackTrace(); } Loading
app/src/main/java/app/fedilab/android/helper/Helper.java +15 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.res.Configuration; import android.content.res.Resources; import android.database.Cursor; Loading Loading @@ -1894,6 +1895,20 @@ public class Helper { } } /** * Restart the app * * @param context */ public static void restart(Context context) { Context ctx = context.getApplicationContext(); PackageManager pm = ctx.getPackageManager(); Intent intent = pm.getLaunchIntentForPackage(ctx.getPackageName()); Intent mainIntent = Intent.makeRestartActivityTask(intent.getComponent()); ctx.startActivity(mainIntent); Runtime.getRuntime().exit(0); } //Enum that described actions to replace inside a toot content public enum PatternType { MENTION, Loading
app/src/main/res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -1597,4 +1597,6 @@ <string name="account_silenced">Account silenced</string> <string name="report">Report</string> <string name="state">State</string> <string name="restart_the_app">Restart the app?</string> <string name="restart">Restart</string> </resources>