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-06 21:11:19 +0300
committerstefan-niedermann <info@niedermann.it>2019-12-27 15:19:26 +0300
commitff46b1b35adbed716a7cc373c55caa3450e31509 (patch)
treef3e7c3077c9c9c17ef4d04a0873ca7300740aef5 /app/src
parent009d8e76e82a5490b826861795f79823ba908ac9 (diff)
Background synchronization using WorkManager
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java11
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java28
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/DrawerActivity.java13
3 files changed, 52 insertions, 0 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
index 01c3ccaef..fea389f7b 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
@@ -74,6 +74,17 @@ public class SyncManager {
new Thread(r).start();
}
+ boolean synchronizeEverything() {
+ // TODO do some magic here, but wait with implementation for PoC
+ try {
+ Thread.sleep(2000);
+ return true;
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+
public void synchronize(IResponseCallback<Boolean> responseCallback) {
if (responseCallback == null ||
responseCallback.getAccount() == null ||
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
new file mode 100644
index 000000000..e3b398e6e
--- /dev/null
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncWorker.java
@@ -0,0 +1,28 @@
+package it.niedermann.nextcloud.deck.persistence.sync;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+import androidx.work.Worker;
+import androidx.work.WorkerParameters;
+
+import it.niedermann.nextcloud.deck.DeckLog;
+
+public class SyncWorker extends Worker {
+
+ public static final String TAG = SyncWorker.class.getSimpleName();
+
+ public SyncWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
+ super(context, workerParams);
+ }
+
+ @NonNull
+ @Override
+ public Result doWork() {
+ SyncManager syncManager = new SyncManager(getApplicationContext(), null);
+ DeckLog.log("Starting background synchronization");
+ boolean success = syncManager.synchronizeEverything();
+ DeckLog.log("Finishing background synchronization with result " + success);
+ return success ? Result.failure() : Result.success();
+ }
+}
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 bc5a68a49..22622899a 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
@@ -31,6 +31,10 @@ import androidx.appcompat.widget.Toolbar;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
+import androidx.work.Constraints;
+import androidx.work.ExistingPeriodicWorkPolicy;
+import androidx.work.PeriodicWorkRequest;
+import androidx.work.WorkManager;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
@@ -49,6 +53,7 @@ import com.nextcloud.android.sso.ui.UiExceptionManager;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import java.util.concurrent.TimeUnit;
import butterknife.BindInt;
import butterknife.BindString;
@@ -63,6 +68,7 @@ import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.ocs.Capabilities;
import it.niedermann.nextcloud.deck.model.ocs.Version;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
+import it.niedermann.nextcloud.deck.persistence.sync.SyncWorker;
import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.WrappedLiveData;
import it.niedermann.nextcloud.deck.ui.board.EditBoardDialogFragment;
import it.niedermann.nextcloud.deck.ui.exception.ExceptionHandler;
@@ -170,6 +176,13 @@ public abstract class DrawerActivity extends AppCompatActivity implements Naviga
editor.remove(sharedPreferenceLastAccount);
editor.commit(); // Has to be done synchronously
} else {
+ Constraints constraints = new Constraints.Builder()
+ .setRequiresCharging(true)
+ .build();
+ PeriodicWorkRequest work = new PeriodicWorkRequest.Builder(SyncWorker.class, 30, TimeUnit.MINUTES)
+ .setConstraints(constraints)
+ .build();
+ WorkManager.getInstance(getApplicationContext()).enqueueUniquePeriodicWork(SyncWorker.TAG, ExistingPeriodicWorkPolicy.KEEP, work);
accountIsGettingImportedSnackbar.show();
}
}