Display the notification mode for each room in the the room list (#1595)

Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com>
This commit is contained in:
Nicolas Mauri
2023-08-31 13:15:38 +02:00
committed by GitHub
parent f0fad25d09
commit 3ab7b1b1c7
17 changed files with 145 additions and 63 deletions
@@ -36,6 +36,8 @@ class ClientProxy: ClientProxyProtocol {
var roomSummaryProvider: RoomSummaryProviderProtocol?
var inviteSummaryProvider: RoomSummaryProviderProtocol?
var notificationSettings: NotificationSettingsProxyProtocol
private let roomListRecencyOrderingAllowedEventTypes = ["m.room.message", "m.room.encrypted", "m.sticker"]
@@ -66,6 +68,9 @@ class ClientProxy: ClientProxyProtocol {
clientQueue = .init(label: "ClientProxyQueue", attributes: .concurrent)
mediaLoader = MediaLoader(client: client, clientQueue: clientQueue)
notificationSettings = NotificationSettingsProxy(notificationSettings: client.getNotificationSettings(),
backgroundTaskService: backgroundTaskService)
client.setDelegate(delegate: ClientDelegateWrapper { [weak self] isSoftLogout in
self?.callbacks.send(.receivedAuthError(isSoftLogout: isSoftLogout))
@@ -348,13 +353,6 @@ class ClientProxy: ClientProxyProtocol {
}
}
func notificationSettings() async -> NotificationSettingsProxyProtocol {
await Task.dispatch(on: clientQueue) {
NotificationSettingsProxy(notificationSettings: self.client.getNotificationSettings(),
backgroundTaskService: self.backgroundTaskService)
}
}
// MARK: Private
private func restartSync(delay: Duration = .zero) {
@@ -405,12 +403,14 @@ class ClientProxy: ClientProxyProtocol {
eventStringBuilder: eventStringBuilder,
name: "AllRooms",
appSettings: appSettings,
notificationSettings: notificationSettings,
backgroundTaskService: backgroundTaskService)
try await roomSummaryProvider?.setRoomList(roomListService.allRooms())
inviteSummaryProvider = RoomSummaryProvider(roomListService: roomListService,
eventStringBuilder: eventStringBuilder,
name: "Invites",
appSettings: appSettings,
notificationSettings: notificationSettings,
backgroundTaskService: backgroundTaskService)
self.syncService = syncService
@@ -83,6 +83,8 @@ protocol ClientProxyProtocol: AnyObject, MediaLoaderProtocol {
var inviteSummaryProvider: RoomSummaryProviderProtocol? { get }
var notificationSettings: NotificationSettingsProxyProtocol { get }
func startSync()
func stopSync()
@@ -114,6 +116,4 @@ protocol ClientProxyProtocol: AnyObject, MediaLoaderProtocol {
func searchUsers(searchTerm: String, limit: UInt) async -> Result<SearchUsersResultsProxy, ClientProxyError>
func profile(for userID: String) async -> Result<UserProfileProxy, ClientProxyError>
func notificationSettings() async -> NotificationSettingsProxyProtocol
}
@@ -32,6 +32,8 @@ class MockClientProxy: ClientProxyProtocol {
var inviteSummaryProvider: RoomSummaryProviderProtocol? = MockRoomSummaryProvider()
var avatarURLPublisher: AnyPublisher<URL?, Never> { Empty().eraseToAnyPublisher() }
var notificationSettings: NotificationSettingsProxyProtocol = NotificationSettingsProxyMock(with: .init())
init(userID: String, deviceID: String? = nil, accountURL: URL? = nil, roomSummaryProvider: RoomSummaryProviderProtocol? = MockRoomSummaryProvider()) {
self.userID = userID
@@ -141,13 +143,4 @@ class MockClientProxy: ClientProxyProtocol {
getProfileCalled = true
return getProfileResult
}
var notificationSettingsResult: NotificationSettingsProxyProtocol?
func notificationSettings() -> NotificationSettingsProxyProtocol {
if let notificationSettingsResult {
return notificationSettingsResult
} else {
return NotificationSettingsProxyMock(with: .init())
}
}
}