Merge pull request #10709 from electron/fix-notification-actions-hs

Fix notification actions not working on High Sierra
This commit is contained in:
Cheng Zhao 2017-10-17 15:18:53 +08:00 committed by GitHub
commit 4dc74776c1
2 changed files with 6 additions and 1 deletions

View file

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

View file

@ -18,7 +18,8 @@ CocoaNotification* NotificationPresenterMac::GetNotification(
NSUserNotification* ns_notification) { NSUserNotification* ns_notification) {
for (Notification* notification : notifications()) { for (Notification* notification : notifications()) {
auto native_notification = static_cast<CocoaNotification*>(notification); 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 native_notification;
} }
return nullptr; return nullptr;