2015-12-24 21:55:18 +08:00
|
|
|
// Copyright (c) 2015 GitHub, Inc.
|
|
|
|
// Use of this source code is governed by the MIT license that can be
|
|
|
|
// found in the LICENSE file.
|
|
|
|
|
2017-05-18 15:58:12 -07:00
|
|
|
#include "brightray/browser/mac/notification_center_delegate.h"
|
2015-12-24 21:55:18 +08:00
|
|
|
|
2017-05-18 15:58:12 -07:00
|
|
|
#include "brightray/browser/mac/cocoa_notification.h"
|
|
|
|
#include "brightray/browser/mac/notification_presenter_mac.h"
|
2015-12-24 21:55:18 +08:00
|
|
|
|
2015-12-25 10:16:07 +08:00
|
|
|
@implementation NotificationCenterDelegate
|
|
|
|
|
|
|
|
- (instancetype)initWithPresenter:(brightray::NotificationPresenterMac*)presenter {
|
|
|
|
self = [super init];
|
|
|
|
if (!self)
|
|
|
|
return nil;
|
|
|
|
|
|
|
|
presenter_ = presenter;
|
|
|
|
return self;
|
|
|
|
}
|
2015-12-24 21:55:18 +08:00
|
|
|
|
|
|
|
- (void)userNotificationCenter:(NSUserNotificationCenter*)center
|
|
|
|
didDeliverNotification:(NSUserNotification*)notif {
|
2015-12-25 10:16:07 +08:00
|
|
|
auto notification = presenter_->GetNotification(notif);
|
2017-05-30 19:06:51 +10:00
|
|
|
if (notification)
|
2016-04-15 16:14:13 +09:00
|
|
|
notification->NotificationDisplayed();
|
2015-12-24 21:55:18 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
- (void)userNotificationCenter:(NSUserNotificationCenter*)center
|
|
|
|
didActivateNotification:(NSUserNotification *)notif {
|
2015-12-25 10:16:07 +08:00
|
|
|
auto notification = presenter_->GetNotification(notif);
|
2017-12-13 10:31:59 -08:00
|
|
|
|
|
|
|
if (getenv("ELECTRON_DEBUG_NOTIFICATIONS")) {
|
2017-12-13 14:47:23 -08:00
|
|
|
LOG(INFO) << "Notification activated (" << [notif.identifier UTF8String] << ")";
|
2017-12-13 10:31:59 -08:00
|
|
|
}
|
|
|
|
|
2017-05-29 20:02:33 +10:00
|
|
|
if (notification) {
|
2018-01-15 20:50:03 -08:00
|
|
|
// Ref: https://developer.apple.com/documentation/foundation/nsusernotificationactivationtype?language=objc
|
|
|
|
if (notif.activationType == NSUserNotificationActivationTypeContentsClicked) {
|
|
|
|
notification->NotificationClicked();
|
2017-06-23 20:39:42 +10:00
|
|
|
} else if (notif.activationType == NSUserNotificationActivationTypeActionButtonClicked) {
|
2018-01-16 19:07:54 -08:00
|
|
|
notification->NotificationActivated();
|
2018-01-15 20:50:03 -08:00
|
|
|
} else if (notif.activationType == NSUserNotificationActivationTypeReplied) {
|
|
|
|
notification->NotificationReplied([notif.response.string UTF8String]);
|
|
|
|
} else if (notif.activationType == NSUserNotificationActivationTypeAdditionalActionClicked) {
|
2018-01-16 19:07:54 -08:00
|
|
|
notification->NotificationActivated([notif additionalActivationAction]);
|
2017-05-29 20:02:33 +10:00
|
|
|
}
|
|
|
|
}
|
2015-12-24 21:55:18 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
- (BOOL)userNotificationCenter:(NSUserNotificationCenter*)center
|
|
|
|
shouldPresentNotification:(NSUserNotification*)notification {
|
|
|
|
// Display notifications even if the app is active.
|
|
|
|
return YES;
|
|
|
|
}
|
|
|
|
|
|
|
|
@end
|