diff --git a/Shared/AppNotifications.swift b/Shared/AppNotifications.swift index 7ed361f89..3c69fd31f 100644 --- a/Shared/AppNotifications.swift +++ b/Shared/AppNotifications.swift @@ -11,8 +11,8 @@ import Articles extension Notification.Name { - static let appUnreadCountDidChange = Notification.Name("TimelineSelectionDidChangeNotification") - static let InspectableObjectsDidChange = Notification.Name("TimelineSelectionDidChangeNotification") + static let appUnreadCountDidChange = Notification.Name("AppUnreadCountDidChangeNotification") + static let InspectableObjectsDidChange = Notification.Name("InspectableObjectsDidChangeNotification") static let UserDidAddFeed = Notification.Name("UserDidAddFeedNotification") static let LaunchedFromExternalAction = Notification.Name("LaunchedFromExternalAction") @@ -20,3 +20,32 @@ extension Notification.Name { static let WebInspectorEnabledDidChange = Notification.Name("WebInspectorEnabledDidChange") #endif } + +struct AppNotificationUserInfoKey { + + static let unreadCount = "unreadCount" +} + +extension Notification { + + var unreadCount: Int? { + guard name == .appUnreadCountDidChange else { + assertionFailure("This is to be used only with the .appUnreadCountDidChange notification") + return nil + } + guard let userInfo, let count = userInfo[AppNotificationUserInfoKey.unreadCount] as? Int else { + assertionFailure("Missing unread count in notification") + return nil + } + return count + } +} + +struct AppNotification { + + static func postAppUnreadCountDidChange(from: Any, unreadCount: Int) { + var userInfo = [AnyHashable: Any]() + userInfo[AppNotificationUserInfoKey.unreadCount] = unreadCount + NotificationCenter.default.post(name: .appUnreadCountDidChange, object: from, userInfo: userInfo) + } +}