|
|
@ -8,17 +8,23 @@ const path = require("path"); |
|
|
|
class SettingsManager { |
|
|
|
class SettingsManager { |
|
|
|
app; |
|
|
|
app; |
|
|
|
data; |
|
|
|
data; |
|
|
|
|
|
|
|
locked; |
|
|
|
|
|
|
|
|
|
|
|
constructor(app) { |
|
|
|
constructor(app) { |
|
|
|
this.app = app; |
|
|
|
this.app = app; |
|
|
|
this.data = null; |
|
|
|
this.data = null; |
|
|
|
|
|
|
|
this.locked = false; |
|
|
|
|
|
|
|
|
|
|
|
if (!SettingsManager.CheckFileSystem()) { |
|
|
|
if (!SettingsManager.CheckFileSystem()) { |
|
|
|
if (!fsn.existsSync(SettingsManager.Folder)) |
|
|
|
if (!fsn.existsSync(SettingsManager.Folder)) |
|
|
|
fsn.mkdirSync(SettingsManager.Folder); |
|
|
|
fsn.mkdirSync(SettingsManager.Folder); |
|
|
|
fsn.writeFileSync(SettingsManager.File, "{}"); |
|
|
|
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::get", (_, key, defaultValue = null) => this.get(key, defaultValue)); |
|
|
|
ipcMain.handle("SettingsManager::set", (_, key, value) => this.set(key, value)); |
|
|
|
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); |
|
|
|
this.app.windowManager.mainWindow?.send("SettingsManager::change", this.data); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
save() { |
|
|
|
async save() { |
|
|
|
fs.writeFile(SettingsManager.File, JSON.stringify(this.data, null, 4)); |
|
|
|
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.change(); |
|
|
|
|
|
|
|
this.locked = false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
async reset() { |
|
|
|
async reset() { |
|
|
|