Spaces:
Runtime error
Runtime error
| // Monitors the gallery and sends a browser notification when the leading image is new. | |
| let lastHeadImg = null; | |
| let notificationButton = null; | |
| function initNotifications() { | |
| if (!notificationButton) { | |
| notificationButton = gradioApp().getElementById('request_notifications'); | |
| if (notificationButton) notificationButton.addEventListener('click', (evt) => Notification.requestPermission(), true); | |
| } | |
| if (document.hasFocus()) return; // window is in focus so don't send notifications | |
| const galleryPreviews = gradioApp().querySelectorAll('div[id^="tab_"][style*="display: block"] div[id$="_results"] .thumbnail-item > img'); | |
| if (!galleryPreviews) return; | |
| const headImg = galleryPreviews[0]?.src; | |
| if (!headImg || headImg === lastHeadImg || headImg.includes('logo-bg-')) return; | |
| const audioNotification = gradioApp().querySelector('#audio_notification audio'); | |
| if (audioNotification) audioNotification.play(); | |
| lastHeadImg = headImg; | |
| const imgs = new Set(Array.from(galleryPreviews).map((img) => img.src)); // Multiple copies of the images are in the DOM when one is selected | |
| const notification = new Notification('SD.Next', { | |
| body: `Generated ${imgs.size > 1 ? imgs.size - opts.return_grid : 1} image${imgs.size > 1 ? 's' : ''}`, | |
| icon: headImg, | |
| image: headImg, | |
| }); | |
| notification.onclick = () => { | |
| parent.focus(); | |
| this.close(); | |
| }; | |
| log('sendNotification'); | |
| } | |
| onAfterUiUpdate(initNotifications); | |