1
0
mirror of https://github.com/hack-chat/main.git synced 2024-03-22 13:20:33 +08:00

Fixed permission requesting, notifications off by default

This commit is contained in:
Roslot 2019-05-11 23:30:01 -04:00
parent 1fb02f4e79
commit 2f566de8b1

View File

@ -71,15 +71,65 @@ var lastSentPos = 0;
/** Notification switch and local storage behavior **/
var notifySwitch = document.getElementById("notify-switch")
var notifySetting = localStorageGet("notify-api")
var notifyPermissionExplained = 0; // 1 = granted msg shown, -1 = denied message shown
// Inital request for notifications permission
function RequestNotifyPermission() {
try {
var notifyPromise = Notification.requestPermission();
if (notifyPromise) {
notifyPromise.then(function (result) {
console.log("Hack.Chat notification permission: " + result);
if (result === "granted") {
if (notifyPermissionExplained === 0) {
pushMessage({
cmd: "chat",
nick: "*",
text: "Notifications permission granted.",
time: null
});
notifyPermissionExplained = 1;
}
return false;
} else {
if (notifyPermissionExplained === 0) {
pushMessage({
cmd: "chat",
nick: "*",
text: "Notifications permission denied, you won't be notified if someone @mentions you.",
time: null
});
notifyPermissionExplained = -1;
}
return true;
}
});
}
} catch (error) {
pushMessage({
cmd: "chat",
nick: "*",
text: "Unable to create a notification.",
time: null
});
console.error("An error occured trying to request notification permissions. This browser might not support desktop notifications.\nDetails:")
console.error(error)
return false;
}
}
// Update localStorage with value of checkbox
notifySwitch.addEventListener('change', () => {
notifySwitch.addEventListener('change', (event) => {
if (event.target.checked) {
RequestNotifyPermission();
}
localStorageSet("notify-api", notifySwitch.checked)
})
// Check if localStorage value is set, defaults to ON
// Check if localStorage value is set, defaults to OFF
if (notifySetting === null) {
localStorageSet("notify-api", "true")
notifySwitch.checked = true
localStorageSet("notify-api", "false")
notifySwitch.checked = false
}
// Configure notifySwitch checkbox element
if (notifySetting === "true" || notifySetting === true) {
@ -94,7 +144,7 @@ var soundSwitch = document.getElementById("sound-switch")
var notifySetting = localStorageGet("notify-sound")
// Update localStorage with value of checkbox
soundSwitch.addEventListener('change', () => {
soundSwitch.addEventListener('change', (event) => {
localStorageSet("notify-sound", soundSwitch.checked)
})
// Check if localStorage value is set, defaults to OFF
@ -116,9 +166,7 @@ function spawnNotification(title, body) {
// Let's check if the browser supports notifications
if (!("Notification" in window)) {
console.error("This browser does not support desktop notification");
}
// Let's check whether notification permissions have already been granted
else if (Notification.permission === "granted") {
} else if (Notification.permission === "granted") { // Check if notification permissions are already given
// If it's okay let's create a notification
var options = {
body: body,
@ -128,50 +176,19 @@ function spawnNotification(title, body) {
}
// Otherwise, we need to ask the user for permission
else if (Notification.permission !== "denied") {
var notifyPromise = Notification.requestPermission();
if (notifyPromise) {
notifyPromise.then(function (permission) {
// If the user accepts, let's create a notification
if (permission === "granted") {
var options = {
body: body,
icon: "/favicon-96x96.png"
};
var n = new Notification(title, options);
}
}).catch(function (error) {
console.error("Problem creating notification:\n" + error);
});
if (RequestNotifyPermission()) {
var options = {
body: body,
icon: "/favicon-96x96.png"
};
var n = new Notification(title, options);
}
} else if (Notification.permission == "denied") {
// At last, if the user has denied notifications, and you
// want to be respectful, there is no need to bother them any more.
}
// At last, if the user has denied notifications, and you
// want to be respectful, there is no need to bother them any more.
}
// Inital request for notifications permission
try {
Notification.requestPermission().then(function (result) {
console.log("Hack.Chat notification permission: " + result);
if (result === "granted") {
pushMessage({
cmd: "chat",
nick: "*",
text: "Notifications enabled.",
time: null
});
} else {
pushMessage({
cmd: "chat",
nick: "*",
text: "Notifications disabled. You will not be notified if someone @'s you.",
time: null
});
}
});
} catch (error) {
console.error("An error occured trying to request notification permissions. This browser might not support desktop notifications.\nDetails:")
console.error(error)
}
function notify(args) {
// Spawn notification if enabled