-
-
Save JaleelNazir/ce57937472638c42ef566ec6c556a1d6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protocol NotificationType { | |
var name: Notification.Name { get } | |
static var name: Notification.Name { get } | |
var userInfo: [AnyHashable : Any] { get } | |
init?(notification: Notification?) | |
} | |
struct Notifications { } | |
extension NotificationCenter { | |
func post(_ notification: NotificationType, object: Any? = nil) { | |
post(name: notification.name, object: object, userInfo: notification.userInfo) | |
} | |
func addObserver<T:NotificationType>(forType type: T.Type, object obj: Any? = nil, queue: OperationQueue? = nil, using block: @escaping (T?) -> Swift.Void) -> NSObjectProtocol { | |
return addObserver(forName: type.name, object: obj, queue: queue) { block( type.init(notification: $0) ) } | |
} | |
} | |
extension Notifications { | |
struct openUserProfile: NotificationType { | |
var userId:String | |
static var name: Notification.Name { | |
return Notification.Name("LP_openUserProfile") | |
} | |
var name:Notification.Name { | |
return openUserProfile.name | |
} | |
var userInfo: [AnyHashable : Any] { | |
return [ "userId" : userId] | |
} | |
init(userId: String) { | |
self.userId = userId | |
} | |
init?(notification: Notification?) { | |
guard | |
let name = notification?.name, | |
let userId = notification?.userInfo?["userId"] as? String, | |
name == openUserProfile.name | |
else { return nil } | |
self.userId = userId | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment