mirror of
https://github.com/open-webui/assistant
synced 2025-05-11 15:30:33 +00:00
feat: save/load config
This commit is contained in:
parent
8ca3609864
commit
4e31e7c468
2
.gitignore
vendored
2
.gitignore
vendored
@ -3,6 +3,8 @@ node_modules
|
||||
out
|
||||
_test
|
||||
|
||||
config.json
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
|
50
src/main.ts
50
src/main.ts
@ -11,6 +11,8 @@ import path from "path";
|
||||
import { keyboard, Key } from "@nut-tree/nut-js";
|
||||
import { splitStream, sleep } from "./utils";
|
||||
|
||||
import { default as fs } from "fs";
|
||||
|
||||
keyboard.config.autoDelayMs = 0;
|
||||
|
||||
let WEBUI_VERSION: string | null = null;
|
||||
@ -34,6 +36,7 @@ const createWindow = () => {
|
||||
width: 300,
|
||||
height: 180,
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
preload: path.join(__dirname, "preload.js"),
|
||||
},
|
||||
});
|
||||
@ -231,12 +234,54 @@ const selectModel = async (modelId) => {
|
||||
return selectedModel;
|
||||
};
|
||||
|
||||
const loadConfig = async () => {
|
||||
fs.readFile("config.json", "utf8", (err, data) => {
|
||||
if (err) {
|
||||
console.error("Error reading config file:", err);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
// Parse the JSON data
|
||||
const _config = JSON.parse(data);
|
||||
|
||||
// Do something with the config object
|
||||
console.log("Config:", _config);
|
||||
|
||||
if (_config.url) {
|
||||
config.url = _config.url;
|
||||
}
|
||||
|
||||
if (_config.token) {
|
||||
config.token = _config.token;
|
||||
}
|
||||
|
||||
if (_config.model) {
|
||||
selectedModel = _config.model;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error parsing JSON:", error);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const saveConfigToFile = async () => {
|
||||
fs.writeFileSync(
|
||||
"config.json",
|
||||
JSON.stringify({
|
||||
...config,
|
||||
model: selectModel,
|
||||
})
|
||||
);
|
||||
};
|
||||
// This method will be called when Electron has finished
|
||||
// initialization and is ready to create browser windows.
|
||||
// Some APIs can only be used after this event occurs.
|
||||
app
|
||||
.whenReady()
|
||||
.then(() => {
|
||||
loadConfig();
|
||||
|
||||
ipcMain.handle("check-connection", async (event, arg) => {
|
||||
await getVersion();
|
||||
return WEBUI_VERSION !== null;
|
||||
@ -248,7 +293,9 @@ app
|
||||
});
|
||||
|
||||
ipcMain.handle("select-model", async (event, modelId) => {
|
||||
return await selectModel(modelId);
|
||||
const res = await selectModel(modelId);
|
||||
saveConfigToFile();
|
||||
return res;
|
||||
});
|
||||
|
||||
ipcMain.handle("load-config", (event, arg) => {
|
||||
@ -258,6 +305,7 @@ app
|
||||
ipcMain.on("save-config", (event, data) => {
|
||||
console.log(data);
|
||||
updateConfig(data);
|
||||
saveConfigToFile();
|
||||
});
|
||||
|
||||
globalShortcut.register("Alt+CommandOrControl+O", shortcutHandler);
|
||||
|
Loading…
Reference in New Issue
Block a user