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:
parent
1fb02f4e79
commit
2f566de8b1
113
client/client.js
113
client/client.js
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user