NetNewsWire/Shared/AppNotifications.swift

52 lines
1.5 KiB
Swift
Raw Normal View History

2017-05-26 22:10:30 +02:00
//
// AppNotifications.swift
2018-08-29 07:18:24 +02:00
// NetNewsWire
2017-05-26 22:10:30 +02:00
//
// Created by Brent Simmons on 8/30/15.
// Copyright © 2015 Ranchero Software, LLC. All rights reserved.
//
import Foundation
import Articles
2017-05-26 22:10:30 +02:00
extension Notification.Name {
static let appUnreadCountDidChange = Notification.Name("AppUnreadCountDidChangeNotification")
static let InspectableObjectsDidChange = Notification.Name("InspectableObjectsDidChangeNotification")
2017-10-22 00:56:01 +02:00
static let UserDidAddFeed = Notification.Name("UserDidAddFeedNotification")
static let LaunchedFromExternalAction = Notification.Name("LaunchedFromExternalAction")
#if !MAC_APP_STORE
static let WebInspectorEnabledDidChange = Notification.Name("WebInspectorEnabledDidChange")
#endif
2017-05-26 22:10:30 +02:00
}
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)
}
}