Track bundled vendor runtime sources
This commit is contained in:
127
vendor/aigcpanel/electron/mapi/storage/main.ts
vendored
Normal file
127
vendor/aigcpanel/electron/mapi/storage/main.ts
vendored
Normal file
@@ -0,0 +1,127 @@
|
||||
import { AppEnv, waitAppEnvReady } from "../env";
|
||||
import fs from "node:fs";
|
||||
import { ipcMain } from "electron";
|
||||
import nodePath from "node:path";
|
||||
|
||||
let data = {};
|
||||
|
||||
const userDataRoot = () => {
|
||||
return nodePath.join(AppEnv.userData, "storage");
|
||||
};
|
||||
|
||||
const dataRoot = () => {
|
||||
return nodePath.join(AppEnv.dataRoot, "storage");
|
||||
};
|
||||
|
||||
const filePath = (group: string) => {
|
||||
let p = nodePath.join(userDataRoot(), `${group}.json`);
|
||||
if (fs.existsSync(p)) {
|
||||
return p;
|
||||
}
|
||||
return nodePath.join(dataRoot(), `${group}.json`);
|
||||
};
|
||||
|
||||
const load = (group: string) => {
|
||||
try {
|
||||
const p = filePath(group);
|
||||
let json = fs.readFileSync(p).toString();
|
||||
json = JSON.parse(json);
|
||||
data[group] = json || {};
|
||||
} catch (e) {
|
||||
data[group] = {};
|
||||
}
|
||||
};
|
||||
|
||||
const loadIfNeed = (group: string) => {
|
||||
if (!(group in data)) {
|
||||
load(group);
|
||||
}
|
||||
};
|
||||
|
||||
const save = (group: string) => {
|
||||
const path = filePath(group);
|
||||
const dir = nodePath.dirname(path);
|
||||
if (!fs.existsSync(dir)) {
|
||||
fs.mkdirSync(dir, { recursive: true });
|
||||
}
|
||||
fs.writeFileSync(path, JSON.stringify(data[group], null, 4));
|
||||
};
|
||||
|
||||
const all = async (group: string) => {
|
||||
await waitAppEnvReady();
|
||||
loadIfNeed(group);
|
||||
return data[group];
|
||||
};
|
||||
|
||||
const get = async (group: string, key: string, defaultValue: any) => {
|
||||
await waitAppEnvReady();
|
||||
loadIfNeed(group);
|
||||
if (!(key in data[group])) {
|
||||
data[group][key] = defaultValue;
|
||||
save(group);
|
||||
}
|
||||
return data[group][key];
|
||||
};
|
||||
|
||||
const set = async (group: string, key: string, value: any) => {
|
||||
await waitAppEnvReady();
|
||||
loadIfNeed(group);
|
||||
data[group][key] = value;
|
||||
save(group);
|
||||
};
|
||||
|
||||
const read = async (group: string, defaultValue: any) => {
|
||||
await waitAppEnvReady();
|
||||
loadIfNeed(group);
|
||||
if (!(group in data)) {
|
||||
data[group] = defaultValue;
|
||||
save(group);
|
||||
}
|
||||
return data[group];
|
||||
};
|
||||
|
||||
const write = async (group: string, value: any) => {
|
||||
await waitAppEnvReady();
|
||||
loadIfNeed(group);
|
||||
data[group] = value;
|
||||
save(group);
|
||||
};
|
||||
|
||||
ipcMain.handle("storage:all", async (event, group: string) => {
|
||||
return await all(group);
|
||||
});
|
||||
|
||||
ipcMain.handle(
|
||||
"storage:get",
|
||||
async (event, group: string, key: string, defaultValue: any) => {
|
||||
return await get(group, key, defaultValue);
|
||||
},
|
||||
);
|
||||
|
||||
ipcMain.handle(
|
||||
"storage:set",
|
||||
async (event, group: string, key: string, value: any) => {
|
||||
return await set(group, key, value);
|
||||
},
|
||||
);
|
||||
|
||||
ipcMain.handle(
|
||||
"storage:read",
|
||||
async (event, group: string, defaultValue: any) => {
|
||||
return await read(group, defaultValue);
|
||||
},
|
||||
);
|
||||
|
||||
ipcMain.handle("storage:write", async (event, group: string, value: any) => {
|
||||
return await write(group, value);
|
||||
});
|
||||
|
||||
export const StorageMain = {
|
||||
all,
|
||||
get,
|
||||
set,
|
||||
read,
|
||||
write,
|
||||
};
|
||||
|
||||
export default StorageMain;
|
||||
Reference in New Issue
Block a user