feat: add object to subscribe notification callback (#19110)
This commit is contained in:
parent
6d34314457
commit
79114ff40a
3 changed files with 18 additions and 4 deletions
|
@ -82,13 +82,15 @@ that contains the user information dictionary sent along with the notification.
|
|||
* `callback` Function
|
||||
* `event` String
|
||||
* `userInfo` Object
|
||||
* `object` String
|
||||
|
||||
Returns `Number` - The ID of this subscription
|
||||
|
||||
Subscribes to native notifications of macOS, `callback` will be called with
|
||||
`callback(event, userInfo)` when the corresponding `event` happens. The
|
||||
`userInfo` is an Object that contains the user information dictionary sent
|
||||
along with the notification.
|
||||
along with the notification. The `object` is the sender of the notification,
|
||||
and only supports `NSString` values for now.
|
||||
|
||||
The `id` of the subscriber is returned, which can be used to unsubscribe the
|
||||
`event`.
|
||||
|
@ -107,6 +109,7 @@ example values of `event` are:
|
|||
* `callback` Function
|
||||
* `event` String
|
||||
* `userInfo` Object
|
||||
* `object` String
|
||||
|
||||
Returns `Number` - The ID of this subscription
|
||||
|
||||
|
@ -119,6 +122,7 @@ This is necessary for events such as `NSUserDefaultsDidChangeNotification`.
|
|||
* `callback` Function
|
||||
* `event` String
|
||||
* `userInfo` Object
|
||||
* `object` String
|
||||
|
||||
Same as `subscribeNotification`, but uses `NSWorkspace.sharedWorkspace.notificationCenter`.
|
||||
This is necessary for events such as `NSWorkspaceDidActivateApplicationNotification`.
|
||||
|
|
|
@ -67,7 +67,8 @@ class SystemPreferences : public mate::EventEmitter<SystemPreferences>
|
|||
#elif defined(OS_MACOSX)
|
||||
using NotificationCallback =
|
||||
base::RepeatingCallback<void(const std::string&,
|
||||
const base::DictionaryValue&)>;
|
||||
const base::DictionaryValue&,
|
||||
const std::string&)>;
|
||||
|
||||
void PostNotification(const std::string& name,
|
||||
const base::DictionaryValue& user_info,
|
||||
|
|
|
@ -210,13 +210,22 @@ int SystemPreferences::DoSubscribeNotification(
|
|||
usingBlock:^(NSNotification* notification) {
|
||||
std::unique_ptr<base::DictionaryValue> user_info =
|
||||
NSDictionaryToDictionaryValue(notification.userInfo);
|
||||
|
||||
std::string object = "";
|
||||
if ([notification.object isKindOfClass:[NSString class]]) {
|
||||
object = base::SysNSStringToUTF8(notification.object);
|
||||
}
|
||||
|
||||
if (user_info) {
|
||||
copied_callback.Run(
|
||||
base::SysNSStringToUTF8(notification.name), *user_info);
|
||||
base::SysNSStringToUTF8(notification.name),
|
||||
*user_info,
|
||||
object);
|
||||
} else {
|
||||
copied_callback.Run(
|
||||
base::SysNSStringToUTF8(notification.name),
|
||||
base::DictionaryValue());
|
||||
base::DictionaryValue(),
|
||||
object);
|
||||
}
|
||||
}];
|
||||
return request_id;
|
||||
|
|
Loading…
Reference in a new issue