-
Notifications
You must be signed in to change notification settings - Fork 15k
/
notification_presenter.cc
47 lines (37 loc) · 1.46 KB
/
notification_presenter.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Copyright (c) 2015 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#include "shell/browser/notifications/notification_presenter.h"
#include <algorithm>
#include "shell/browser/notifications/notification.h"
namespace electron {
NotificationPresenter::NotificationPresenter() = default;
NotificationPresenter::~NotificationPresenter() {
for (Notification* notification : notifications_)
delete notification;
}
base::WeakPtr<Notification> NotificationPresenter::CreateNotification(
NotificationDelegate* delegate,
const std::string& notification_id) {
Notification* notification = CreateNotificationObject(delegate);
notification->set_notification_id(notification_id);
notifications_.insert(notification);
return notification->GetWeakPtr();
}
void NotificationPresenter::RemoveNotification(Notification* notification) {
notifications_.erase(notification);
delete notification;
}
void NotificationPresenter::CloseNotificationWithId(
const std::string& notification_id) {
auto it = std::find_if(notifications_.begin(), notifications_.end(),
[¬ification_id](const Notification* n) {
return n->notification_id() == notification_id;
});
if (it != notifications_.end()) {
Notification* notification = (*it);
notification->Dismiss();
notifications_.erase(notification);
}
}
} // namespace electron