Add test on MentionSuggestionsProcessor and simplify the class.

This commit is contained in:
Benoit Marty 2024-08-21 17:59:01 +02:00
parent 1e30574d44
commit 97b749e2b2
2 changed files with 290 additions and 26 deletions

View file

@ -48,35 +48,29 @@ class MentionSuggestionsProcessor @Inject constructor() {
currentUserId: UserId,
canSendRoomMention: suspend () -> Boolean,
): List<ResolvedSuggestion> {
val members = roomMembersState.roomMembers()
return when {
members.isNullOrEmpty() || suggestion == null -> {
suggestion ?: return emptyList()
return when (suggestion.type) {
SuggestionType.Mention -> {
// Replace suggestions
val members = roomMembersState.roomMembers()
val matchingMembers = getMemberSuggestions(
query = suggestion.text,
roomMembers = members,
currentUserId = currentUserId,
canSendRoomMention = canSendRoomMention()
)
matchingMembers
}
SuggestionType.Room -> {
roomAliasSuggestions
.filter { it.roomAlias.value.contains(suggestion.text, ignoreCase = true) }
.map { ResolvedSuggestion.Alias(it.roomAlias, it.roomSummary) }
}
SuggestionType.Command,
is SuggestionType.Custom -> {
// Clear suggestions
emptyList()
}
else -> {
when (suggestion.type) {
SuggestionType.Mention -> {
// Replace suggestions
val matchingMembers = getMemberSuggestions(
query = suggestion.text,
roomMembers = members,
currentUserId = currentUserId,
canSendRoomMention = canSendRoomMention()
)
matchingMembers
}
SuggestionType.Room -> {
roomAliasSuggestions
.filter { it.roomAlias.value.contains(suggestion.text, ignoreCase = true) }
.map { ResolvedSuggestion.Alias(it.roomAlias, it.roomSummary) }
}
else -> {
// Clear suggestions
emptyList()
}
}
}
}
}