aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/Settings/NotificationPreferenceFragment.java
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2019-09-29 01:49:30 +0000
committerAlex Ning <chineseperson5@gmail.com>2019-09-29 01:49:30 +0000
commit3227e43fc4bc914f8bde1d06017ae16ced3fe278 (patch)
tree4a73e51c771fee9fdb150965990d4400d493f192 /app/src/main/java/Settings/NotificationPreferenceFragment.java
parent47832e1e91db7e355b8122e1b533966c8df5ddba (diff)
downloadinfinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.tar
infinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.tar.gz
infinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.tar.bz2
infinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.tar.lz
infinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.tar.xz
infinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.tar.zst
infinity-for-reddit-3227e43fc4bc914f8bde1d06017ae16ced3fe278.zip
Change project structures.
Diffstat (limited to 'app/src/main/java/Settings/NotificationPreferenceFragment.java')
-rw-r--r--app/src/main/java/Settings/NotificationPreferenceFragment.java118
1 files changed, 0 insertions, 118 deletions
diff --git a/app/src/main/java/Settings/NotificationPreferenceFragment.java b/app/src/main/java/Settings/NotificationPreferenceFragment.java
deleted file mode 100644
index 4d9051fe..00000000
--- a/app/src/main/java/Settings/NotificationPreferenceFragment.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package Settings;
-
-
-import android.app.Activity;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-
-import androidx.fragment.app.Fragment;
-import androidx.preference.ListPreference;
-import androidx.preference.PreferenceFragmentCompat;
-import androidx.preference.SwitchPreference;
-import androidx.work.Constraints;
-import androidx.work.ExistingPeriodicWorkPolicy;
-import androidx.work.NetworkType;
-import androidx.work.PeriodicWorkRequest;
-import androidx.work.WorkManager;
-
-import java.util.concurrent.TimeUnit;
-
-import javax.inject.Inject;
-
-import ml.docilealligator.infinityforreddit.Infinity;
-import ml.docilealligator.infinityforreddit.PullNotificationWorker;
-import ml.docilealligator.infinityforreddit.R;
-import ml.docilealligator.infinityforreddit.SharedPreferencesUtils;
-
-/**
- * A simple {@link Fragment} subclass.
- */
-public class NotificationPreferenceFragment extends PreferenceFragmentCompat {
-
- private boolean enableNotification;
- private long notificationInterval;
-
- private WorkManager workManager;
-
- @Inject
- SharedPreferences sharedPreferences;
-
- @Override
- public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
- setPreferencesFromResource(R.xml.notification_preferences, rootKey);
-
- Activity activity = getActivity();
-
- if(activity != null) {
- workManager = WorkManager.getInstance(activity);
-
- ((Infinity) activity.getApplication()).getAppComponent().inject(this);
-
- SwitchPreference enableNotificationSwitchPreference = findPreference(SharedPreferencesUtils.ENABLE_NOTIFICATION_KEY);
- ListPreference notificationIntervalListPreference = findPreference(SharedPreferencesUtils.NOTIFICATION_INTERVAL_KEY);
-
- enableNotification = sharedPreferences.getBoolean(SharedPreferencesUtils.ENABLE_NOTIFICATION_KEY, true);
- notificationInterval = Long.parseLong(sharedPreferences.getString(SharedPreferencesUtils.NOTIFICATION_INTERVAL_KEY, "1"));
-
- if(enableNotification) {
- if (notificationIntervalListPreference != null) {
- notificationIntervalListPreference.setVisible(true);
- }
- }
-
- if(enableNotificationSwitchPreference != null) {
- enableNotificationSwitchPreference.setOnPreferenceChangeListener((preference, newValue) -> {
- enableNotification = ((Boolean) newValue);
- if(notificationIntervalListPreference != null) {
- notificationIntervalListPreference.setVisible(enableNotification);
- }
-
- if(enableNotification) {
- Constraints constraints = new Constraints.Builder()
- .setRequiredNetworkType(NetworkType.CONNECTED)
- .build();
-
- PeriodicWorkRequest pullNotificationRequest =
- new PeriodicWorkRequest.Builder(PullNotificationWorker.class,
- notificationInterval, TimeUnit.HOURS)
- .setConstraints(constraints)
- .setInitialDelay(notificationInterval, TimeUnit.HOURS)
- .build();
-
- workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG,
- ExistingPeriodicWorkPolicy.REPLACE, pullNotificationRequest);
- } else {
- workManager.cancelUniqueWork(PullNotificationWorker.WORKER_TAG);
- }
- return true;
- });
- }
-
- if(notificationIntervalListPreference != null) {
- notificationIntervalListPreference.setOnPreferenceChangeListener((preference, newValue) -> {
- notificationInterval = Long.parseLong((String) newValue);
-
- if(enableNotification) {
- Constraints constraints = new Constraints.Builder()
- .setRequiredNetworkType(NetworkType.CONNECTED)
- .build();
-
- PeriodicWorkRequest pullNotificationRequest =
- new PeriodicWorkRequest.Builder(PullNotificationWorker.class,
- notificationInterval, TimeUnit.HOURS)
- .setConstraints(constraints)
- .setInitialDelay(notificationInterval, TimeUnit.HOURS)
- .build();
-
- workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG,
- ExistingPeriodicWorkPolicy.REPLACE, pullNotificationRequest);
- } else {
- workManager.cancelUniqueWork(PullNotificationWorker.WORKER_TAG);
- }
-
- return true;
- });
- }
- }
- }
-}