Add user suggestions for @room. (#7453)

This commit is contained in:
Doug
2023-03-28 14:03:39 +01:00
committed by GitHub
parent 760888b8ed
commit 669481d907
8 changed files with 152 additions and 79 deletions
@@ -23,7 +23,13 @@ struct RoomMembersProviderMember {
var avatarUrl: String
}
class UserSuggestionID: NSObject {
/// A special case added for suggesting `@room` mentions.
@objc static let room = "@room"
}
protocol RoomMembersProviderProtocol {
var canMentionRoom: Bool { get }
func fetchMembers(_ members: @escaping ([RoomMembersProviderMember]) -> Void)
}
@@ -100,7 +106,7 @@ class UserSuggestionService: UserSuggestionServiceProtocol {
return
}
self.suggestionItems = members.map { member in
self.suggestionItems = members.withRoom(self.roomMemberProvider.canMentionRoom).map { member in
UserSuggestionServiceItem(userId: member.userId, displayName: member.displayName, avatarUrl: member.avatarUrl)
}
@@ -113,3 +119,11 @@ class UserSuggestionService: UserSuggestionServiceProtocol {
}
}
}
extension Array where Element == RoomMembersProviderMember {
/// Returns the array with an additional member that represents an `@room` mention.
func withRoom(_ canMentionRoom: Bool) -> Self {
guard canMentionRoom else { return self }
return self + [RoomMembersProviderMember(userId: UserSuggestionID.room, displayName: "Everyone", avatarUrl: "")]
}
}