Loading data/src/main/java/com/moez/QKSMS/repository/ConversationRepositoryImpl.kt +6 −0 Original line number Diff line number Diff line Loading @@ -107,13 +107,19 @@ class ConversationRepositoryImpl @Inject constructor( val messagesByConversation = Realm.getDefaultInstance() .where(Message::class.java) .beginGroup() .contains("body", normalizedQuery, Case.INSENSITIVE) .or() .contains("parts.text", normalizedQuery, Case.INSENSITIVE) .endGroup() .findAll() .asSequence() .groupBy { message -> message.threadId } .filter { (threadId, _) -> conversations.firstOrNull { it.id == threadId } != null } .map { (threadId, messages) -> Pair(conversations.first { it.id == threadId }, messages.size) } .map { (conversation, messages) -> SearchResult(normalizedQuery, conversation, messages) } .sortedByDescending { result -> result.messages } .toList() return conversations .filter { conversation -> conversationFilter.filter(conversation, normalizedQuery) } Loading data/src/main/java/com/moez/QKSMS/repository/MessageRepositoryImpl.kt +11 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,17 @@ class MessageRepositoryImpl @Inject constructor( return Realm.getDefaultInstance() .where(Message::class.java) .equalTo("threadId", threadId) .let { if (query.isEmpty()) it else it.contains("body", query, Case.INSENSITIVE) } .let { when (query.isEmpty()) { true -> it false -> it .beginGroup() .contains("body", query, Case.INSENSITIVE) .or() .contains("parts.text", query, Case.INSENSITIVE) .endGroup() } } .sort("date") .findAllAsync() } Loading Loading
data/src/main/java/com/moez/QKSMS/repository/ConversationRepositoryImpl.kt +6 −0 Original line number Diff line number Diff line Loading @@ -107,13 +107,19 @@ class ConversationRepositoryImpl @Inject constructor( val messagesByConversation = Realm.getDefaultInstance() .where(Message::class.java) .beginGroup() .contains("body", normalizedQuery, Case.INSENSITIVE) .or() .contains("parts.text", normalizedQuery, Case.INSENSITIVE) .endGroup() .findAll() .asSequence() .groupBy { message -> message.threadId } .filter { (threadId, _) -> conversations.firstOrNull { it.id == threadId } != null } .map { (threadId, messages) -> Pair(conversations.first { it.id == threadId }, messages.size) } .map { (conversation, messages) -> SearchResult(normalizedQuery, conversation, messages) } .sortedByDescending { result -> result.messages } .toList() return conversations .filter { conversation -> conversationFilter.filter(conversation, normalizedQuery) } Loading
data/src/main/java/com/moez/QKSMS/repository/MessageRepositoryImpl.kt +11 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,17 @@ class MessageRepositoryImpl @Inject constructor( return Realm.getDefaultInstance() .where(Message::class.java) .equalTo("threadId", threadId) .let { if (query.isEmpty()) it else it.contains("body", query, Case.INSENSITIVE) } .let { when (query.isEmpty()) { true -> it false -> it .beginGroup() .contains("body", query, Case.INSENSITIVE) .or() .contains("parts.text", query, Case.INSENSITIVE) .endGroup() } } .sort("date") .findAllAsync() } Loading