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:
authordesperateCoder <echotodevnull@gmail.com>2020-07-04 18:03:39 +0300
committerdesperateCoder <echotodevnull@gmail.com>2020-07-04 18:03:39 +0300
commitd6bae2df41851b027f17d180fd54bdac497e2209 (patch)
treeb7745f31b270a647e21ea7890d83cd823486205e /app/src/main
parent2bc77a62229e497c472136fc2c4ef4e04b663b9b (diff)
#561: make bulletproof in offline case
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/util/extrawurst/UserSearchLiveData.java65
1 files changed, 35 insertions, 30 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/util/extrawurst/UserSearchLiveData.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/util/extrawurst/UserSearchLiveData.java
index 9f5d49bf5..b44ff29fd 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/util/extrawurst/UserSearchLiveData.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/util/extrawurst/UserSearchLiveData.java
@@ -6,6 +6,7 @@ import java.util.List;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.api.IResponseCallback;
+import it.niedermann.nextcloud.deck.exceptions.OfflineException;
import it.niedermann.nextcloud.deck.model.Account;
import it.niedermann.nextcloud.deck.model.User;
import it.niedermann.nextcloud.deck.model.enums.DBStatus;
@@ -49,39 +50,43 @@ public class UserSearchLiveData extends MediatorLiveData<List<User>> implements
postCurrentFromDB(term);
- Account account = db.getAccountByIdDirectly(accountId);
- server.searchUser(term, new IResponseCallback<OcsUserList>(account) {
- @Override
- public void onResponse(OcsUserList response) {
- if (response == null || response.getUsers().isEmpty()){
- return;
- }
- for (OcsUser user : response.getUsers()) {
- User existingUser = db.getUserByUidDirectly(accountId, user.getId());
- if (existingUser == null) {
- User newUser = new User();
- newUser.setStatus(DBStatus.UP_TO_DATE.getId());
- newUser.setPrimaryKey(user.getId());
- newUser.setUid(user.getId());
- newUser.setDisplayname(user.getDisplayName());
- db.createUser(accountId, newUser);
+ if (server.hasInternetConnection()) {
+ try {
+ Account account = db.getAccountByIdDirectly(accountId);
+ server.searchUser(term, new IResponseCallback<OcsUserList>(account) {
+ @Override
+ public void onResponse(OcsUserList response) {
+ if (response == null || response.getUsers().isEmpty()){
+ return;
+ }
+ for (OcsUser user : response.getUsers()) {
+ User existingUser = db.getUserByUidDirectly(accountId, user.getId());
+ if (existingUser == null) {
+ User newUser = new User();
+ newUser.setStatus(DBStatus.UP_TO_DATE.getId());
+ newUser.setPrimaryKey(user.getId());
+ newUser.setUid(user.getId());
+ newUser.setDisplayname(user.getDisplayName());
+ db.createUser(accountId, newUser);
+ }
+ }
+ if (!term.equals(searchTerm)) {
+ // TODO: remove log when stable
+ DeckLog.info("###DeckUserSearch: skip posting for term " + term + ": current searchTerm is " + searchTerm);
+ return;
+ }
+ postCurrentFromDB(term);
}
- }
- if (!term.equals(searchTerm)) {
- // TODO: remove log when stable
- DeckLog.info("###DeckUserSearch: skip posting for term " + term + ": current searchTerm is " + searchTerm);
- return;
- }
- postCurrentFromDB(term);
- }
- @Override
- public void onError(Throwable throwable) {
- super.onError(throwable);
+ @Override
+ public void onError(Throwable throwable) {
+ super.onError(throwable);
+ }
+ });
+ } catch (OfflineException e) {
+ DeckLog.logError(e);
}
- });
-
-
+ }
}
private void postCurrentFromDB(String term) {