diff --git a/atom/browser/api/atom_api_notification.cc b/atom/browser/api/atom_api_notification.cc index 7db7dbf38acc..8aea3d7ba278 100644 --- a/atom/browser/api/atom_api_notification.cc +++ b/atom/browser/api/atom_api_notification.cc @@ -175,8 +175,16 @@ void Notification::NotificationClosed() { Emit("close"); } +void Notification::Close() { + if (notification_) { + notification_->Dismiss(); + notification_.reset(); + } +} + // Showing notifications void Notification::Show() { + Close(); if (presenter_) { notification_ = presenter_->CreateNotification(this); if (notification_) { @@ -207,6 +215,7 @@ void Notification::BuildPrototype(v8::Isolate* isolate, mate::ObjectTemplateBuilder(isolate, prototype->PrototypeTemplate()) .MakeDestroyable() .SetMethod("show", &Notification::Show) + .SetMethod("close", &Notification::Close) .SetProperty("title", &Notification::GetTitle, &Notification::SetTitle) .SetProperty("subtitle", &Notification::GetSubtitle, &Notification::SetSubtitle) diff --git a/atom/browser/api/atom_api_notification.h b/atom/browser/api/atom_api_notification.h index d4679e7c2c90..50197350bc5e 100644 --- a/atom/browser/api/atom_api_notification.h +++ b/atom/browser/api/atom_api_notification.h @@ -45,6 +45,7 @@ class Notification : public mate::TrackableObject, ~Notification() override; void Show(); + void Close(); // Prop Getters base::string16 GetTitle() const; diff --git a/docs/api/notification.md b/docs/api/notification.md index 9c041a76cef1..6c3363a90380 100644 --- a/docs/api/notification.md +++ b/docs/api/notification.md @@ -104,6 +104,13 @@ HTML5 Notification implementation, simply instantiating a `new Notification` doe not immediately show it to the user, you need to call this method before the OS will display it. +If the notification has been shown before, this method will dismiss the previously +shown notification and create a new one with identical properties. + +#### `notification.close()` + +Dismisses the notification. + ### Playing Sounds On macOS, you can specify the name of the sound you'd like to play when the