Move general settings to db

This commit is contained in:
M M Arif 2024-03-17 20:27:14 +05:00
parent a10afd7c8e
commit 25446491ac
6 changed files with 117 additions and 124 deletions

View File

@ -23,6 +23,7 @@ import org.mian.gitnex.database.api.BaseApi;
import org.mian.gitnex.database.api.UserAccountsApi;
import org.mian.gitnex.database.models.UserAccount;
import org.mian.gitnex.databinding.ActivityDeeplinksBinding;
import org.mian.gitnex.helpers.AppDatabaseSettings;
import org.mian.gitnex.helpers.AppUtil;
import org.mian.gitnex.helpers.contexts.IssueContext;
import org.mian.gitnex.helpers.contexts.RepositoryContext;
@ -675,7 +676,9 @@ public class DeepLinksActivity extends BaseActivity {
private void showNoActionButtons() {
viewBinding.progressBar.setVisibility(View.GONE);
switch (tinyDB.getInt("defaultScreenId")) {
switch (Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_LINK_HANDLER_KEY))) {
case 1: // repos
mainIntent.putExtra("launchFragmentByLinkHandler", "repos");
ctx.startActivity(mainIntent);
@ -708,7 +711,10 @@ public class DeepLinksActivity extends BaseActivity {
viewBinding.repository.setOnClickListener(
repository -> {
tinyDB.putInt("defaultScreenId", 1);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(1),
AppDatabaseSettings.APP_LINK_HANDLER_KEY);
mainIntent.putExtra("launchFragmentByLinkHandler", "repos");
ctx.startActivity(mainIntent);
finish();
@ -716,7 +722,10 @@ public class DeepLinksActivity extends BaseActivity {
viewBinding.organization.setOnClickListener(
organization -> {
tinyDB.putInt("defaultScreenId", 2);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(2),
AppDatabaseSettings.APP_LINK_HANDLER_KEY);
mainIntent.putExtra("launchFragmentByLinkHandler", "org");
ctx.startActivity(mainIntent);
finish();
@ -724,7 +733,10 @@ public class DeepLinksActivity extends BaseActivity {
viewBinding.notification.setOnClickListener(
notification -> {
tinyDB.putInt("defaultScreenId", 3);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(3),
AppDatabaseSettings.APP_LINK_HANDLER_KEY);
mainIntent.putExtra("launchFragmentByLinkHandler", "notification");
ctx.startActivity(mainIntent);
finish();
@ -732,7 +744,10 @@ public class DeepLinksActivity extends BaseActivity {
viewBinding.explore.setOnClickListener(
explore -> {
tinyDB.putInt("defaultScreenId", 4);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(4),
AppDatabaseSettings.APP_LINK_HANDLER_KEY);
mainIntent.putExtra("launchFragmentByLinkHandler", "explore");
ctx.startActivity(mainIntent);
finish();
@ -740,7 +755,10 @@ public class DeepLinksActivity extends BaseActivity {
viewBinding.launchApp2.setOnClickListener(
launchApp2 -> {
tinyDB.putInt("defaultScreenId", 0);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(0),
AppDatabaseSettings.APP_LINK_HANDLER_KEY);
ctx.startActivity(mainIntent);
finish();
});

View File

@ -10,6 +10,7 @@ import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.activity.OnBackPressedCallback;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
@ -54,6 +55,7 @@ import org.mian.gitnex.fragments.SettingsFragment;
import org.mian.gitnex.fragments.StarredRepositoriesFragment;
import org.mian.gitnex.fragments.WatchedRepositoriesFragment;
import org.mian.gitnex.helpers.AlertDialogs;
import org.mian.gitnex.helpers.AppDatabaseSettings;
import org.mian.gitnex.helpers.AppUtil;
import org.mian.gitnex.helpers.ChangeLog;
import org.mian.gitnex.helpers.RoundedTransformation;
@ -228,7 +230,7 @@ public class MainActivity extends BaseActivity
.observe(
(AppCompatActivity) ctx,
userAccounts -> {
if (userAccounts.size() > 0) {
if (!userAccounts.isEmpty()) {
userAccountsList.clear();
userAccountsList.addAll(userAccounts);
navRecyclerViewUserAccounts.setAdapter(
@ -246,15 +248,15 @@ public class MainActivity extends BaseActivity
String userFullNameNav = getAccount().getFullName();
String userAvatarNav = getAccount().getUserInfo().getAvatarUrl();
if (!userEmailNav.equals("")) {
if (!userEmailNav.isEmpty()) {
userEmail.setText(userEmailNav);
}
if (!userFullNameNav.equals("")) {
if (!userFullNameNav.isEmpty()) {
userFullName.setText(Html.fromHtml(userFullNameNav));
}
if (!userAvatarNav.equals("")) {
if (!userAvatarNav.isEmpty()) {
int avatarRadius = AppUtil.getPixelsFromDensity(ctx, 60);
@ -400,13 +402,9 @@ public class MainActivity extends BaseActivity
if (savedInstanceState == null) {
if (!getAccount().requiresVersion("1.12.3")) {
if (tinyDB.getInt("homeScreenId", 0) == 7) {
tinyDB.putInt("homeScreenId", 0);
}
}
switch (tinyDB.getInt("homeScreenId", 0)) {
switch (Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_HOME_SCREEN_KEY))) {
case 1:
toolbarTitle.setText(getResources().getString(R.string.pageTitleStarredRepos));
getSupportFragmentManager()
@ -566,6 +564,17 @@ public class MainActivity extends BaseActivity
ChangeLog changelogDialog = new ChangeLog(this);
changelogDialog.showDialog();
}
OnBackPressedCallback onBackPressedCallback =
new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
}
}
};
getOnBackPressedDispatcher().addCallback(this, onBackPressedCallback);
}
@Override
@ -639,18 +648,6 @@ public class MainActivity extends BaseActivity
}
}
@Override
public void onBackPressed() {
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

View File

@ -7,6 +7,7 @@ import java.util.Arrays;
import java.util.List;
import org.mian.gitnex.R;
import org.mian.gitnex.databinding.ActivitySettingsGeneralBinding;
import org.mian.gitnex.helpers.AppDatabaseSettings;
import org.mian.gitnex.helpers.SnackBar;
/**
@ -14,11 +15,9 @@ import org.mian.gitnex.helpers.SnackBar;
*/
public class SettingsGeneralActivity extends BaseActivity {
private static int homeScreenSelectedChoice = 0;
private static int defaultLinkHandlerScreenSelectedChoice = 0;
private static int homeScreenSelectedChoice;
private static int defaultLinkHandlerScreenSelectedChoice;
private ActivitySettingsGeneralBinding viewBinding;
private List<String> homeScreenList;
private List<String> linkHandlerDefaultScreen;
@Override
public void onCreate(Bundle savedInstanceState) {
@ -31,73 +30,15 @@ public class SettingsGeneralActivity extends BaseActivity {
viewBinding.topAppBar.setNavigationOnClickListener(v -> finish());
// home screen
String[] appHomeDefaultScreen = getResources().getStringArray(R.array.appDefaultHomeScreen);
String[] appHomeDefaultScreenNew =
String[] appHomeDefaultScreen =
getResources().getStringArray(R.array.appDefaultHomeScreenNew);
if (getAccount().requiresVersion("1.12.3")) {
homeScreenSelectedChoice =
Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_HOME_SCREEN_KEY));
appHomeDefaultScreen = appHomeDefaultScreenNew;
}
homeScreenList = new ArrayList<>(Arrays.asList(appHomeDefaultScreen));
if (!getAccount().requiresVersion("1.14.0")) {
homeScreenList.remove(8);
}
String[] homeScreenArray = new String[homeScreenList.size()];
homeScreenList.toArray(homeScreenArray);
if (homeScreenSelectedChoice == 0) {
homeScreenSelectedChoice = tinyDB.getInt("homeScreenId", 0);
viewBinding.homeScreenSelected.setText(getResources().getString(R.string.navMyRepos));
}
if (homeScreenSelectedChoice == 1) {
viewBinding.homeScreenSelected.setText(
getResources().getString(R.string.pageTitleStarredRepos));
} else if (homeScreenSelectedChoice == 2) {
viewBinding.homeScreenSelected.setText(getResources().getString(R.string.navOrg));
} else if (homeScreenSelectedChoice == 3) {
viewBinding.homeScreenSelected.setText(getResources().getString(R.string.navRepos));
} else if (homeScreenSelectedChoice == 4) {
viewBinding.homeScreenSelected.setText(getResources().getString(R.string.navAccount));
} else if (homeScreenSelectedChoice == 5) {
viewBinding.homeScreenSelected.setText(
getResources().getString(R.string.pageTitleExplore));
} else if (homeScreenSelectedChoice == 6) {
viewBinding.homeScreenSelected.setText(getResources().getString(R.string.titleDrafts));
} else if (homeScreenSelectedChoice == 7) {
viewBinding.homeScreenSelected.setText(
getResources().getString(R.string.pageTitleNotifications));
} else if (homeScreenSelectedChoice == 8) {
viewBinding.homeScreenSelected.setText(getResources().getString(R.string.navMyIssues));
} else if (homeScreenSelectedChoice == 9) {
viewBinding.homeScreenSelected.setText(
getResources().getString(R.string.navMostVisited));
} else if (homeScreenSelectedChoice == 10) {
viewBinding.homeScreenSelected.setText(getResources().getString(R.string.navNotes));
} else if (homeScreenSelectedChoice == 11) {
viewBinding.homeScreenSelected.setText(getResources().getString(R.string.dashboard));
} else if (homeScreenSelectedChoice == 12) {
viewBinding.homeScreenSelected.setText(
getResources().getString(R.string.navWatchedRepositories));
}
viewBinding.homeScreenSelected.setText(appHomeDefaultScreen[homeScreenSelectedChoice]);
viewBinding.homeScreenFrame.setOnClickListener(
setDefaultHomeScreen -> {
@ -106,13 +47,17 @@ public class SettingsGeneralActivity extends BaseActivity {
.setTitle(R.string.settingsHomeScreenSelectorDialogTitle)
.setCancelable(homeScreenSelectedChoice != -1)
.setSingleChoiceItems(
homeScreenArray,
appHomeDefaultScreen,
homeScreenSelectedChoice,
(dialogInterfaceHomeScreen, i) -> {
homeScreenSelectedChoice = i;
viewBinding.homeScreenSelected.setText(
homeScreenArray[i]);
tinyDB.putInt("homeScreenId", i);
appHomeDefaultScreen[i]);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(i),
AppDatabaseSettings.APP_HOME_SCREEN_KEY);
dialogInterfaceHomeScreen.dismiss();
SnackBar.success(
@ -128,12 +73,16 @@ public class SettingsGeneralActivity extends BaseActivity {
// link handler
String[] linkHandlerDefaultScreenList =
getResources().getStringArray(R.array.linkHandlerDefaultScreen);
linkHandlerDefaultScreen = new ArrayList<>(Arrays.asList(linkHandlerDefaultScreenList));
List<String> linkHandlerDefaultScreen =
new ArrayList<>(Arrays.asList(linkHandlerDefaultScreenList));
String[] linksArray = new String[linkHandlerDefaultScreen.size()];
linkHandlerDefaultScreen.toArray(linksArray);
defaultLinkHandlerScreenSelectedChoice = tinyDB.getInt("defaultScreenId");
defaultLinkHandlerScreenSelectedChoice =
Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_LINK_HANDLER_KEY));
viewBinding.generalDeepLinkSelected.setText(
linksArray[defaultLinkHandlerScreenSelectedChoice]);
@ -150,7 +99,11 @@ public class SettingsGeneralActivity extends BaseActivity {
defaultLinkHandlerScreenSelectedChoice = i;
viewBinding.generalDeepLinkSelected.setText(
linksArray[i]);
tinyDB.putInt("defaultScreenId", i);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(i),
AppDatabaseSettings.APP_LINK_HANDLER_KEY);
dialogInterfaceHomeScreen.dismiss();
SnackBar.success(
@ -163,11 +116,17 @@ public class SettingsGeneralActivity extends BaseActivity {
});
// link handler
// custom tabs
viewBinding.switchTabs.setChecked(tinyDB.getBoolean("useCustomTabs"));
// custom tabs switcher
viewBinding.switchTabs.setChecked(
Boolean.parseBoolean(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_CUSTOM_BROWSER_KEY)));
viewBinding.switchTabs.setOnCheckedChangeListener(
(buttonView, isChecked) -> {
tinyDB.putBoolean("useCustomTabs", isChecked);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(isChecked),
AppDatabaseSettings.APP_CUSTOM_BROWSER_KEY);
SnackBar.success(
ctx,
findViewById(android.R.id.content),
@ -175,16 +134,19 @@ public class SettingsGeneralActivity extends BaseActivity {
});
viewBinding.customTabsFrame.setOnClickListener(
v -> viewBinding.switchTabs.setChecked(!viewBinding.switchTabs.isChecked()));
// custom tabs
// custom tabs switcher
// enable drafts deletion
// drafts deletion switcher
viewBinding.commentsDeletionSwitch.setChecked(
tinyDB.getBoolean("draftsCommentsDeletionEnabled", true));
// delete comments on submit switcher
Boolean.parseBoolean(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_DRAFTS_DELETION_KEY)));
viewBinding.commentsDeletionSwitch.setOnCheckedChangeListener(
(buttonView, isChecked) -> {
tinyDB.putBoolean("draftsCommentsDeletionEnabled", isChecked);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(isChecked),
AppDatabaseSettings.APP_DRAFTS_DELETION_KEY);
SnackBar.success(
ctx,
findViewById(android.R.id.content),
@ -194,12 +156,19 @@ public class SettingsGeneralActivity extends BaseActivity {
v ->
viewBinding.commentsDeletionSwitch.setChecked(
!viewBinding.commentsDeletionSwitch.isChecked()));
// enable drafts deletion
// drafts deletion switcher
// crash reports switcher
viewBinding.crashReportsSwitch.setChecked(
Boolean.parseBoolean(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_CRASH_REPORTS_KEY)));
viewBinding.crashReportsSwitch.setOnCheckedChangeListener(
(buttonView, isChecked) -> {
tinyDB.putBoolean("crashReportingEnabled", isChecked);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(isChecked),
AppDatabaseSettings.APP_CRASH_REPORTS_KEY);
SnackBar.success(
ctx,
findViewById(android.R.id.content),

View File

@ -56,7 +56,9 @@ public class MainApplication extends Application {
tinyDB = TinyDB.getInstance(context);
if (tinyDB.getBoolean("crashReportingEnabled", true)) {
if (Boolean.parseBoolean(
AppDatabaseSettings.getSettingsValue(
context, AppDatabaseSettings.APP_CRASH_REPORTS_KEY))) {
CoreConfigurationBuilder ACRABuilder = new CoreConfigurationBuilder();

View File

@ -31,6 +31,7 @@ import org.mian.gitnex.activities.MainActivity;
import org.mian.gitnex.database.api.BaseApi;
import org.mian.gitnex.database.api.DraftsApi;
import org.mian.gitnex.databinding.BottomSheetReplyLayoutBinding;
import org.mian.gitnex.helpers.AppDatabaseSettings;
import org.mian.gitnex.helpers.Constants;
import org.mian.gitnex.helpers.TinyDB;
import org.mian.gitnex.helpers.Toasty;
@ -202,9 +203,12 @@ public class BottomSheetReplyFragment extends BottomSheetDialogFragment {
getString(R.string.commentSuccess));
if (draftId != 0
&& tinyDB.getBoolean(
"draftsCommentsDeletionEnabled",
true)) {
&& Boolean.parseBoolean(
AppDatabaseSettings
.getSettingsValue(
getContext(),
AppDatabaseSettings
.APP_DRAFTS_DELETION_KEY))) {
draftsApi.deleteSingleDraft((int) draftId);
}
@ -238,9 +242,12 @@ public class BottomSheetReplyFragment extends BottomSheetDialogFragment {
if (status == ActionResult.Status.SUCCESS) {
if (draftId != 0
&& tinyDB.getBoolean(
"draftsCommentsDeletionEnabled",
true)) {
&& Boolean.parseBoolean(
AppDatabaseSettings
.getSettingsValue(
getContext(),
AppDatabaseSettings
.APP_DRAFTS_DELETION_KEY))) {
draftsApi.deleteSingleDraft((int) draftId);
}

View File

@ -540,10 +540,10 @@ public class AppUtil {
public static void openUrlInBrowser(Context context, String url) {
TinyDB tinyDB = TinyDB.getInstance(context);
Intent i;
if (tinyDB.getBoolean("useCustomTabs")) {
if (Boolean.parseBoolean(
AppDatabaseSettings.getSettingsValue(
context, AppDatabaseSettings.APP_CUSTOM_BROWSER_KEY))) {
i =
new CustomTabsIntent.Builder()
.setDefaultColorSchemeParams(