Display the list of rooms with user-defined notification settings (#1535)

This commit is contained in:
Nicolas Mauri
2023-08-22 14:33:39 +02:00
committed by GitHub
parent db1903ec05
commit b1ea23c925
34 changed files with 760 additions and 129 deletions
@@ -0,0 +1,23 @@
//
// Copyright 2023 New Vector Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import Foundation
enum NotificationSettingsChatType {
/// A one-to-one chat is a chat with exactly two active members
case oneToOneChat
case groupChat
}
@@ -59,6 +59,11 @@ final class NotificationSettingsProxy: NotificationSettingsProxyProtocol {
await updatedSettings()
}
func getUserDefinedRoomNotificationMode(roomId: String) async throws -> RoomNotificationModeProxy? {
let roomNotificationMode = try await notificationSettings.getUserDefinedRoomNotificationMode(roomId: roomId)
return roomNotificationMode.flatMap { RoomNotificationModeProxy.from(roomNotificationMode: $0) }
}
func getDefaultRoomNotificationMode(isEncrypted: Bool, isOneToOne: Bool) async -> RoomNotificationModeProxy {
let roomNotificationMode = await notificationSettings.getDefaultRoomNotificationMode(isEncrypted: isEncrypted, isOneToOne: isOneToOne)
return RoomNotificationModeProxy.from(roomNotificationMode: roomNotificationMode)
@@ -128,6 +133,10 @@ final class NotificationSettingsProxy: NotificationSettingsProxyProtocol {
await updatedSettings()
}
func getRoomsWithUserDefinedRules() async throws -> [String] {
await notificationSettings.getRoomsWithUserDefinedRules(enabled: true)
}
// MARK: - Private
func updatedSettings() async {
@@ -28,6 +28,7 @@ protocol NotificationSettingsProxyProtocol {
func getNotificationSettings(roomId: String, isEncrypted: Bool, isOneToOne: Bool) async throws -> RoomNotificationSettingsProxyProtocol
func setNotificationMode(roomId: String, mode: RoomNotificationModeProxy) async throws
func getUserDefinedRoomNotificationMode(roomId: String) async throws -> RoomNotificationModeProxy?
func getDefaultRoomNotificationMode(isEncrypted: Bool, isOneToOne: Bool) async -> RoomNotificationModeProxy
func setDefaultRoomNotificationMode(isEncrypted: Bool, isOneToOne: Bool, mode: RoomNotificationModeProxy) async throws
func restoreDefaultNotificationMode(roomId: String) async throws
@@ -39,4 +40,5 @@ protocol NotificationSettingsProxyProtocol {
func setUserMentionEnabled(enabled: Bool) async throws
func isCallEnabled() async throws -> Bool
func setCallEnabled(enabled: Bool) async throws
func getRoomsWithUserDefinedRules() async throws -> [String]
}