diff --git a/client/css/style.css b/client/css/style.css
index 22f2fd16..5ac1fd16 100644
--- a/client/css/style.css
+++ b/client/css/style.css
@@ -1109,6 +1109,11 @@ button,
color: #2ecc40;
}
+#settings .error {
+ color: #e74c3c;
+ margin-top: .2em;
+}
+
#form {
background: #eee;
border-top: 1px solid #ddd;
diff --git a/client/index.html b/client/index.html
index f8b08412..3cc42ca5 100644
--- a/client/index.html
+++ b/client/index.html
@@ -243,8 +243,9 @@
diff --git a/client/js/lounge.js b/client/js/lounge.js
index 4b943571..16f3b397 100644
--- a/client/js/lounge.js
+++ b/client/js/lounge.js
@@ -427,7 +427,7 @@ $(function() {
var userStyles = $("#user-specified-css");
var settings = $("#settings");
var options = $.extend({
- badge: false,
+ desktopNotifications: false,
colors: false,
join: true,
links: true,
@@ -487,11 +487,11 @@ $(function() {
}).find("input")
.trigger("change");
- $("#badge").on("change", function() {
+ $("#desktopNotifications").on("change", function() {
var self = $(this);
if (self.prop("checked")) {
if (Notification.permission !== "granted") {
- Notification.requestPermission();
+ Notification.requestPermission(updateDesktopNotificationStatus);
}
}
});
@@ -689,7 +689,7 @@ $(function() {
}
toggleFaviconNotification(true);
- if (options.badge && Notification.permission === "granted") {
+ if (options.desktopNotifications && Notification.permission === "granted") {
var title;
var body;
@@ -792,6 +792,8 @@ $(function() {
});
});
+ windows.on("show", "#settings", updateDesktopNotificationStatus);
+
forms.on("submit", "form", function(e) {
e.preventDefault();
var event = "auth";
@@ -918,6 +920,23 @@ $(function() {
location.reload();
}
+ function updateDesktopNotificationStatus(){
+ var checkbox = $("#desktopNotifications");
+ var warning = $("#warnDisabledDesktopNotifications");
+
+ if (Notification.permission === "denied"){
+ checkbox.attr("disabled", true);
+ checkbox.attr("checked", false);
+ warning.show();
+ } else {
+ if (Notification.permission === "default" && checkbox.prop("checked")){
+ checkbox.attr("checked", false);
+ }
+ checkbox.attr("disabled", false);
+ warning.hide();
+ }
+ }
+
function sortable() {
sidebar.sortable({
axis: "y",