diff options
author | desperateCoder <echotodevnull@gmail.com> | 2020-07-04 18:03:39 +0300 |
---|---|---|
committer | desperateCoder <echotodevnull@gmail.com> | 2020-07-04 18:03:39 +0300 |
commit | d6bae2df41851b027f17d180fd54bdac497e2209 (patch) | |
tree | b7745f31b270a647e21ea7890d83cd823486205e /app/src/main | |
parent | 2bc77a62229e497c472136fc2c4ef4e04b663b9b (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.java | 65 |
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) { |