Merge pull request #497 from Haocen/patch-3

QoL: Native notification improvements
This commit is contained in:
RobinLinus 2022-10-05 16:53:22 +02:00 committed by GitHub
commit 112bed3730
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 13 deletions

View File

@ -512,6 +512,10 @@ class Events {
static on(type, callback) {
return window.addEventListener(type, callback, false);
}
static off(type, callback) {
return window.removeEventListener(type, callback, false);
}
}

View File

@ -420,7 +420,7 @@ class Notifications {
});
}
_notify(message, body, closeTimeout = 20000) {
_notify(message, body) {
const config = {
body: body,
icon: '/images/logo_transparent_128x128.png',
@ -435,27 +435,35 @@ class Notifications {
}
// Notification is persistent on Android. We have to close it manually
if (closeTimeout) {
setTimeout(_ => notification.close(), closeTimeout);
}
const visibilitychangeHandler = () => {
if (document.visibilityState === 'visible') {
notification.close();
Events.off('visibilitychange', visibilitychangeHandler);
}
};
Events.on('visibilitychange', visibilitychangeHandler);
return notification;
}
_messageNotification(message) {
if (isURL(message)) {
const notification = this._notify(message, 'Click to open link');
this._bind(notification, e => window.open(message, '_blank', null, true));
} else {
const notification = this._notify(message, 'Click to copy text');
this._bind(notification, e => this._copyText(message, notification));
if (document.visibilityState !== 'visible') {
if (isURL(message)) {
const notification = this._notify(message, 'Click to open link');
this._bind(notification, e => window.open(message, '_blank', null, true));
} else {
const notification = this._notify(message, 'Click to copy text');
this._bind(notification, e => this._copyText(message, notification));
}
}
}
_downloadNotification(message) {
const notification = this._notify(message, 'Click to download');
if (!window.isDownloadSupported) return;
this._bind(notification, e => this._download(notification));
if (document.visibilityState !== 'visible') {
const notification = this._notify(message, 'Click to download');
if (!window.isDownloadSupported) return;
this._bind(notification, e => this._download(notification));
}
}
_download(notification) {