Move security prefs to db

This commit is contained in:
M M Arif 2024-03-17 19:34:43 +05:00
parent 758c863622
commit a10afd7c8e
10 changed files with 97 additions and 59 deletions

View File

@ -121,8 +121,12 @@ public abstract class BaseActivity extends AppCompatActivity {
public void onResume() {
super.onResume();
if (tinyDB.getBoolean("biometricStatus", false)
&& !tinyDB.getBoolean("biometricLifeCycle")) {
if (Boolean.parseBoolean(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_BIOMETRIC_KEY))
&& !Boolean.parseBoolean(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_BIOMETRIC_LIFE_CYCLE_KEY))) {
Executor executor = ContextCompat.getMainExecutor(this);
@ -147,7 +151,10 @@ public abstract class BaseActivity extends AppCompatActivity {
public void onAuthenticationSucceeded(
@NonNull BiometricPrompt.AuthenticationResult result) {
super.onAuthenticationSucceeded(result);
tinyDB.putBoolean("biometricLifeCycle", true);
AppDatabaseSettings.updateSettingsValue(
getApplicationContext(),
"true",
AppDatabaseSettings.APP_BIOMETRIC_LIFE_CYCLE_KEY);
}
// Authentication failed, close the app

View File

@ -15,11 +15,11 @@ import org.mian.gitnex.helpers.SnackBar;
public class SettingsCodeEditorActivity extends BaseActivity {
private static String[] colorList;
private static int colorSelectedChoice = 0;
private static int colorSelectedChoice;
private static String[] indentationList;
private static int indentationSelectedChoice = 0;
private static int indentationSelectedChoice;
private static String[] indentationTabsList;
private static int indentationTabsSelectedChoice = 0;
private static int indentationTabsSelectedChoice;
@Override
public void onCreate(Bundle savedInstanceState) {

View File

@ -19,7 +19,7 @@ public class SettingsNotificationsActivity extends BaseActivity {
private ActivitySettingsNotificationsBinding viewBinding;
private static String[] pollingDelayList;
private static int pollingDelayListSelectedChoice = 0;
private static int pollingDelayListSelectedChoice;
@Override
public void onCreate(Bundle savedInstanceState) {

View File

@ -13,6 +13,7 @@ import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.mian.gitnex.R;
import org.mian.gitnex.databinding.ActivitySettingsSecurityBinding;
import org.mian.gitnex.helpers.AppDatabaseSettings;
import org.mian.gitnex.helpers.AppUtil;
import org.mian.gitnex.helpers.SnackBar;
import org.mian.gitnex.helpers.ssl.MemorizingTrustManager;
@ -23,9 +24,9 @@ import org.mian.gitnex.helpers.ssl.MemorizingTrustManager;
public class SettingsSecurityActivity extends BaseActivity {
private static String[] cacheSizeDataList;
private static int cacheSizeDataSelectedChoice = 0;
private static int cacheSizeDataSelectedChoice;
private static String[] cacheSizeImagesList;
private static int cacheSizeImagesSelectedChoice = 0;
private static int cacheSizeImagesSelectedChoice;
@Override
public void onCreate(Bundle savedInstanceState) {
@ -41,26 +42,24 @@ public class SettingsSecurityActivity extends BaseActivity {
cacheSizeDataList = getResources().getStringArray(R.array.cacheSizeList);
cacheSizeImagesList = getResources().getStringArray(R.array.cacheSizeList);
cacheSizeDataSelectedChoice =
Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_DATA_CACHE_KEY));
cacheSizeImagesSelectedChoice =
Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_IMAGES_CACHE_KEY));
activitySettingsSecurityBinding.cacheSizeDataSelected.setText(
tinyDB.getString(
"cacheSizeStr", getString(R.string.cacheSizeDataSelectionSelectedText)));
cacheSizeDataList[cacheSizeDataSelectedChoice]);
activitySettingsSecurityBinding.cacheSizeImagesSelected.setText(
tinyDB.getString(
"cacheSizeImagesStr",
getString(R.string.cacheSizeImagesSelectionSelectedText)));
if (cacheSizeDataSelectedChoice == 0) {
cacheSizeDataSelectedChoice = tinyDB.getInt("cacheSizeId");
}
if (cacheSizeImagesSelectedChoice == 0) {
cacheSizeImagesSelectedChoice = tinyDB.getInt("cacheSizeImagesId");
}
cacheSizeImagesList[cacheSizeImagesSelectedChoice]);
activitySettingsSecurityBinding.switchBiometric.setChecked(
tinyDB.getBoolean("biometricStatus", false));
Boolean.parseBoolean(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_BIOMETRIC_KEY)));
// biometric switcher
activitySettingsSecurityBinding.switchBiometric.setOnCheckedChangeListener(
@ -76,7 +75,8 @@ public class SettingsSecurityActivity extends BaseActivity {
switch (biometricManager.canAuthenticate(
BIOMETRIC_STRONG | DEVICE_CREDENTIAL)) {
case BiometricManager.BIOMETRIC_SUCCESS:
tinyDB.putBoolean("biometricStatus", true);
AppDatabaseSettings.updateSettingsValue(
ctx, "true", AppDatabaseSettings.APP_BIOMETRIC_KEY);
SnackBar.success(
ctx,
findViewById(android.R.id.content),
@ -86,7 +86,8 @@ public class SettingsSecurityActivity extends BaseActivity {
case BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED:
case BiometricManager.BIOMETRIC_ERROR_UNSUPPORTED:
case BiometricManager.BIOMETRIC_STATUS_UNKNOWN:
tinyDB.putBoolean("biometricStatus", false);
AppDatabaseSettings.updateSettingsValue(
ctx, "false", AppDatabaseSettings.APP_BIOMETRIC_KEY);
activitySettingsSecurityBinding.switchBiometric.setChecked(
false);
SnackBar.error(
@ -95,7 +96,8 @@ public class SettingsSecurityActivity extends BaseActivity {
getString(R.string.biometricNotSupported));
break;
case BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE:
tinyDB.putBoolean("biometricStatus", false);
AppDatabaseSettings.updateSettingsValue(
ctx, "false", AppDatabaseSettings.APP_BIOMETRIC_KEY);
activitySettingsSecurityBinding.switchBiometric.setChecked(
false);
SnackBar.error(
@ -104,7 +106,8 @@ public class SettingsSecurityActivity extends BaseActivity {
getString(R.string.biometricNotAvailable));
break;
case BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED:
tinyDB.putBoolean("biometricStatus", false);
AppDatabaseSettings.updateSettingsValue(
ctx, "false", AppDatabaseSettings.APP_BIOMETRIC_KEY);
activitySettingsSecurityBinding.switchBiometric.setChecked(
false);
SnackBar.info(
@ -115,7 +118,8 @@ public class SettingsSecurityActivity extends BaseActivity {
}
} else {
tinyDB.putBoolean("biometricStatus", true);
AppDatabaseSettings.updateSettingsValue(
ctx, "true", AppDatabaseSettings.APP_BIOMETRIC_KEY);
SnackBar.success(
ctx,
findViewById(android.R.id.content),
@ -123,7 +127,8 @@ public class SettingsSecurityActivity extends BaseActivity {
}
} else {
tinyDB.putBoolean("biometricStatus", false);
AppDatabaseSettings.updateSettingsValue(
ctx, "false", AppDatabaseSettings.APP_BIOMETRIC_KEY);
SnackBar.success(
ctx,
findViewById(android.R.id.content),
@ -186,10 +191,16 @@ public class SettingsSecurityActivity extends BaseActivity {
activitySettingsSecurityBinding
.cacheSizeImagesSelected.setText(
cacheSizeImagesList[i]);
tinyDB.putString(
"cacheSizeImagesStr",
cacheSizeImagesList[i]);
tinyDB.putInt("cacheSizeImagesId", i);
AppDatabaseSettings.updateSettingsValue(
ctx,
cacheSizeImagesList[i],
AppDatabaseSettings
.APP_IMAGES_CACHE_SIZE_KEY);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(i),
AppDatabaseSettings.APP_IMAGES_CACHE_KEY);
dialogInterfaceTheme.dismiss();
SnackBar.success(
@ -216,9 +227,16 @@ public class SettingsSecurityActivity extends BaseActivity {
activitySettingsSecurityBinding
.cacheSizeDataSelected.setText(
cacheSizeDataList[i]);
tinyDB.putString(
"cacheSizeStr", cacheSizeDataList[i]);
tinyDB.putInt("cacheSizeId", i);
AppDatabaseSettings.updateSettingsValue(
ctx,
cacheSizeDataList[i],
AppDatabaseSettings
.APP_DATA_CACHE_SIZE_KEY);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(i),
AppDatabaseSettings.APP_DATA_CACHE_KEY);
dialogInterfaceTheme.dismiss();
SnackBar.success(

View File

@ -34,11 +34,10 @@ import org.gitnex.tea4j.v2.apis.custom.OTPApi;
import org.gitnex.tea4j.v2.apis.custom.WebApi;
import org.gitnex.tea4j.v2.auth.ApiKeyAuth;
import org.jetbrains.annotations.NotNull;
import org.mian.gitnex.R;
import org.mian.gitnex.activities.BaseActivity;
import org.mian.gitnex.helpers.AppDatabaseSettings;
import org.mian.gitnex.helpers.AppUtil;
import org.mian.gitnex.helpers.FilesData;
import org.mian.gitnex.helpers.TinyDB;
import org.mian.gitnex.helpers.ssl.MemorizingTrustManager;
import retrofit2.Converter;
import retrofit2.Retrofit;
@ -60,8 +59,6 @@ public class RetrofitClient {
String token,
File cacheFile) {
TinyDB tinyDB = TinyDB.getInstance(context);
// HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
// logging.setLevel(HttpLoggingInterceptor.Level.BODY);
@ -88,11 +85,9 @@ public class RetrofitClient {
int cacheSize =
FilesData.returnOnlyNumberFileSize(
tinyDB.getString(
"cacheSizeStr",
context.getString(
R.string
.cacheSizeDataSelectionSelectedText)))
AppDatabaseSettings.getSettingsValue(
context,
AppDatabaseSettings.APP_DATA_CACHE_SIZE_KEY))
* 1024
* 1024;
Cache cache = new Cache(cacheFile, cacheSize);

View File

@ -40,7 +40,8 @@ public class MainApplication extends Application {
AppDatabaseSettings.initDefaultSettings(getApplicationContext());
tinyDB.putBoolean("biometricLifeCycle", false);
AppDatabaseSettings.updateSettingsValue(
getApplicationContext(), "false", AppDatabaseSettings.APP_BIOMETRIC_LIFE_CYCLE_KEY);
FontsOverride.setDefaultFont(getBaseContext());

View File

@ -52,10 +52,16 @@ public class AppDatabaseSettings {
public static String APP_NOTIFICATIONS_DELAY_DEFAULT = "0";
public static String APP_BIOMETRIC_KEY = "app_biometric";
public static String APP_BIOMETRIC_DEFAULT = "false";
public static String APP_BIOMETRIC_LIFE_CYCLE_KEY = "app_biometric_life_cycle";
public static String APP_BIOMETRIC_LIFE_CYCLE_DEFAULT = "false";
public static String APP_DATA_CACHE_KEY = "app_data_cache";
public static String APP_DATA_CACHE_DEFAULT = "1";
public static String APP_DATA_CACHE_SIZE_KEY = "app_data_cache_size";
public static String APP_DATA_CACHE_SIZE_DEFAULT = "100 MB";
public static String APP_IMAGES_CACHE_KEY = "app_images_cache";
public static String APP_IMAGES_CACHE_DEFAULT = "1";
public static String APP_IMAGES_CACHE_SIZE_KEY = "app_images_cache_size";
public static String APP_IMAGES_CACHE_SIZE_DEFAULT = "100 MB";
public static void initDefaultSettings(Context ctx) {
@ -158,14 +164,32 @@ public class AppDatabaseSettings {
appSettingsApi.insertNewSetting(
APP_BIOMETRIC_KEY, APP_BIOMETRIC_DEFAULT, APP_BIOMETRIC_DEFAULT);
}
if (appSettingsApi.fetchSettingCountByKey(APP_BIOMETRIC_LIFE_CYCLE_KEY) == 0) {
appSettingsApi.insertNewSetting(
APP_BIOMETRIC_LIFE_CYCLE_KEY,
APP_BIOMETRIC_LIFE_CYCLE_DEFAULT,
APP_BIOMETRIC_LIFE_CYCLE_DEFAULT);
}
if (appSettingsApi.fetchSettingCountByKey(APP_DATA_CACHE_KEY) == 0) {
appSettingsApi.insertNewSetting(
APP_DATA_CACHE_KEY, APP_DATA_CACHE_DEFAULT, APP_DATA_CACHE_DEFAULT);
}
if (appSettingsApi.fetchSettingCountByKey(APP_DATA_CACHE_SIZE_KEY) == 0) {
appSettingsApi.insertNewSetting(
APP_DATA_CACHE_SIZE_KEY,
APP_DATA_CACHE_SIZE_DEFAULT,
APP_DATA_CACHE_SIZE_DEFAULT);
}
if (appSettingsApi.fetchSettingCountByKey(APP_IMAGES_CACHE_KEY) == 0) {
appSettingsApi.insertNewSetting(
APP_IMAGES_CACHE_KEY, APP_IMAGES_CACHE_DEFAULT, APP_IMAGES_CACHE_DEFAULT);
}
if (appSettingsApi.fetchSettingCountByKey(APP_IMAGES_CACHE_SIZE_KEY) == 0) {
appSettingsApi.insertNewSetting(
APP_IMAGES_CACHE_SIZE_KEY,
APP_IMAGES_CACHE_SIZE_DEFAULT,
APP_IMAGES_CACHE_SIZE_DEFAULT);
}
}
public static String getSettingsValue(Context ctx, String key) {

View File

@ -15,7 +15,6 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import org.mian.gitnex.R;
/**
* @author opyale
@ -34,14 +33,10 @@ public class PicassoCache implements Cache {
public PicassoCache(File cachePath, Context ctx) throws IOException, ClassNotFoundException {
TinyDB tinyDb = TinyDB.getInstance(ctx);
CACHE_SIZE =
FilesData.returnOnlyNumberFileSize(
tinyDb.getString(
"cacheSizeImagesStr",
ctx.getString(
R.string.cacheSizeImagesSelectionSelectedText)))
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_IMAGES_CACHE_SIZE_KEY))
* 1024
* 1024;
this.cachePath = cachePath;

View File

@ -106,7 +106,7 @@
android:id="@+id/cacheSizeDataSelected"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cacheSizeDataSelectionSelectedText"
android:text="@string/cacheSizeDataDialogHeader"
android:textColor="?attr/selectedTextColor"
android:textSize="@dimen/dimen16sp" />
@ -131,7 +131,7 @@
android:id="@+id/cacheSizeImagesSelected"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cacheSizeImagesSelectionSelectedText"
android:text="@string/cacheSizeImagesDialogHeader"
android:textColor="?attr/selectedTextColor"
android:textSize="@dimen/dimen16sp" />

View File

@ -237,10 +237,8 @@
<string name="settingsFileViewerSourceCodeSelectedText" translatable="false">Sublime</string>
<string name="cacheSizeDataDialogHeader">Data Cache Size</string>
<string name="cacheSizeDataSelectionHeaderText">Data Cache Size</string>
<string name="cacheSizeDataSelectionSelectedText" translatable="false">50 MB</string>
<string name="cacheSizeImagesDialogHeader">Images Cache Size</string>
<string name="cacheSizeImagesSelectionHeaderText">Images Cache Size</string>
<string name="cacheSizeImagesSelectionSelectedText" translatable="false">50 MB</string>
<string name="clearCacheSelectionHeaderText">Clear Cache</string>
<string name="clearCacheSelectionSelectedText" translatable="false">0 B</string>
<string name="clearCacheDialogHeader">Clear Cache?</string>