commit 624a7b4e88f9c4c1d3cce4b688943c9b018fb2cb
parent 5b9803d2344403e8778460a2383de18376a5e751
Author: William Casarin <jb55@jb55.com>
Date: Sun, 6 Aug 2023 08:09:23 -0700
notifications: fix rare crash with local notification
This shouldn't happen, but I found a log that crashed here, so we will
fix this anyways.
Changelog-Fixed: Fix rare crash triggered by local notifications
Diffstat:
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/damus/Util/LocalNotification.swift b/damus/Util/LocalNotification.swift
@@ -18,8 +18,11 @@ struct LossyLocalNotification {
]
}
- static func from_user_info(user_info: [AnyHashable: Any]) -> LossyLocalNotification {
- let target_id = MentionRef.from_bech32(str: user_info["id"] as! String)!
+ static func from_user_info(user_info: [AnyHashable: Any]) -> LossyLocalNotification? {
+ guard let id = user_info["id"] as? String,
+ let target_id = MentionRef.from_bech32(str: id) else {
+ return nil
+ }
let typestr = user_info["type"] as! String
let type = LocalNotificationType(rawValue: typestr)!
diff --git a/damus/damusApp.swift b/damus/damusApp.swift
@@ -58,7 +58,9 @@ class AppDelegate: NSObject, UIApplicationDelegate, UNUserNotificationCenterDele
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
- let notification = LossyLocalNotification.from_user_info(user_info: userInfo)
+ guard let notification = LossyLocalNotification.from_user_info(user_info: userInfo) else {
+ return
+ }
notify(.local_notification(notification))
completionHandler()
}