| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  | // Copyright (c) 2014 GitHub, Inc.
 | 
					
						
							|  |  |  | // Use of this source code is governed by the MIT license that can be
 | 
					
						
							|  |  |  | // found in the LICENSE file.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-19 13:46:59 -07:00
										 |  |  | #include "shell/browser/api/electron_api_notification.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-29 21:18:18 +10:00
										 |  |  | #include "base/strings/utf_string_conversions.h"
 | 
					
						
							| 
									
										
										
										
											2023-06-13 14:45:48 -04:00
										 |  |  | #include "base/uuid.h"
 | 
					
						
							| 
									
										
										
										
											2020-03-31 11:42:32 -07:00
										 |  |  | #include "gin/handle.h"
 | 
					
						
							| 
									
										
										
										
											2019-06-19 13:46:59 -07:00
										 |  |  | #include "shell/browser/api/electron_api_menu.h"
 | 
					
						
							|  |  |  | #include "shell/browser/browser.h"
 | 
					
						
							|  |  |  | #include "shell/browser/electron_browser_client.h"
 | 
					
						
							| 
									
										
										
										
											2019-10-02 09:30:55 +09:00
										 |  |  | #include "shell/common/gin_converters/image_converter.h"
 | 
					
						
							|  |  |  | #include "shell/common/gin_helper/dictionary.h"
 | 
					
						
							|  |  |  | #include "shell/common/gin_helper/object_template_builder.h"
 | 
					
						
							| 
									
										
										
										
											2019-06-19 13:46:59 -07:00
										 |  |  | #include "shell/common/node_includes.h"
 | 
					
						
							| 
									
										
										
										
											2017-05-29 21:18:18 +10:00
										 |  |  | #include "url/gurl.h"
 | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-02 09:30:55 +09:00
										 |  |  | namespace gin { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  | template <> | 
					
						
							| 
									
										
										
										
											2018-10-17 20:01:11 +02:00
										 |  |  | struct Converter<electron::NotificationAction> { | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  |   static bool FromV8(v8::Isolate* isolate, | 
					
						
							|  |  |  |                      v8::Local<v8::Value> val, | 
					
						
							| 
									
										
										
										
											2018-10-17 20:01:11 +02:00
										 |  |  |                      electron::NotificationAction* out) { | 
					
						
							| 
									
										
										
										
											2019-10-02 09:30:55 +09:00
										 |  |  |     gin::Dictionary dict(isolate); | 
					
						
							| 
									
										
										
										
											2017-06-23 20:39:42 +10:00
										 |  |  |     if (!ConvertFromV8(isolate, val, &dict)) | 
					
						
							|  |  |  |       return false; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!dict.Get("type", &(out->type))) { | 
					
						
							|  |  |  |       return false; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2017-06-23 21:04:39 +10:00
										 |  |  |     dict.Get("text", &(out->text)); | 
					
						
							| 
									
										
										
										
											2017-06-23 20:39:42 +10:00
										 |  |  |     return true; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   static v8::Local<v8::Value> ToV8(v8::Isolate* isolate, | 
					
						
							| 
									
										
										
										
											2018-10-17 20:01:11 +02:00
										 |  |  |                                    electron::NotificationAction val) { | 
					
						
							| 
									
										
										
										
											2023-08-21 03:43:41 +02:00
										 |  |  |     auto dict = gin::Dictionary::CreateEmpty(isolate); | 
					
						
							| 
									
										
										
										
											2017-06-23 21:04:39 +10:00
										 |  |  |     dict.Set("text", val.text); | 
					
						
							| 
									
										
										
										
											2017-06-23 20:39:42 +10:00
										 |  |  |     dict.Set("type", val.type); | 
					
						
							| 
									
										
										
										
											2019-10-02 09:30:55 +09:00
										 |  |  |     return ConvertToV8(isolate, dict); | 
					
						
							| 
									
										
										
										
											2017-06-23 20:39:42 +10:00
										 |  |  |   } | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2019-10-02 09:30:55 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | }  // namespace gin
 | 
					
						
							| 
									
										
										
										
											2017-06-23 20:39:42 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-29 12:55:47 -07:00
										 |  |  | namespace electron::api { | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-31 11:42:32 -07:00
										 |  |  | gin::WrapperInfo Notification::kWrapperInfo = {gin::kEmbedderNativeGin}; | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-31 11:42:32 -07:00
										 |  |  | Notification::Notification(gin::Arguments* args) { | 
					
						
							| 
									
										
										
										
											2018-10-17 20:01:11 +02:00
										 |  |  |   presenter_ = static_cast<ElectronBrowserClient*>(ElectronBrowserClient::Get()) | 
					
						
							|  |  |  |                    ->GetNotificationPresenter(); | 
					
						
							| 
									
										
										
										
											2017-05-31 16:17:29 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-02 09:30:55 +09:00
										 |  |  |   gin::Dictionary opts(nullptr); | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  |   if (args->GetNext(&opts)) { | 
					
						
							|  |  |  |     opts.Get("title", &title_); | 
					
						
							| 
									
										
										
										
											2017-06-30 15:59:46 +02:00
										 |  |  |     opts.Get("subtitle", &subtitle_); | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  |     opts.Get("body", &body_); | 
					
						
							|  |  |  |     has_icon_ = opts.Get("icon", &icon_); | 
					
						
							| 
									
										
										
										
											2017-04-24 00:18:31 +10:00
										 |  |  |     if (has_icon_) { | 
					
						
							|  |  |  |       opts.Get("icon", &icon_path_); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  |     opts.Get("silent", &silent_); | 
					
						
							|  |  |  |     opts.Get("replyPlaceholder", &reply_placeholder_); | 
					
						
							| 
									
										
										
										
											2019-09-18 22:35:20 -07:00
										 |  |  |     opts.Get("urgency", &urgency_); | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  |     opts.Get("hasReply", &has_reply_); | 
					
						
							| 
									
										
										
										
											2019-10-09 17:22:21 +02:00
										 |  |  |     opts.Get("timeoutType", &timeout_type_); | 
					
						
							| 
									
										
										
										
											2017-06-23 20:39:42 +10:00
										 |  |  |     opts.Get("actions", &actions_); | 
					
						
							| 
									
										
										
										
											2017-08-17 17:28:14 -07:00
										 |  |  |     opts.Get("sound", &sound_); | 
					
						
							| 
									
										
										
										
											2018-01-16 11:26:41 -08:00
										 |  |  |     opts.Get("closeButtonText", &close_button_text_); | 
					
						
							| 
									
										
										
										
											2020-09-29 12:20:10 -07:00
										 |  |  |     opts.Get("toastXml", &toast_xml_); | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-30 19:06:51 +10:00
										 |  |  | Notification::~Notification() { | 
					
						
							| 
									
										
										
										
											2017-05-31 16:17:29 +09:00
										 |  |  |   if (notification_) | 
					
						
							|  |  |  |     notification_->set_delegate(nullptr); | 
					
						
							| 
									
										
										
										
											2017-05-30 19:06:51 +10:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  | // static
 | 
					
						
							| 
									
										
										
										
											2020-03-31 11:42:32 -07:00
										 |  |  | gin::Handle<Notification> Notification::New(gin_helper::ErrorThrower thrower, | 
					
						
							|  |  |  |                                             gin::Arguments* args) { | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  |   if (!Browser::Get()->is_ready()) { | 
					
						
							| 
									
										
										
										
											2019-10-15 10:15:23 +09:00
										 |  |  |     thrower.ThrowError("Cannot create Notification before app is ready"); | 
					
						
							| 
									
										
										
										
											2020-03-31 11:42:32 -07:00
										 |  |  |     return gin::Handle<Notification>(); | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2020-03-31 11:42:32 -07:00
										 |  |  |   return gin::CreateHandle(thrower.isolate(), new Notification(args)); | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Setters
 | 
					
						
							| 
									
										
										
										
											2021-03-16 12:18:45 -04:00
										 |  |  | void Notification::SetTitle(const std::u16string& new_title) { | 
					
						
							| 
									
										
										
										
											2017-04-24 13:07:42 +10:00
										 |  |  |   title_ = new_title; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2017-05-31 16:17:29 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-16 12:18:45 -04:00
										 |  |  | void Notification::SetSubtitle(const std::u16string& new_subtitle) { | 
					
						
							| 
									
										
										
										
											2017-06-30 15:59:46 +02:00
										 |  |  |   subtitle_ = new_subtitle; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-16 12:18:45 -04:00
										 |  |  | void Notification::SetBody(const std::u16string& new_body) { | 
					
						
							| 
									
										
										
										
											2017-04-24 13:07:42 +10:00
										 |  |  |   body_ = new_body; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2017-05-31 16:17:29 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-24 13:07:42 +10:00
										 |  |  | void Notification::SetSilent(bool new_silent) { | 
					
						
							|  |  |  |   silent_ = new_silent; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2017-05-31 16:17:29 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-22 10:48:12 -08:00
										 |  |  | void Notification::SetHasReply(bool new_has_reply) { | 
					
						
							|  |  |  |   has_reply_ = new_has_reply; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-16 12:18:45 -04:00
										 |  |  | void Notification::SetTimeoutType(const std::u16string& new_timeout_type) { | 
					
						
							| 
									
										
										
										
											2019-10-09 17:22:21 +02:00
										 |  |  |   timeout_type_ = new_timeout_type; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-16 12:18:45 -04:00
										 |  |  | void Notification::SetReplyPlaceholder(const std::u16string& new_placeholder) { | 
					
						
							| 
									
										
										
										
											2017-05-30 19:12:36 +10:00
										 |  |  |   reply_placeholder_ = new_placeholder; | 
					
						
							| 
									
										
										
										
											2017-04-24 13:07:42 +10:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2017-05-31 16:17:29 +09:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-16 12:18:45 -04:00
										 |  |  | void Notification::SetSound(const std::u16string& new_sound) { | 
					
						
							| 
									
										
										
										
											2018-01-22 10:48:12 -08:00
										 |  |  |   sound_ = new_sound; | 
					
						
							| 
									
										
										
										
											2017-04-24 13:07:42 +10:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-16 12:18:45 -04:00
										 |  |  | void Notification::SetUrgency(const std::u16string& new_urgency) { | 
					
						
							| 
									
										
										
										
											2019-09-18 22:35:20 -07:00
										 |  |  |   urgency_ = new_urgency; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-23 20:39:42 +10:00
										 |  |  | void Notification::SetActions( | 
					
						
							| 
									
										
										
										
											2018-10-17 20:01:11 +02:00
										 |  |  |     const std::vector<electron::NotificationAction>& actions) { | 
					
						
							| 
									
										
										
										
											2017-06-23 20:39:42 +10:00
										 |  |  |   actions_ = actions; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-16 12:18:45 -04:00
										 |  |  | void Notification::SetCloseButtonText(const std::u16string& text) { | 
					
						
							| 
									
										
										
										
											2018-01-16 11:26:41 -08:00
										 |  |  |   close_button_text_ = text; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-16 12:18:45 -04:00
										 |  |  | void Notification::SetToastXml(const std::u16string& new_toast_xml) { | 
					
						
							| 
									
										
										
										
											2020-09-29 12:20:10 -07:00
										 |  |  |   toast_xml_ = new_toast_xml; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-23 20:39:42 +10:00
										 |  |  | void Notification::NotificationAction(int index) { | 
					
						
							|  |  |  |   Emit("action", index); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-30 19:06:51 +10:00
										 |  |  | void Notification::NotificationClick() { | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  |   Emit("click"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-31 16:17:29 +09:00
										 |  |  | void Notification::NotificationReplied(const std::string& reply) { | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  |   Emit("reply", reply); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-30 19:06:51 +10:00
										 |  |  | void Notification::NotificationDisplayed() { | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  |   Emit("show"); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-29 12:20:10 -07:00
										 |  |  | void Notification::NotificationFailed(const std::string& error) { | 
					
						
							|  |  |  |   Emit("failed", error); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-17 21:55:30 -04:00
										 |  |  | void Notification::NotificationDestroyed() {} | 
					
						
							| 
									
										
										
										
											2017-05-29 21:33:43 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-31 16:17:29 +09:00
										 |  |  | void Notification::NotificationClosed() { | 
					
						
							| 
									
										
										
										
											2017-10-23 22:37:03 -07:00
										 |  |  |   Emit("close"); | 
					
						
							| 
									
										
										
										
											2017-05-31 16:17:29 +09:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2017-05-29 21:18:18 +10:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-27 16:22:21 +13:00
										 |  |  | void Notification::Close() { | 
					
						
							|  |  |  |   if (notification_) { | 
					
						
							| 
									
										
										
										
											2023-10-18 01:33:00 +02:00
										 |  |  |     if (notification_->is_dismissed()) { | 
					
						
							|  |  |  |       notification_->Remove(); | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |       notification_->Dismiss(); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-01-09 09:42:20 -08:00
										 |  |  |     notification_->set_delegate(nullptr); | 
					
						
							| 
									
										
										
										
											2017-10-27 16:22:21 +13:00
										 |  |  |     notification_.reset(); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-29 21:18:18 +10:00
										 |  |  | // Showing notifications
 | 
					
						
							|  |  |  | void Notification::Show() { | 
					
						
							| 
									
										
										
										
											2017-10-27 16:22:21 +13:00
										 |  |  |   Close(); | 
					
						
							| 
									
										
										
										
											2017-05-30 19:06:51 +10:00
										 |  |  |   if (presenter_) { | 
					
						
							| 
									
										
										
										
											2023-06-13 14:45:48 -04:00
										 |  |  |     notification_ = presenter_->CreateNotification( | 
					
						
							|  |  |  |         this, base::Uuid::GenerateRandomV4().AsLowercaseString()); | 
					
						
							| 
									
										
										
										
											2017-05-30 19:06:51 +10:00
										 |  |  |     if (notification_) { | 
					
						
							| 
									
										
										
										
											2018-10-17 20:01:11 +02:00
										 |  |  |       electron::NotificationOptions options; | 
					
						
							| 
									
										
										
										
											2017-06-24 21:03:27 +10:00
										 |  |  |       options.title = title_; | 
					
						
							| 
									
										
										
										
											2017-06-30 15:59:46 +02:00
										 |  |  |       options.subtitle = subtitle_; | 
					
						
							| 
									
										
										
										
											2017-06-24 21:03:27 +10:00
										 |  |  |       options.msg = body_; | 
					
						
							|  |  |  |       options.icon_url = GURL(); | 
					
						
							|  |  |  |       options.icon = icon_.AsBitmap(); | 
					
						
							|  |  |  |       options.silent = silent_; | 
					
						
							|  |  |  |       options.has_reply = has_reply_; | 
					
						
							| 
									
										
										
										
											2019-10-09 17:22:21 +02:00
										 |  |  |       options.timeout_type = timeout_type_; | 
					
						
							| 
									
										
										
										
											2017-06-24 21:03:27 +10:00
										 |  |  |       options.reply_placeholder = reply_placeholder_; | 
					
						
							|  |  |  |       options.actions = actions_; | 
					
						
							| 
									
										
										
										
											2017-08-17 17:28:14 -07:00
										 |  |  |       options.sound = sound_; | 
					
						
							| 
									
										
										
										
											2018-01-16 11:26:41 -08:00
										 |  |  |       options.close_button_text = close_button_text_; | 
					
						
							| 
									
										
										
										
											2019-09-18 22:35:20 -07:00
										 |  |  |       options.urgency = urgency_; | 
					
						
							| 
									
										
										
										
											2020-09-29 12:20:10 -07:00
										 |  |  |       options.toast_xml = toast_xml_; | 
					
						
							| 
									
										
										
										
											2017-06-24 21:03:27 +10:00
										 |  |  |       notification_->Show(options); | 
					
						
							| 
									
										
										
										
											2017-05-30 19:06:51 +10:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2017-05-29 21:18:18 +10:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-30 20:27:24 +10:00
										 |  |  | bool Notification::IsSupported() { | 
					
						
							| 
									
										
										
										
											2018-10-17 20:01:11 +02:00
										 |  |  |   return !!static_cast<ElectronBrowserClient*>(ElectronBrowserClient::Get()) | 
					
						
							|  |  |  |                ->GetNotificationPresenter(); | 
					
						
							| 
									
										
										
										
											2017-05-30 20:27:24 +10:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-06 12:59:49 -08:00
										 |  |  | void Notification::FillObjectTemplate(v8::Isolate* isolate, | 
					
						
							|  |  |  |                                       v8::Local<v8::ObjectTemplate> templ) { | 
					
						
							| 
									
										
										
										
											2023-07-10 11:49:20 +02:00
										 |  |  |   gin::ObjectTemplateBuilder(isolate, GetClassName(), templ) | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  |       .SetMethod("show", &Notification::Show) | 
					
						
							| 
									
										
										
										
											2017-10-27 16:22:21 +13:00
										 |  |  |       .SetMethod("close", &Notification::Close) | 
					
						
							| 
									
										
										
										
											2024-01-29 20:43:28 -06:00
										 |  |  |       .SetProperty("title", &Notification::title, &Notification::SetTitle) | 
					
						
							|  |  |  |       .SetProperty("subtitle", &Notification::subtitle, | 
					
						
							| 
									
										
										
										
											2017-06-30 15:59:46 +02:00
										 |  |  |                    &Notification::SetSubtitle) | 
					
						
							| 
									
										
										
										
											2024-01-29 20:43:28 -06:00
										 |  |  |       .SetProperty("body", &Notification::body, &Notification::SetBody) | 
					
						
							|  |  |  |       .SetProperty("silent", &Notification::is_silent, &Notification::SetSilent) | 
					
						
							|  |  |  |       .SetProperty("hasReply", &Notification::has_reply, | 
					
						
							| 
									
										
										
										
											2017-06-23 20:39:42 +10:00
										 |  |  |                    &Notification::SetHasReply) | 
					
						
							| 
									
										
										
										
											2024-01-29 20:43:28 -06:00
										 |  |  |       .SetProperty("timeoutType", &Notification::timeout_type, | 
					
						
							| 
									
										
										
										
											2019-10-09 17:22:21 +02:00
										 |  |  |                    &Notification::SetTimeoutType) | 
					
						
							| 
									
										
										
										
											2024-01-29 20:43:28 -06:00
										 |  |  |       .SetProperty("replyPlaceholder", &Notification::reply_placeholder, | 
					
						
							| 
									
										
										
										
											2018-01-22 10:48:12 -08:00
										 |  |  |                    &Notification::SetReplyPlaceholder) | 
					
						
							| 
									
										
										
										
											2024-01-29 20:43:28 -06:00
										 |  |  |       .SetProperty("urgency", &Notification::urgency, &Notification::SetUrgency) | 
					
						
							|  |  |  |       .SetProperty("sound", &Notification::sound, &Notification::SetSound) | 
					
						
							|  |  |  |       .SetProperty("actions", &Notification::actions, &Notification::SetActions) | 
					
						
							|  |  |  |       .SetProperty("closeButtonText", &Notification::close_button_text, | 
					
						
							| 
									
										
										
										
											2020-03-31 11:42:32 -07:00
										 |  |  |                    &Notification::SetCloseButtonText) | 
					
						
							| 
									
										
										
										
											2024-01-29 20:43:28 -06:00
										 |  |  |       .SetProperty("toastXml", &Notification::toast_xml, | 
					
						
							| 
									
										
										
										
											2020-09-29 12:20:10 -07:00
										 |  |  |                    &Notification::SetToastXml) | 
					
						
							| 
									
										
										
										
											2020-03-31 11:42:32 -07:00
										 |  |  |       .Build(); | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-10 11:49:20 +02:00
										 |  |  | const char* Notification::GetTypeName() { | 
					
						
							|  |  |  |   return GetClassName(); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-29 12:55:47 -07:00
										 |  |  | }  // namespace electron::api
 | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | using electron::api::Notification; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-04-24 13:07:42 +10:00
										 |  |  | void Initialize(v8::Local<v8::Object> exports, | 
					
						
							|  |  |  |                 v8::Local<v8::Value> unused, | 
					
						
							|  |  |  |                 v8::Local<v8::Context> context, | 
					
						
							|  |  |  |                 void* priv) { | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  |   v8::Isolate* isolate = context->GetIsolate(); | 
					
						
							| 
									
										
										
										
											2019-10-02 09:30:55 +09:00
										 |  |  |   gin_helper::Dictionary dict(isolate, exports); | 
					
						
							| 
									
										
										
										
											2020-03-31 11:42:32 -07:00
										 |  |  |   dict.Set("Notification", Notification::GetConstructor(context)); | 
					
						
							| 
									
										
										
										
											2017-05-30 20:27:24 +10:00
										 |  |  |   dict.SetMethod("isSupported", &Notification::IsSupported); | 
					
						
							| 
									
										
										
										
											2017-04-23 22:16:19 +10:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }  // namespace
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-09 02:31:38 +01:00
										 |  |  | NODE_LINKED_BINDING_CONTEXT_AWARE(electron_browser_notification, Initialize) |