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

github.com/stefan-niedermann/nextcloud-notes.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>2021-10-26 12:24:36 +0300
committerStefan Niedermann <info@niedermann.it>2021-10-26 12:24:36 +0300
commit2579a54ed94502bef625f410b501d1538f474fec (patch)
treec3dfd448c75bb91b534e25a43a8a61082d974329 /app/src
parent5e3fdb6f1f16d20d0656653c61cc94bec96ba532 (diff)
Use CountdownLatch for SyncWorker
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java8
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/persistence/SyncWorker.java25
2 files changed, 22 insertions, 11 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java
index 0c2fbb6e..e8f46b10 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java
@@ -210,9 +210,9 @@ public class MainActivity extends LockedActivity implements NoteClickListener, A
}
});
- mainViewModel.hasMultipleAccountsConfigured().observe(this, (hasMultipleAccountsConfigured) -> canMoveNoteToAnotherAccounts = hasMultipleAccountsConfigured);
- mainViewModel.getSyncStatus().observe(this, (syncStatus) -> swipeRefreshLayout.setRefreshing(syncStatus));
- mainViewModel.getSyncErrors().observe(this, (exceptions) -> BrandedSnackbar.make(coordinatorLayout, R.string.error_synchronization, Snackbar.LENGTH_LONG)
+ mainViewModel.hasMultipleAccountsConfigured().observe(this, hasMultipleAccountsConfigured -> canMoveNoteToAnotherAccounts = hasMultipleAccountsConfigured);
+ mainViewModel.getSyncStatus().observe(this, syncStatus -> swipeRefreshLayout.setRefreshing(syncStatus));
+ mainViewModel.getSyncErrors().observe(this, exceptions -> BrandedSnackbar.make(coordinatorLayout, R.string.error_synchronization, Snackbar.LENGTH_LONG)
.setAction(R.string.simple_more, v -> ExceptionDialogFragment.newInstance(exceptions)
.show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName()))
.show());
@@ -666,7 +666,7 @@ public class MainActivity extends LockedActivity implements NoteClickListener, A
AccountImporter.onActivityResult(requestCode, resultCode, data, this, (ssoAccount) -> {
CapabilitiesWorker.update(this);
executor.submit(() -> {
- final var importSnackbar = BrandedSnackbar.make(binding.drawerLayout, R.string.progress_import_indeterminate, Snackbar.LENGTH_INDEFINITE);
+ final var importSnackbar = BrandedSnackbar.make(coordinatorLayout, R.string.progress_import_indeterminate, Snackbar.LENGTH_INDEFINITE);
Log.i(TAG, "Added account: " + "name:" + ssoAccount.name + ", " + ssoAccount.url + ", userId" + ssoAccount.userId);
try {
Log.i(TAG, "Refreshing capabilities for " + ssoAccount.name);
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/persistence/SyncWorker.java b/app/src/main/java/it/niedermann/owncloud/notes/persistence/SyncWorker.java
index ab2a90f6..3816f6b8 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/persistence/SyncWorker.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/persistence/SyncWorker.java
@@ -13,10 +13,9 @@ import androidx.work.Worker;
import androidx.work.WorkerParameters;
import java.util.Objects;
+import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
-import it.niedermann.owncloud.notes.persistence.entity.Account;
-
public class SyncWorker extends Worker {
private static final String TAG = Objects.requireNonNull(SyncWorker.class.getSimpleName());
@@ -34,19 +33,31 @@ public class SyncWorker extends Worker {
@Override
public Result doWork() {
final var repo = NotesRepository.getInstance(getApplicationContext());
- for (final var account : repo.getAccounts()) {
+ final var accounts = repo.getAccounts();
+ final var latch = new CountDownLatch(accounts.size());
+
+ for (final var account : accounts) {
Log.v(TAG, "Starting background synchronization for " + account.getAccountName());
- repo.addCallbackPull(account, () -> Log.v(TAG, "Finished background synchronization for " + account.getAccountName()));
+ repo.addCallbackPull(account, () -> {
+ Log.v(TAG, "Finished background synchronization for " + account.getAccountName());
+ latch.countDown();
+ });
repo.scheduleSync(account, false);
}
- // TODO return result depending on callbackPull
- return Result.success();
+
+ try {
+ latch.await();
+ return Result.success();
+ } catch (InterruptedException e) {
+ return Result.failure();
+ }
}
/**
* Set up sync work to enabled every 15 minutes or just disabled
* https://github.com/stefan-niedermann/nextcloud-notes/issues/1168
- * @param context the application
+ *
+ * @param context the application
* @param backgroundSync the toggle result backgroundSync
*/