conversations: support searching raw ID and ignore case
Change-Id: Ic1f070930d1b49a09f73f957fd91578d9e142411
diff --git a/ring-android/app/src/main/java/cx/ring/services/ContactServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/ContactServiceImpl.java
index fd51b33..955a29b 100644
--- a/ring-android/app/src/main/java/cx/ring/services/ContactServiceImpl.java
+++ b/ring-android/app/src/main/java/cx/ring/services/ContactServiceImpl.java
@@ -399,7 +399,9 @@
Single<Tuple<String, Object>> profile = callContact.isFromSystem() ? loadSystemContactData(callContact) : loadVCardContactData(callContact, accountId);
return profile
.doOnSuccess(p -> callContact.setProfile(p.first, p.second))
- .doOnError(e -> callContact.setProfile(null, null)).ignoreElement();
+ .doOnError(e -> callContact.setProfile(null, null))
+ .ignoreElement()
+ .onErrorComplete();
}
return Completable.complete();
}
diff --git a/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java b/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java
index 5912128..7ff4ac1 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/facades/ConversationFacade.java
@@ -367,7 +367,15 @@
.toList()));
}
private Single<List<Observable<SmartListViewModel>>> getSearchResults(Account account, String query) {
- if (account.canSearch()) {
+ Uri uri = new Uri(query);
+ if (account.isSip()) {
+ CallContact contact = account.getContactFromCache(uri);
+ return mContactService.loadContactData(contact, account.getAccountID())
+ .andThen(Single.just(Collections.singletonList(Observable.just(new SmartListViewModel(account.getAccountID(), contact, null)))));
+ } else if (uri.isRingId()) {
+ return mContactService.getLoadedContact(account.getAccountID(), account.getContactFromCache(uri))
+ .map(contact -> Collections.singletonList(Observable.just(new SmartListViewModel(account.getAccountID(), contact, null))));
+ } else if (account.canSearch()) {
return mAccountService.searchUser(account.getAccountID(), query)
.map(AccountService.UserSearchResult::getResultsViewModels);
} else {
@@ -397,10 +405,11 @@
for (Conversation conversation : conversations)
newList.add(observeConversation(account, conversation));
} else {
+ String lq = q.toLowerCase();
newList.add(SmartListViewModel.TITLE_CONVERSATIONS);
int nRes = 0;
for (Conversation conversation : conversations) {
- if (conversation.getContact().matches(q)) {
+ if (conversation.getContact().matches(lq)) {
newList.add(observeConversation(account, conversation));
nRes++;
}
diff --git a/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListPresenter.java
index fb3ea56..fb25169 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListPresenter.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/smartlist/SmartListPresenter.java
@@ -200,7 +200,7 @@
}
view.hideNoConversationMessage();
view.updateList(viewModels);
- }));
+ }, e -> Log.w(TAG, "showConversations error ", e)));
}
private void loadConversations() {