Move notification settings to db
This commit is contained in:
parent
19d13c315b
commit
758c863622
|
@ -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);
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue