mirror of
https://github.com/simon987/sist2.git
synced 2025-04-24 12:45:56 +00:00
64 lines
1.7 KiB
JavaScript
64 lines
1.7 KiB
JavaScript
import Vue from "vue";
|
|
import Vuex from "vuex";
|
|
|
|
Vue.use(Vuex);
|
|
|
|
function saveBrowserSettings(state) {
|
|
const settings = {
|
|
jobDesktopNotificationMap: state.jobDesktopNotificationMap
|
|
};
|
|
localStorage.setItem("sist2-admin-settings", JSON.stringify(settings));
|
|
|
|
console.log("SAVED");
|
|
console.log(settings);
|
|
}
|
|
|
|
export default new Vuex.Store({
|
|
state: {
|
|
sist2AdminInfo: null,
|
|
jobDesktopNotificationMap: {}
|
|
},
|
|
mutations: {
|
|
setSist2AdminInfo: (state, payload) => state.sist2AdminInfo = payload,
|
|
setJobDesktopNotificationMap: (state, payload) => state.jobDesktopNotificationMap = payload,
|
|
},
|
|
actions: {
|
|
notify: async ({state}, notification) => {
|
|
|
|
if (!state.jobDesktopNotificationMap[notification.job]) {
|
|
console.log("pass");
|
|
return;
|
|
}
|
|
|
|
new Notification(notification.messageString.replace("$JOB$", notification.job));
|
|
},
|
|
setJobDesktopNotification: async ({state}, {job, enabled}) => {
|
|
|
|
if (enabled === true) {
|
|
const permission = await Notification.requestPermission()
|
|
|
|
if (permission !== "granted") {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
state.jobDesktopNotificationMap[job] = enabled;
|
|
saveBrowserSettings(state);
|
|
|
|
return true;
|
|
},
|
|
loadBrowserSettings({commit}) {
|
|
const settingString = localStorage.getItem("sist2-admin-settings");
|
|
|
|
if (!settingString) {
|
|
return;
|
|
}
|
|
|
|
const settings = JSON.parse(settingString);
|
|
|
|
commit("setJobDesktopNotificationMap", settings["jobDesktopNotificationMap"]);
|
|
}
|
|
},
|
|
modules: {}
|
|
})
|