Use NSUserNotification identifiers to uniquely find the correct notification from CocoaNotification

This commit is contained in:
Samuel Attard 2017-10-07 14:45:46 +11:00
parent 1761d5da06
commit e5d4574d3a
2 changed files with 6 additions and 1 deletions

View file

@ -13,6 +13,8 @@
namespace brightray {
int g_identifier_ = 1;
CocoaNotification::CocoaNotification(NotificationDelegate* delegate,
NotificationPresenter* presenter)
: Notification(delegate, presenter) {
@ -29,6 +31,8 @@ void CocoaNotification::Show(const NotificationOptions& options) {
[notification_ setTitle:base::SysUTF16ToNSString(options.title)];
[notification_ setSubtitle:base::SysUTF16ToNSString(options.subtitle)];
[notification_ setInformativeText:base::SysUTF16ToNSString(options.msg)];
[notification_ setIdentifier:[NSString stringWithFormat:@"%s%d", "ElectronNotification", g_identifier_]];
g_identifier_++;
if ([notification_ respondsToSelector:@selector(setContentImage:)] &&
!options.icon.drawsNothing()) {

View file

@ -18,7 +18,8 @@ CocoaNotification* NotificationPresenterMac::GetNotification(
NSUserNotification* ns_notification) {
for (Notification* notification : notifications()) {
auto native_notification = static_cast<CocoaNotification*>(notification);
if ([native_notification->notification() isEqual:ns_notification])
if ([native_notification->notification().identifier
isEqual:ns_notification.identifier])
return native_notification;
}
return nullptr;