From b0f4fc1aeb0a129e46a3f844dbbc3a81204b2291 Mon Sep 17 00:00:00 2001 From: Alfonso Grillo Date: Tue, 3 Oct 2023 15:50:22 +0200 Subject: [PATCH] Improve setDefaultRoomNotificationMode err handling (#1852) --- .../NotificationSettingsProxy.swift | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ElementX/Sources/Services/NotificationSettings/NotificationSettingsProxy.swift b/ElementX/Sources/Services/NotificationSettings/NotificationSettingsProxy.swift index ff511c71f..7840e5a8a 100644 --- a/ElementX/Sources/Services/NotificationSettings/NotificationSettingsProxy.swift +++ b/ElementX/Sources/Services/NotificationSettings/NotificationSettingsProxy.swift @@ -72,8 +72,16 @@ final class NotificationSettingsProxy: NotificationSettingsProxyProtocol { func setDefaultRoomNotificationMode(isEncrypted: Bool, isOneToOne: Bool, mode: RoomNotificationModeProxy) async throws { let backgroundTask = await backgroundTaskService?.startBackgroundTask(withName: "setDefaultRoomNotificationMode") defer { backgroundTask?.stop() } - - try await notificationSettings.setDefaultRoomNotificationMode(isEncrypted: isEncrypted, isOneToOne: isOneToOne, mode: mode.roomNotificationMode) + + do { + try await notificationSettings.setDefaultRoomNotificationMode(isEncrypted: isEncrypted, isOneToOne: isOneToOne, mode: mode.roomNotificationMode) + } catch NotificationSettingsError.RuleNotFound(let ruleId) { + // `setDefaultRoomNotificationMode` updates multiple rules including unstable rules (e.g. the polls push rules defined in the MSC3930) + // since production home servers may not have these rules yet, we drop the RuleNotFound error + MXLog.warning("Unable to find the rule: \(ruleId)") + return + } + await updatedSettings() }