Skip to content

Commit 2579a54

Browse files
Use CountdownLatch for SyncWorker
Signed-off-by: Stefan Niedermann <info@niedermann.it>
1 parent 5e3fdb6 commit 2579a54

2 files changed

Lines changed: 22 additions & 11 deletions

File tree

app/src/main/java/it/niedermann/owncloud/notes/main/MainActivity.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,9 +210,9 @@ protected void onCreate(Bundle savedInstanceState) {
210210
}
211211
});
212212

213-
mainViewModel.hasMultipleAccountsConfigured().observe(this, (hasMultipleAccountsConfigured) -> canMoveNoteToAnotherAccounts = hasMultipleAccountsConfigured);
214-
mainViewModel.getSyncStatus().observe(this, (syncStatus) -> swipeRefreshLayout.setRefreshing(syncStatus));
215-
mainViewModel.getSyncErrors().observe(this, (exceptions) -> BrandedSnackbar.make(coordinatorLayout, R.string.error_synchronization, Snackbar.LENGTH_LONG)
213+
mainViewModel.hasMultipleAccountsConfigured().observe(this, hasMultipleAccountsConfigured -> canMoveNoteToAnotherAccounts = hasMultipleAccountsConfigured);
214+
mainViewModel.getSyncStatus().observe(this, syncStatus -> swipeRefreshLayout.setRefreshing(syncStatus));
215+
mainViewModel.getSyncErrors().observe(this, exceptions -> BrandedSnackbar.make(coordinatorLayout, R.string.error_synchronization, Snackbar.LENGTH_LONG)
216216
.setAction(R.string.simple_more, v -> ExceptionDialogFragment.newInstance(exceptions)
217217
.show(getSupportFragmentManager(), ExceptionDialogFragment.class.getSimpleName()))
218218
.show());
@@ -666,7 +666,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
666666
AccountImporter.onActivityResult(requestCode, resultCode, data, this, (ssoAccount) -> {
667667
CapabilitiesWorker.update(this);
668668
executor.submit(() -> {
669-
final var importSnackbar = BrandedSnackbar.make(binding.drawerLayout, R.string.progress_import_indeterminate, Snackbar.LENGTH_INDEFINITE);
669+
final var importSnackbar = BrandedSnackbar.make(coordinatorLayout, R.string.progress_import_indeterminate, Snackbar.LENGTH_INDEFINITE);
670670
Log.i(TAG, "Added account: " + "name:" + ssoAccount.name + ", " + ssoAccount.url + ", userId" + ssoAccount.userId);
671671
try {
672672
Log.i(TAG, "Refreshing capabilities for " + ssoAccount.name);

app/src/main/java/it/niedermann/owncloud/notes/persistence/SyncWorker.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@
1313
import androidx.work.WorkerParameters;
1414

1515
import java.util.Objects;
16+
import java.util.concurrent.CountDownLatch;
1617
import java.util.concurrent.TimeUnit;
1718

18-
import it.niedermann.owncloud.notes.persistence.entity.Account;
19-
2019
public class SyncWorker extends Worker {
2120

2221
private static final String TAG = Objects.requireNonNull(SyncWorker.class.getSimpleName());
@@ -34,19 +33,31 @@ public SyncWorker(@NonNull Context context, @NonNull WorkerParameters workerPara
3433
@Override
3534
public Result doWork() {
3635
final var repo = NotesRepository.getInstance(getApplicationContext());
37-
for (final var account : repo.getAccounts()) {
36+
final var accounts = repo.getAccounts();
37+
final var latch = new CountDownLatch(accounts.size());
38+
39+
for (final var account : accounts) {
3840
Log.v(TAG, "Starting background synchronization for " + account.getAccountName());
39-
repo.addCallbackPull(account, () -> Log.v(TAG, "Finished background synchronization for " + account.getAccountName()));
41+
repo.addCallbackPull(account, () -> {
42+
Log.v(TAG, "Finished background synchronization for " + account.getAccountName());
43+
latch.countDown();
44+
});
4045
repo.scheduleSync(account, false);
4146
}
42-
// TODO return result depending on callbackPull
43-
return Result.success();
47+
48+
try {
49+
latch.await();
50+
return Result.success();
51+
} catch (InterruptedException e) {
52+
return Result.failure();
53+
}
4454
}
4555

4656
/**
4757
* Set up sync work to enabled every 15 minutes or just disabled
4858
* https://github.com/stefan-niedermann/nextcloud-notes/issues/1168
49-
* @param context the application
59+
*
60+
* @param context the application
5061
* @param backgroundSync the toggle result backgroundSync
5162
*/
5263

0 commit comments

Comments
 (0)