Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstefan-niedermann <info@niedermann.it>2019-12-14 00:20:31 +0300
committerstefan-niedermann <info@niedermann.it>2019-12-14 00:20:31 +0300
commit72fd49a31c2ed298e9f9ee58afcaf8097236dd99 (patch)
treef3f845ed3fcd1d00c2fb33783938332003c9ea56 /app/src/main/java
parent1e90cad2b2a8cfed31eed5e5ce5fe0fcb82f9e74 (diff)
#230 Background synchronization
Make setting to en/disable the background sync (Off, 15 Minutes, 1 Hour, 6 Hours)
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java30
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java11
2 files changed, 33 insertions, 8 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java
index 1f6947461..a3dcc624d 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java
@@ -43,16 +43,30 @@ public class SyncWorker extends Worker {
}
public static void register(@NonNull Context context) {
- Constraints constraints = new Constraints.Builder()
- .setRequiredNetworkType(NetworkType.CONNECTED)
- .build();
- PeriodicWorkRequest work = new PeriodicWorkRequest.Builder(SyncWorker.class, PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS, TimeUnit.MILLISECONDS)
- .setConstraints(constraints)
- .build();
- WorkManager.getInstance(context.getApplicationContext()).enqueueUniquePeriodicWork(SyncWorker.TAG, ExistingPeriodicWorkPolicy.KEEP, work);
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
+ String backgroundSync = sharedPreferences.getString(context.getString(R.string.pref_key_background_sync), context.getString(R.string.pref_value_background_15_minutes));
+ if (!context.getString(R.string.pref_value_background_sync_off).equals(backgroundSync)) {
+ int repeatInterval = 15;
+ TimeUnit unit = TimeUnit.MINUTES;
+ if (context.getString(R.string.pref_value_background_1_hour).equals(backgroundSync)) {
+ repeatInterval = 1;
+ unit = TimeUnit.HOURS;
+ } else if (context.getString(R.string.pref_value_background_6_hours).equals(backgroundSync)) {
+ repeatInterval = 6;
+ unit = TimeUnit.HOURS;
+ }
+ Constraints constraints = new Constraints.Builder()
+ .setRequiredNetworkType(NetworkType.CONNECTED)
+ .build();
+ PeriodicWorkRequest work = new PeriodicWorkRequest.Builder(SyncWorker.class, repeatInterval, unit)
+ .setConstraints(constraints).build();
+ WorkManager.getInstance(context.getApplicationContext()).enqueueUniquePeriodicWork(SyncWorker.TAG, ExistingPeriodicWorkPolicy.REPLACE, work);
+ } else {
+ deregister(context);
+ }
}
- public static void deregister(@NonNull Context context) {
+ private static void deregister(@NonNull Context context) {
WorkManager.getInstance(context.getApplicationContext()).cancelAllWorkByTag(TAG);
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
index bf9e13213..4925c447d 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java
@@ -2,6 +2,7 @@ package it.niedermann.nextcloud.deck.ui.settings;
import android.app.Activity;
import android.os.Bundle;
+import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.SwitchPreference;
@@ -13,6 +14,7 @@ import butterknife.ButterKnife;
import it.niedermann.nextcloud.deck.Application;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
+import it.niedermann.nextcloud.deck.persistence.sync.SyncWorker;
public class SettingsFragment extends PreferenceFragment {
@@ -20,6 +22,8 @@ public class SettingsFragment extends PreferenceFragment {
String prefKeyWifiOnly;
@BindString(R.string.pref_key_dark_theme)
String prefKeyDarkTheme;
+ @BindString(R.string.pref_key_background_sync)
+ String prefKeyBackgroundSync;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
@@ -45,5 +49,12 @@ public class SettingsFragment extends PreferenceFragment {
getActivity().recreate();
return true;
});
+
+ final ListPreference backgroundSyncPref = (ListPreference) findPreference(prefKeyBackgroundSync);
+ backgroundSyncPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> {
+ DeckLog.log("backgroundSync: " + newValue);
+ SyncWorker.register(getActivity().getApplicationContext());
+ return true;
+ });
}
}