mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-21 09:02:44 +02:00
Move room admin condition to be usable in UnitTests and add tests
This commit is contained in:
+10
-1
@@ -28,6 +28,7 @@ struct CommandsProviderCommand {
|
||||
let name: String
|
||||
let parametersFormat: String
|
||||
let description: String
|
||||
let requiresAdminPowerLevel: Bool
|
||||
}
|
||||
|
||||
class CompletionSuggestionUserID: NSObject {
|
||||
@@ -41,6 +42,7 @@ protocol RoomMembersProviderProtocol {
|
||||
}
|
||||
|
||||
protocol CommandsProviderProtocol {
|
||||
var isRoomAdmin: Bool { get }
|
||||
func fetchCommands(_ commands: @escaping ([CommandsProviderCommand]) -> Void)
|
||||
}
|
||||
|
||||
@@ -159,7 +161,7 @@ class CompletionSuggestionService: CompletionSuggestionServiceProtocol {
|
||||
commandProvider.fetchCommands { [weak self] commands in
|
||||
guard let self else { return }
|
||||
|
||||
self.suggestionItems = commands.map { command in
|
||||
self.suggestionItems = commands.filtered(isRoomAdmin: self.commandProvider.isRoomAdmin).map { command in
|
||||
CompletionSuggestionItem.command(value: CompletionSuggestionServiceCommandItem(
|
||||
name: command.name,
|
||||
parametersFormat: command.parametersFormat,
|
||||
@@ -190,6 +192,13 @@ extension Array where Element == RoomMembersProviderMember {
|
||||
}
|
||||
}
|
||||
|
||||
extension Array where Element == CommandsProviderCommand {
|
||||
func filtered(isRoomAdmin: Bool) -> Self {
|
||||
guard !isRoomAdmin else { return self }
|
||||
return filter { !$0.requiresAdminPowerLevel }
|
||||
}
|
||||
}
|
||||
|
||||
private enum SuggestionKey: Character {
|
||||
case at = "@"
|
||||
case slash = "/"
|
||||
|
||||
Reference in New Issue
Block a user