now locking settings if write is occuring

development
Michael Ochmann 1 year ago
parent b8ad7b57da
commit cc51075190
  1. 22
      src/SettingsManager.js

@ -8,17 +8,23 @@ const path = require("path");
class SettingsManager {
app;
data;
locked;
constructor(app) {
this.app = app;
this.data = null;
this.app = app;
this.data = null;
this.locked = false;
if (!SettingsManager.CheckFileSystem()) {
if (!fsn.existsSync(SettingsManager.Folder))
fsn.mkdirSync(SettingsManager.Folder);
fsn.writeFileSync(SettingsManager.File, "{}");
}
this.data = JSON.parse(fsn.readFileSync(SettingsManager.File, {encoding : "utf-8"}));
try {
this.data = JSON.parse(fsn.readFileSync(SettingsManager.File, {encoding : "utf-8"})) ?? {};
} catch (error) {
this.data = {};
}
ipcMain.handle("SettingsManager::get", (_, key, defaultValue = null) => this.get(key, defaultValue));
ipcMain.handle("SettingsManager::set", (_, key, value) => this.set(key, value));
@ -41,9 +47,15 @@ class SettingsManager {
this.app.windowManager.mainWindow?.send("SettingsManager::change", this.data);
}
save() {
fs.writeFile(SettingsManager.File, JSON.stringify(this.data, null, 4));
async save() {
if (this.locked) {
setTimeout(async () => await this.save(), 200);
return;
}
this.locked = true;
await fs.writeFile(SettingsManager.File, JSON.stringify(this.data, null, 4));
this.change();
this.locked = false;
}
async reset() {

Loading…
Cancel
Save