mirror of
https://github.com/element-hq/element-x-ios.git
synced 2025-03-10 21:39:12 +00:00
Use the unread count to update the application badge on all flow branches
This commit is contained in:
parent
4a56796d45
commit
ab1c7c1c9a
@ -88,7 +88,7 @@ class NotificationServiceExtension: UNNotificationServiceExtension {
|
|||||||
// Called just before the extension will be terminated by the system.
|
// Called just before the extension will be terminated by the system.
|
||||||
// Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
|
// Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
|
||||||
MXLog.warning("\(tag) serviceExtensionTimeWillExpire")
|
MXLog.warning("\(tag) serviceExtensionTimeWillExpire")
|
||||||
notify()
|
notify(unreadCount: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func run(with credentials: KeychainCredentials,
|
private func run(with credentials: KeychainCredentials,
|
||||||
@ -108,7 +108,7 @@ class NotificationServiceExtension: UNNotificationServiceExtension {
|
|||||||
|
|
||||||
guard let itemProxy = await userSession.notificationItemProxy(roomID: roomId, eventID: eventId) else {
|
guard let itemProxy = await userSession.notificationItemProxy(roomID: roomId, eventID: eventId) else {
|
||||||
MXLog.info("\(tag) no notification for the event, discard")
|
MXLog.info("\(tag) no notification for the event, discard")
|
||||||
return discard()
|
return discard(unreadCount: unreadCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
// After the first processing, update the modified content
|
// After the first processing, update the modified content
|
||||||
@ -118,7 +118,7 @@ class NotificationServiceExtension: UNNotificationServiceExtension {
|
|||||||
MXLog.info("\(tag) no media needed")
|
MXLog.info("\(tag) no media needed")
|
||||||
|
|
||||||
// We've processed the item and no media operations needed, so no need to go further
|
// We've processed the item and no media operations needed, so no need to go further
|
||||||
return notify()
|
return notify(unreadCount: unreadCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
MXLog.info("\(tag) process with media")
|
MXLog.info("\(tag) process with media")
|
||||||
@ -130,34 +130,39 @@ class NotificationServiceExtension: UNNotificationServiceExtension {
|
|||||||
}
|
}
|
||||||
// We still notify, but without the media attachment if it fails to load
|
// We still notify, but without the media attachment if it fails to load
|
||||||
|
|
||||||
// Finally update the app badge
|
return notify(unreadCount: unreadCount)
|
||||||
if let unreadCount {
|
|
||||||
modifiedContent?.badge = NSNumber(value: unreadCount)
|
|
||||||
}
|
|
||||||
|
|
||||||
return notify()
|
|
||||||
} catch {
|
} catch {
|
||||||
MXLog.error("NSE run error: \(error)")
|
MXLog.error("NSE run error: \(error)")
|
||||||
return discard()
|
return discard(unreadCount: unreadCount)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func notify() {
|
private func notify(unreadCount: Int?) {
|
||||||
MXLog.info("\(tag) notify")
|
MXLog.info("\(tag) notify")
|
||||||
|
|
||||||
guard let modifiedContent else {
|
guard let modifiedContent else {
|
||||||
MXLog.info("\(tag) notify: no modified content")
|
MXLog.info("\(tag) notify: no modified content")
|
||||||
return discard()
|
return discard(unreadCount: unreadCount)
|
||||||
|
}
|
||||||
|
|
||||||
|
if let unreadCount {
|
||||||
|
modifiedContent.badge = NSNumber(value: unreadCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
handler?(modifiedContent)
|
handler?(modifiedContent)
|
||||||
cleanUp()
|
cleanUp()
|
||||||
}
|
}
|
||||||
|
|
||||||
private func discard() {
|
private func discard(unreadCount: Int?) {
|
||||||
MXLog.info("\(tag) discard")
|
MXLog.info("\(tag) discard")
|
||||||
|
|
||||||
|
let content = UNMutableNotificationContent()
|
||||||
|
|
||||||
|
if let unreadCount {
|
||||||
|
content.badge = NSNumber(value: unreadCount)
|
||||||
|
}
|
||||||
|
|
||||||
handler?(UNMutableNotificationContent())
|
handler?(content)
|
||||||
cleanUp()
|
cleanUp()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user