aboutsummaryrefslogtreecommitdiff
path: root/javascript/notification.js
diff options
context:
space:
mode:
authorDave Sescleifer <dave@sescleifer.com>2022-09-18 21:41:57 -0400
committerAUTOMATIC1111 <16777216c@gmail.com>2022-09-20 09:52:52 +0300
commitd7f36dac21857dbcedb0303a5c80c35deae26592 (patch)
tree7992a08cced860cc8827bbebcfd1713c7ce6766d /javascript/notification.js
parenta8a75ec43a19ae4d2700aabb8ff855aa551ec7ac (diff)
Send a browser notification when the images are ready
Diffstat (limited to 'javascript/notification.js')
-rw-r--r--javascript/notification.js34
1 files changed, 34 insertions, 0 deletions
diff --git a/javascript/notification.js b/javascript/notification.js
new file mode 100644
index 00000000..4711c279
--- /dev/null
+++ b/javascript/notification.js
@@ -0,0 +1,34 @@
+// Monitors the gallery and sends a browser notification when the leading image is new.
+
+let lastHeadImg = null;
+
+onUiUpdate(function(){
+ const galleryPreviews = gradioApp().querySelectorAll('img.h-full.w-full.overflow-hidden');
+
+ if (galleryPreviews == null) return;
+
+ const headImg = galleryPreviews[0]?.src;
+
+ if (headImg == null || headImg == lastHeadImg) return;
+
+ lastHeadImg = headImg;
+
+ if (document.hasFocus()) return;
+
+ // Multiple copies of the images are in the DOM when one is selected. Dedup with a Set to get the real number generated.
+ const imgs = new Set(Array.from(galleryPreviews).map(img => img.src));
+
+ const notification = new Notification(
+ 'Stable Diffusion',
+ {
+ body: `Generated ${imgs.size > 1 ? imgs.size - 1 : 1} image${imgs.size > 1 ? 's' : ''}`,
+ icon: headImg,
+ image: headImg,
+ }
+ );
+
+ notification.onclick = function(_){
+ parent.focus();
+ this.close();
+ };
+});