Skip to content

Commit

Permalink
Make AppDataManager async
Browse files Browse the repository at this point in the history
  • Loading branch information
Elanis committed May 18, 2023
1 parent bb70ac6 commit 6e22413
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 30 deletions.
41 changes: 24 additions & 17 deletions js/AppDataManager.js
Original file line number Diff line number Diff line change
@@ -1,41 +1,48 @@
import fs from 'fs';
import path from 'path';

export default (appPath) => {
const dataDirectory = path.resolve(appPath, 'data');
if (!fs.existsSync(dataDirectory)) {
fs.mkdirSync(dataDirectory);
import { mkdir, readFile, stat, writeFile } from 'node:fs/promises';

export default async(appPath) => {
async function existsAsync(target) {
return await stat(target)
.then(() => true)
.catch(() => false);
}

async function makeDirectoryIfNotExists(dir) {
if (!(await existsAsync(dir))) {
await mkdir(dir);
}
}

const dataDirectory = path.resolve(appPath, 'data');
await makeDirectoryIfNotExists(dataDirectory);

return (class AppDataManager {
static saveObject(moduleName, dataName, objectData) {
static async saveObject(moduleName, dataName, objectData) {
const directory = path.resolve(dataDirectory, moduleName);
if (!fs.existsSync(directory)) {
fs.mkdirSync(directory);
}
await makeDirectoryIfNotExists(directory);

fs.writeFileSync(
await writeFile(
path.resolve(directory, dataName + '.json'),
JSON.stringify(objectData, null, 4)
);
}

static loadObject(moduleName, dataName) {
static async loadObject(moduleName, dataName) {
return JSON.parse(
fs.readFileSync(
await readFile(
path.resolve(dataDirectory, moduleName, dataName + '.json'),
'UTF-8'
)
);
}

static exists(moduleName, dataName) {
static async exists(moduleName, dataName) {
const directory = path.resolve(dataDirectory, moduleName);
if (!fs.existsSync(directory)) {
fs.mkdirSync(directory);
}
await makeDirectoryIfNotExists(directory);

return fs.existsSync(path.resolve(directory, dataName + '.json'));
return await existsAsync(path.resolve(directory, dataName + '.json'));
}
});
};
10 changes: 5 additions & 5 deletions js/ConfigManager.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
export default class ConfigManager {
static init() {
if(AppDataManager.exists('lumen_desktop', 'modules_config')) {
ConfigManager.configurations = AppDataManager.loadObject('lumen_desktop', 'modules_config');
static async init() {
if(await AppDataManager.exists('lumen_desktop', 'modules_config')) {
ConfigManager.configurations = await AppDataManager.loadObject('lumen_desktop', 'modules_config');
} else {
ConfigManager.configurations = {};
}
Expand Down Expand Up @@ -33,12 +33,12 @@ export default class ConfigManager {
return ConfigManager.configurations[moduleName][item];
}

static set(moduleName, item, value) {
static async set(moduleName, item, value) {
ConfigManager.configurations[moduleName][item] = value;

// TODO: check type

AppDataManager.saveObject('lumen_desktop', 'modules_config', ConfigManager.configurations);
await AppDataManager.saveObject('lumen_desktop', 'modules_config', ConfigManager.configurations);
}

static getMetadata(moduleName) {
Expand Down
16 changes: 8 additions & 8 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ export const load = async(electron) => {
global.tmpDir = path.resolve(app.getAppPath(), 'tmp');
global.viewsPath = path.resolve(app.getAppPath(), 'views');

global.AppDataManager = AppDataManagerFactory(app.getAppPath());
global.AppDataManager = await AppDataManagerFactory(app.getAppPath());
global.ConfigManager = ConfigManager;
global.fileScanner = fileScanner;

ConfigManager.init();
await ConfigManager.init();

// Build html file
await loadModules();
Expand All @@ -51,15 +51,15 @@ export const load = async(electron) => {
return app.getAppPath();
});

ipcMain.handle('AppDataManager-saveObject', (e, moduleName, dataName, objectData) => {
return AppDataManager.saveObject(moduleName, dataName, objectData);
ipcMain.handle('AppDataManager-saveObject', async(e, moduleName, dataName, objectData) => {
return await AppDataManager.saveObject(moduleName, dataName, objectData);
});
ipcMain.handle('AppDataManager-loadObject', (e, moduleName, dataName,) => {
return AppDataManager.loadObject(moduleName, dataName);
ipcMain.handle('AppDataManager-loadObject', async(e, moduleName, dataName,) => {
return await AppDataManager.loadObject(moduleName, dataName);
});
ipcMain.handle('AppDataManager-exists', (e, moduleName, dataName) => {
ipcMain.handle('AppDataManager-exists', async(e, moduleName, dataName) => {
console.log(moduleName, dataName);
return AppDataManager.exists(moduleName, dataName);
return await AppDataManager.exists(moduleName, dataName);
});

ipcMain.handle('ConfigManager-get', (e, moduleName, item) => {
Expand Down

0 comments on commit 6e22413

Please sign in to comment.