Move notification settings to db

This commit is contained in:
M M Arif 2024-03-17 17:22:00 +05:00
parent 19d13c315b
commit 758c863622
3 changed files with 55 additions and 17 deletions

View File

@ -6,6 +6,7 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import org.mian.gitnex.R;
import org.mian.gitnex.databinding.ActivitySettingsNotificationsBinding;
import org.mian.gitnex.fragments.SettingsFragment;
import org.mian.gitnex.helpers.AppDatabaseSettings;
import org.mian.gitnex.helpers.AppUtil;
import org.mian.gitnex.helpers.SnackBar;
import org.mian.gitnex.notifications.Notifications;
@ -31,7 +32,9 @@ public class SettingsNotificationsActivity extends BaseActivity {
viewBinding.topAppBar.setNavigationOnClickListener(v -> finish());
viewBinding.enableNotificationsMode.setChecked(
tinyDB.getBoolean("notificationsEnabled", true));
Boolean.parseBoolean(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_NOTIFICATIONS_KEY)));
if (!viewBinding.enableNotificationsMode.isChecked()) {
AppUtil.setMultiVisibility(View.GONE, viewBinding.pollingDelayFrame);
@ -39,7 +42,10 @@ public class SettingsNotificationsActivity extends BaseActivity {
viewBinding.enableNotificationsMode.setOnCheckedChangeListener(
(buttonView, isChecked) -> {
tinyDB.putBoolean("notificationsEnabled", isChecked);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(isChecked),
AppDatabaseSettings.APP_NOTIFICATIONS_KEY);
if (isChecked) {
Notifications.startWorker(ctx);
@ -61,7 +67,10 @@ public class SettingsNotificationsActivity extends BaseActivity {
// polling delay
pollingDelayList = getResources().getStringArray(R.array.notificationsPollingDelay);
pollingDelayListSelectedChoice = tinyDB.getInt("notificationsPollingDelayId");
pollingDelayListSelectedChoice =
Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
ctx, AppDatabaseSettings.APP_NOTIFICATIONS_DELAY_KEY));
viewBinding.pollingDelaySelected.setText(pollingDelayList[pollingDelayListSelectedChoice]);
viewBinding.pollingDelayFrame.setOnClickListener(
@ -77,7 +86,12 @@ public class SettingsNotificationsActivity extends BaseActivity {
viewBinding.pollingDelaySelected.setText(
pollingDelayList[
pollingDelayListSelectedChoice]);
tinyDB.putInt("notificationsPollingDelayId", i);
AppDatabaseSettings.updateSettingsValue(
ctx,
String.valueOf(i),
AppDatabaseSettings
.APP_NOTIFICATIONS_DELAY_KEY);
Notifications.stopWorker(ctx);
Notifications.startWorker(ctx);

View File

@ -16,6 +16,7 @@ import androidx.work.WorkManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.util.concurrent.TimeUnit;
import org.mian.gitnex.R;
import org.mian.gitnex.helpers.AppDatabaseSettings;
import org.mian.gitnex.helpers.Constants;
import org.mian.gitnex.helpers.TinyDB;
@ -72,22 +73,34 @@ public class Notifications {
public static void startWorker(Context context) {
TinyDB tinyDB = TinyDB.getInstance(context);
int delay;
if (tinyDB.getInt("notificationsPollingDelayId") == 0) {
if (Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
context, AppDatabaseSettings.APP_NOTIFICATIONS_DELAY_KEY))
== 0) {
delay = 15;
} else if (tinyDB.getInt("notificationsPollingDelayId") == 1) {
} else if (Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
context, AppDatabaseSettings.APP_NOTIFICATIONS_DELAY_KEY))
== 1) {
delay = 30;
} else if (tinyDB.getInt("notificationsPollingDelayId") == 2) {
} else if (Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
context, AppDatabaseSettings.APP_NOTIFICATIONS_DELAY_KEY))
== 2) {
delay = 45;
} else if (tinyDB.getInt("notificationsPollingDelayId") == 3) {
} else if (Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
context, AppDatabaseSettings.APP_NOTIFICATIONS_DELAY_KEY))
== 3) {
delay = 60;
} else {
delay = Constants.defaultPollingDelay;
}
if (tinyDB.getBoolean("notificationsEnabled", true)) {
if (Boolean.parseBoolean(
AppDatabaseSettings.getSettingsValue(
context, AppDatabaseSettings.APP_NOTIFICATIONS_KEY))) {
if (!NotificationManagerCompat.from(context).areNotificationsEnabled()) {
MaterialAlertDialogBuilder materialAlertDialogBuilder =

View File

@ -28,8 +28,8 @@ import org.mian.gitnex.clients.RetrofitClient;
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.helpers.AppDatabaseSettings;
import org.mian.gitnex.helpers.Constants;
import org.mian.gitnex.helpers.TinyDB;
import org.mian.gitnex.helpers.Version;
import retrofit2.Call;
import retrofit2.Response;
@ -49,18 +49,29 @@ public class NotificationsWorker extends Worker {
UserAccountsApi userAccountsApi = BaseApi.getInstance(context, UserAccountsApi.class);
this.context = context;
TinyDB tinyDB = TinyDB.getInstance(context);
assert userAccountsApi != null;
this.userAccounts = new HashMap<>(userAccountsApi.getCount());
int delay;
if (tinyDB.getInt("notificationsPollingDelayId") == 0) {
if (Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
context, AppDatabaseSettings.APP_NOTIFICATIONS_DELAY_KEY))
== 0) {
delay = 15;
} else if (tinyDB.getInt("notificationsPollingDelayId") == 1) {
} else if (Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
context, AppDatabaseSettings.APP_NOTIFICATIONS_DELAY_KEY))
== 1) {
delay = 30;
} else if (tinyDB.getInt("notificationsPollingDelayId") == 2) {
} else if (Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
context, AppDatabaseSettings.APP_NOTIFICATIONS_DELAY_KEY))
== 2) {
delay = 45;
} else if (tinyDB.getInt("notificationsPollingDelayId") == 3) {
} else if (Integer.parseInt(
AppDatabaseSettings.getSettingsValue(
context, AppDatabaseSettings.APP_NOTIFICATIONS_DELAY_KEY))
== 3) {
delay = 60;
} else {
delay = Constants.defaultPollingDelay;