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
path: root/app/src
diff options
context:
space:
mode:
authorstefan-niedermann <info@niedermann.it>2019-12-14 11:43:28 +0300
committerstefan-niedermann <info@niedermann.it>2019-12-27 15:20:40 +0300
commite0b592594fda78c68a7f7b3ebc6f40b14a754798 (patch)
tree8f50b1ee07f0fe0f996a7dc26067566c85084e95 /app/src
parentfee0b66f4b1800248634f95afd56ff4fcc490a7a (diff)
#230 Background synchronization
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java34
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java2
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/settings/SettingsFragment.java3
3 files changed, 22 insertions, 17 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 a3dcc624d..39eb0e628 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
@@ -21,6 +21,9 @@ import it.niedermann.nextcloud.deck.R;
public class SyncWorker extends Worker {
private static final String TAG = "it.niedermann.nextcloud.deck.background_synchronization";
+ private static final Constraints constraints = new Constraints.Builder()
+ .setRequiredNetworkType(NetworkType.CONNECTED)
+ .build();
public SyncWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams);
@@ -29,12 +32,13 @@ public class SyncWorker extends Worker {
@NonNull
@Override
public Result doWork() {
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+ SharedPreferences.Editor sharedPreferencesEditor = sharedPreferences.edit();
SyncManager syncManager = new SyncManager(getApplicationContext(), null);
if (syncManager.hasInternetConnection()) {
DeckLog.log("Starting background synchronization");
- SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit();
- editor.putLong(getApplicationContext().getString(R.string.shared_preference_last_background_sync), System.currentTimeMillis());
- editor.apply();
+ sharedPreferencesEditor.putLong(getApplicationContext().getString(R.string.shared_preference_last_background_sync), System.currentTimeMillis());
+ sharedPreferencesEditor.apply();
boolean success = syncManager.synchronizeEverything();
DeckLog.log("Finishing background synchronization with result " + success);
return success ? Result.failure() : Result.success();
@@ -42,31 +46,33 @@ public class SyncWorker extends Worker {
return Result.success();
}
- public static void register(@NonNull Context context) {
- 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)) {
+ public static void update(@NonNull Context context) {
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+ update(context, sharedPreferences.getString(context.getString(R.string.pref_key_background_sync), context.getString(R.string.pref_value_background_15_minutes)));
+ }
+
+ public static void update(@NonNull Context context, String preferenceValue) {
+ if (context.getString(R.string.pref_value_background_sync_off).equals(preferenceValue)) {
+ deregister(context);
+ } else {
int repeatInterval = 15;
TimeUnit unit = TimeUnit.MINUTES;
- if (context.getString(R.string.pref_value_background_1_hour).equals(backgroundSync)) {
+ if (context.getString(R.string.pref_value_background_1_hour).equals(preferenceValue)) {
repeatInterval = 1;
unit = TimeUnit.HOURS;
- } else if (context.getString(R.string.pref_value_background_6_hours).equals(backgroundSync)) {
+ } else if (context.getString(R.string.pref_value_background_6_hours).equals(preferenceValue)) {
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();
+ DeckLog.log("Registering worker running each " + repeatInterval + " " + unit);
WorkManager.getInstance(context.getApplicationContext()).enqueueUniquePeriodicWork(SyncWorker.TAG, ExistingPeriodicWorkPolicy.REPLACE, work);
- } else {
- deregister(context);
}
}
private static void deregister(@NonNull Context context) {
+ DeckLog.log("Deregistering all workers with tag \"" + TAG + "\"");
WorkManager.getInstance(context.getApplicationContext()).cancelAllWorkByTag(TAG);
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java
index 4bbe77b2e..0126e251e 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java
@@ -171,7 +171,7 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga
editor.remove(sharedPreferenceLastAccount);
editor.commit(); // Has to be done synchronously
} else {
- SyncWorker.register(getApplicationContext());
+ SyncWorker.update(getApplicationContext());
accountIsGettingImportedSnackbar.show();
}
}
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 4925c447d..17d5be87e 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
@@ -52,8 +52,7 @@ public class SettingsFragment extends PreferenceFragment {
final ListPreference backgroundSyncPref = (ListPreference) findPreference(prefKeyBackgroundSync);
backgroundSyncPref.setOnPreferenceChangeListener((Preference preference, Object newValue) -> {
- DeckLog.log("backgroundSync: " + newValue);
- SyncWorker.register(getActivity().getApplicationContext());
+ SyncWorker.update(getActivity().getApplicationContext(), (String) newValue);
return true;
});
}