diff options
Diffstat (limited to 'app/src/main/java/Settings/NotificationPreferenceFragment.java')
-rw-r--r-- | app/src/main/java/Settings/NotificationPreferenceFragment.java | 67 |
1 files changed, 21 insertions, 46 deletions
diff --git a/app/src/main/java/Settings/NotificationPreferenceFragment.java b/app/src/main/java/Settings/NotificationPreferenceFragment.java index b0ba633b..17a5d07a 100644 --- a/app/src/main/java/Settings/NotificationPreferenceFragment.java +++ b/app/src/main/java/Settings/NotificationPreferenceFragment.java @@ -7,20 +7,14 @@ import android.os.Bundle; import androidx.fragment.app.Fragment; import androidx.preference.ListPreference; -import androidx.preference.Preference; 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.WorkInfo; import androidx.work.WorkManager; -import com.google.common.util.concurrent.ListenableFuture; - -import java.util.List; -import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import javax.inject.Inject; @@ -87,53 +81,34 @@ public class NotificationPreferenceFragment extends PreferenceFragmentCompat { workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG, ExistingPeriodicWorkPolicy.KEEP, pullNotificationRequest); } else { - ListenableFuture<List<WorkInfo>> workInfo = workManager.getWorkInfosByTag(PullNotificationWorker.WORKER_TAG); - try { - List<WorkInfo> list = workInfo.get(); - if(list != null && list.size() != 0) { - workManager.cancelAllWorkByTag(PullNotificationWorker.WORKER_TAG); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } + workManager.cancelAllWorkByTag(PullNotificationWorker.WORKER_TAG); } return true; }); } if(notificationIntervalListPreference != null) { - notificationIntervalListPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - notificationInterval = (Long) newValue; - - if(enableNotification) { - Constraints constraints = new Constraints.Builder() - .setRequiredNetworkType(NetworkType.CONNECTED) - .build(); - - PeriodicWorkRequest pullNotificationRequest = - new PeriodicWorkRequest.Builder(PullNotificationWorker.class, - notificationInterval, TimeUnit.HOURS) - .setConstraints(constraints) - .build(); - - workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG, - ExistingPeriodicWorkPolicy.KEEP, pullNotificationRequest); - } else { - ListenableFuture<List<WorkInfo>> workInfo = workManager.getWorkInfosByTag(PullNotificationWorker.WORKER_TAG); - try { - List<WorkInfo> list = workInfo.get(); - if(list != null && list.size() != 0) { - workManager.cancelAllWorkByTag(PullNotificationWorker.WORKER_TAG); - } - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - - return true; + 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) + .build(); + + workManager.enqueueUniquePeriodicWork(PullNotificationWorker.WORKER_TAG, + ExistingPeriodicWorkPolicy.KEEP, pullNotificationRequest); + } else { + workManager.cancelAllWorkByTag(PullNotificationWorker.WORKER_TAG); } + + return true; }); } } |