Define the notification sound name in AppSettings. (#5106)
This commit is contained in:
@@ -16,6 +16,7 @@ import SwiftUI
|
||||
/// Common settings between app and NSE
|
||||
protocol CommonSettingsProtocol: AnyObject {
|
||||
var lastNotificationBootTime: TimeInterval? { get set }
|
||||
var notificationSoundName: RemotePreference<UNNotificationSoundName> { get }
|
||||
|
||||
var logLevel: LogLevel { get }
|
||||
var traceLogPacks: Set<TraceLogPack> { get }
|
||||
@@ -298,6 +299,9 @@ final class AppSettings {
|
||||
@UserPreference(key: UserDefaultsKeys.lastNotificationBootTime, storageType: .userDefaults(store))
|
||||
var lastNotificationBootTime: TimeInterval?
|
||||
|
||||
/// The name of sound played when delivering noisy notifications.
|
||||
var notificationSoundName: RemotePreference<UNNotificationSoundName> = .init(.init("message.caf"))
|
||||
|
||||
// MARK: - Logging
|
||||
|
||||
@UserPreference(key: UserDefaultsKeys.logLevel, defaultValue: LogLevel.info, storageType: .userDefaults(store))
|
||||
|
||||
Submodule Enterprise updated: 8dc7d75b88...0b9ba971fb
@@ -15,6 +15,7 @@ import Version
|
||||
|
||||
struct NotificationContentBuilder {
|
||||
let messageEventStringBuilder: RoomMessageEventStringBuilder
|
||||
let notificationSoundName: UNNotificationSoundName
|
||||
let userSession: NSEUserSessionProtocol
|
||||
|
||||
/// Process the given notification item proxy
|
||||
@@ -48,7 +49,7 @@ struct NotificationContentBuilder {
|
||||
notificationContent.threadIdentifier = threadIdentifier.replacingOccurrences(of: "@", with: "")
|
||||
|
||||
MXLog.info("isNoisy: \(notificationItem.isNoisy)")
|
||||
notificationContent.sound = notificationItem.isNoisy ? UNNotificationSound(named: UNNotificationSoundName(rawValue: "message.caf")) : nil
|
||||
notificationContent.sound = notificationItem.isNoisy ? .init(named: notificationSoundName) : nil
|
||||
|
||||
switch notificationItem.event {
|
||||
case .none:
|
||||
|
||||
@@ -37,6 +37,7 @@ class NotificationHandler {
|
||||
destination: .notification)
|
||||
|
||||
notificationContentBuilder = NotificationContentBuilder(messageEventStringBuilder: eventStringBuilder,
|
||||
notificationSoundName: settings.notificationSoundName.publisher.value,
|
||||
userSession: userSession)
|
||||
}
|
||||
|
||||
|
||||
@@ -231,7 +231,7 @@ class NotificationServiceExtension: UNNotificationServiceExtension {
|
||||
let content = UNMutableNotificationContent()
|
||||
content.body = L10n.notificationReceivedWhileOfflineIos
|
||||
content.badge = originalRequest.content.unreadCount as NSNumber?
|
||||
content.sound = .init(named: .init("message.caf"))
|
||||
content.sound = .init(named: settings.notificationSoundName.publisher.value)
|
||||
|
||||
let request = UNNotificationRequest(identifier: Self.receivedWhileOfflineNotificationID, content: content, trigger: nil)
|
||||
UNUserNotificationCenter.current().add(request)
|
||||
|
||||
@@ -21,6 +21,7 @@ final class NotificationContentBuilderTests: XCTestCase {
|
||||
destination: .notification)
|
||||
mediaProvider = MediaProviderMock(configuration: .init())
|
||||
notificationContentBuilder = NotificationContentBuilder(messageEventStringBuilder: stringBuilder,
|
||||
notificationSoundName: UNNotificationSoundName("message.caf"),
|
||||
userSession: NSEUserSessionMock(.init()))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user