aboutsummaryrefslogtreecommitdiff
path: root/src/app/settings.js
diff options
context:
space:
mode:
author0neGal <mail@0negal.com>2022-02-26 00:16:08 +0100
committerGitHub <noreply@github.com>2022-02-26 00:16:08 +0100
commitc4fc36d2c9fd732b5c63b7cf47e647c06a33743d (patch)
tree35f2ee022afba594847ec495dc8258610f2a5411 /src/app/settings.js
parente96135cbc3877423f4c6c012c5d7e09436e5b32c (diff)
parentdec0a7d23767b518284ca69f93ce06a0783de8ce (diff)
downloadViper-c4fc36d2c9fd732b5c63b7cf47e647c06a33743d.tar.gz
Viper-c4fc36d2c9fd732b5c63b7cf47e647c06a33743d.zip
Merge pull request #85 from 0neGal/settings-page
feat: Settings page
Diffstat (limited to 'src/app/settings.js')
-rw-r--r--src/app/settings.js108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/app/settings.js b/src/app/settings.js
new file mode 100644
index 0000000..902e57b
--- /dev/null
+++ b/src/app/settings.js
@@ -0,0 +1,108 @@
+var Settings = {
+ toggle: (state) => {
+ if (state) {
+ Settings.load();
+ options.scrollTo(0, 0);
+ overlay.classList.add("shown")
+ options.classList.add("shown")
+
+ return
+ } else if (! state) {
+ if (state != undefined) {
+ overlay.classList.remove("shown")
+ options.classList.remove("shown")
+ return
+ }
+ }
+
+ Settings.load();
+ options.scrollTo(0, 0);
+ overlay.classList.toggle("shown")
+ options.classList.toggle("shown")
+ },
+ apply: () => {
+ settings = {...settings, ...Settings.get()};
+ ipcRenderer.send("savesettings", Settings.get());
+ },
+ reloadSwitches: () => {
+ let switches = document.querySelectorAll(".switch");
+
+ for (let i = 0; i < switches.length; i++) {
+ switches[i].setAttribute("onclick", `Settings.switch(${i})`);
+ }
+ },
+ switch: (element) => {
+ let switches = document.querySelectorAll(".switch");
+ element = switches[element];
+
+ if (element.classList.contains("on")) {
+ element.classList.add("off");
+ element.classList.remove("on");
+ } else {
+ element.classList.add("on");
+ element.classList.remove("off");
+ }
+
+ Settings.reloadSwitches();
+ },
+ get: () => {
+ let opts = {};
+ let options = document.querySelectorAll(".option");
+
+ for (let i = 0; i < options.length; i++) {
+ let optName = options[i].getAttribute("name");
+ if (options[i].querySelector(".actions input")) {
+ let input = options[i].querySelector(".actions input").value;
+ if (options[i].getAttribute("type")) {
+ opts[optName] = input.split(" ");
+ } else {
+ opts[optName] = input;
+ }
+ } else if (options[i].querySelector(".actions .switch")) {
+ if (options[i].querySelector(".actions .switch.on")) {
+ opts[optName] = true;
+ } else {
+ opts[optName] = false;
+ }
+ }
+ }
+
+ return opts;
+ },
+ load: () => {
+ let options = document.querySelectorAll(".option");
+
+ for (let i = 0; i < options.length; i++) {
+ let optName = options[i].getAttribute("name");
+ if (settings[optName] != undefined) {
+ switch(typeof settings[optName]) {
+ case "string":
+ options[i].querySelector(".actions input").value = settings[optName];
+ break
+ case "object":
+ options[i].querySelector(".actions input").value = settings[optName].join(" ");
+ break
+ case "boolean":
+ let switchDiv = options[i].querySelector(".actions .switch");
+ if (settings[optName]) {
+ switchDiv.classList.add("on");
+ switchDiv.classList.remove("off");
+ } else {
+ switchDiv.classList.add("off");
+ switchDiv.classList.remove("on");
+ }
+ break
+
+ }
+ }
+ }
+
+ ipcRenderer.send("can-autoupdate");
+ ipcRenderer.on("cant-autoupdate", () => {
+ document.querySelector(".option[name=autoupdate]").style.display = "none";
+ })
+ }
+}
+
+Settings.reloadSwitches();
+Settings.load();