From 684fea5d62ecc4e1ec63eb18ba5a9ca1b2c70686 Mon Sep 17 00:00:00 2001 From: Joe Roberts Date: Wed, 7 Sep 2016 18:36:23 +0100 Subject: [PATCH] Basic Notifications support for the web client. --- .../static/webclient/js/webclient_gui.js | 40 ++++++++++++++++--- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/evennia/web/webclient/static/webclient/js/webclient_gui.js b/evennia/web/webclient/static/webclient/js/webclient_gui.js index 536ea4bd3a..1a267a8e0f 100644 --- a/evennia/web/webclient/static/webclient/js/webclient_gui.js +++ b/evennia/web/webclient/static/webclient/js/webclient_gui.js @@ -249,17 +249,41 @@ function onBeforeUnload() { var unread = 0; var originalTitle = document.title; +var focused = true; -function onVisibilityChange() { +/*function onVisibilityChange() { if(!document.hidden) { document.title = originalTitle; } +}*/ + +function onBlur(e) { + focused = false; } -function onNewLine(originator, text) { - if(document.hidden) { +function onFocus(e) { + focused = true; + document.title = originalTitle; +} + +function onNewLine(text, originator) { + if(!focused) { unread++; document.title = "(" + unread + ") " + originalTitle; + Notification.requestPermission().then(function(result) { + if(result === "granted") { + var title = originalTitle === "" ? "Evennia" : originalTitle; + var options = { + body: text.replace(/(<([^>]+)>)/ig,"") + } + var n = new Notification(title, options); + n.onclick = function(e) { + e.preventDefault(); + window.focus(); + this.close(); + } + } + }) } } @@ -268,11 +292,17 @@ function onNewLine(originator, text) { // // Event when client finishes loading -$(document).ready(function() { +$(document).ready(function() { + + Notification.requestPermission(); + // Event when client window changes $(window).bind("resize", doWindowResize); - $(document).on("visibilitychange", onVisibilityChange); + $(window).blur(onBlur); + $(window).focus(onFocus); + + //$(document).on("visibilitychange", onVisibilityChange); $("#inputfield").bind("resize", doWindowResize) .keypress(onKeyPress)