fix: reply notifs sometimes destroyed too early (#25086)
* fix: reply notifs sometimes destroyed too early * Fix windows build
This commit is contained in:
parent
a23c66e4e1
commit
bea6c9e4e1
4 changed files with 10 additions and 5 deletions
|
@ -43,7 +43,10 @@
|
|||
// https://developer.apple.com/documentation/foundation/nsusernotificationactivationtype?language=objc
|
||||
if (notif.activationType ==
|
||||
NSUserNotificationActivationTypeContentsClicked) {
|
||||
notification->NotificationClicked();
|
||||
// If a notification with a reply button is clicked and the user has not
|
||||
// yet replied, we do not want to destroy the notification.
|
||||
bool should_destroy = ![notif hasReplyButton];
|
||||
notification->NotificationClicked(should_destroy);
|
||||
} else if (notif.activationType ==
|
||||
NSUserNotificationActivationTypeActionButtonClicked) {
|
||||
notification->NotificationActivated();
|
||||
|
|
|
@ -21,10 +21,12 @@ Notification::~Notification() {
|
|||
delegate()->NotificationDestroyed();
|
||||
}
|
||||
|
||||
void Notification::NotificationClicked() {
|
||||
void Notification::NotificationClicked(bool should_destroy) {
|
||||
if (delegate())
|
||||
delegate()->NotificationClick();
|
||||
Destroy();
|
||||
|
||||
if (should_destroy)
|
||||
Destroy();
|
||||
}
|
||||
|
||||
void Notification::NotificationDismissed() {
|
||||
|
|
|
@ -54,7 +54,7 @@ class Notification {
|
|||
virtual void Dismiss() = 0;
|
||||
|
||||
// Should be called by derived classes.
|
||||
void NotificationClicked();
|
||||
void NotificationClicked(bool should_destroy = true);
|
||||
void NotificationDismissed();
|
||||
void NotificationFailed();
|
||||
|
||||
|
|
|
@ -476,7 +476,7 @@ IFACEMETHODIMP ToastEventHandler::Invoke(
|
|||
IInspectable* args) {
|
||||
base::PostTask(
|
||||
FROM_HERE, {content::BrowserThread::UI},
|
||||
base::BindOnce(&Notification::NotificationClicked, notification_));
|
||||
base::BindOnce(&Notification::NotificationClicked, notification_, true));
|
||||
if (IsDebuggingNotifications())
|
||||
LOG(INFO) << "Notification clicked";
|
||||
|
||||
|
|
Loading…
Reference in a new issue