FreeDATA/gui/src/js/settingsHandler.ts

153 lines
5.1 KiB
TypeScript
Raw Normal View History

2023-10-03 13:15:17 +00:00
import path from "node:path";
import fs from "fs";
2023-09-06 10:23:20 +00:00
// pinia store setup
2023-10-03 13:15:17 +00:00
import { setActivePinia } from "pinia";
import pinia from "../store/index";
2023-09-06 10:23:20 +00:00
setActivePinia(pinia);
2023-10-03 13:15:17 +00:00
import { useSettingsStore } from "../store/settingsStore.js";
2023-09-06 10:23:20 +00:00
const settings = useSettingsStore(pinia);
// ---------------------------------
2023-10-22 08:12:00 +00:00
console.log(process.env);
2023-10-22 09:13:02 +00:00
var appDataFolder = "undefined";
2023-10-22 08:12:00 +00:00
if (typeof process.env["APPDATA"] !== "undefined") {
2023-10-22 09:13:02 +00:00
appDataFolder = process.env["APPDATA"];
2023-10-22 08:12:00 +00:00
console.log(appDataFolder);
2023-10-04 21:34:36 +00:00
} else {
2023-10-22 08:12:00 +00:00
switch (process.platform) {
case "darwin":
2023-10-22 09:13:02 +00:00
appDataFolder = process.env["HOME"] + "/Library/Application Support";
2023-10-22 08:12:00 +00:00
console.log(appDataFolder);
break;
case "linux":
2023-10-22 09:13:02 +00:00
appDataFolder = process.env["HOME"] + "/.config";
2023-10-22 08:12:00 +00:00
console.log(appDataFolder);
2023-10-22 09:19:25 +00:00
break;
2023-10-22 08:12:00 +00:00
case "win32":
2023-10-22 09:13:02 +00:00
appDataFolder = "undefined";
2023-10-22 08:12:00 +00:00
break;
default:
2023-10-22 09:13:02 +00:00
appDataFolder = "undefined";
2023-10-22 08:12:00 +00:00
break;
}
2023-10-04 21:34:36 +00:00
}
2023-09-06 10:23:20 +00:00
var configFolder = path.join(appDataFolder, "FreeDATA");
var configPath = path.join(configFolder, "config.json");
2023-10-22 08:12:00 +00:00
console.log(appDataFolder);
console.log(configFolder);
console.log(configPath);
2023-10-04 21:34:36 +00:00
2023-09-06 10:23:20 +00:00
// create config folder if not exists
if (!fs.existsSync(configFolder)) {
fs.mkdirSync(configFolder);
}
// create config file if not exists with defaults
const configDefaultSettings =
'{\
2023-10-20 11:47:42 +00:00
"modem_host": "127.0.0.1",\
"modem_port": 3000,\
2023-09-06 10:23:20 +00:00
"daemon_host": "127.0.0.1",\
2023-09-10 06:47:12 +00:00
"daemon_port": 3001,\
2023-10-21 09:45:45 +00:00
"rx_audio" : "",\
"tx_audio" : "",\
"mycall": "AA0AA-0",\
2023-09-06 20:20:18 +00:00
"myssid": "0",\
2023-09-06 10:23:20 +00:00
"mygrid": "JN40aa",\
"radiocontrol" : "disabled",\
2023-10-21 09:45:45 +00:00
"hamlib_deviceid": 6,\
2023-09-06 10:23:20 +00:00
"hamlib_deviceport": "ignore",\
"hamlib_stop_bits": "ignore",\
"hamlib_data_bits": "ignore",\
"hamlib_handshake": "ignore",\
"hamlib_serialspeed": "ignore",\
"hamlib_dtrstate": "ignore",\
"hamlib_pttprotocol": "ignore",\
"hamlib_ptt_port": "ignore",\
"hamlib_dcd": "ignore",\
2023-09-10 06:47:12 +00:00
"hamlbib_serialspeed_ptt": 9600,\
"hamlib_rigctld_port" : 4532,\
2023-09-06 10:23:20 +00:00
"hamlib_rigctld_ip" : "127.0.0.1",\
"hamlib_rigctld_path" : "",\
2023-09-10 06:47:12 +00:00
"hamlib_rigctld_server_port" : 4532,\
2023-09-06 10:23:20 +00:00
"hamlib_rigctld_custom_args": "",\
2023-09-10 06:47:12 +00:00
"tci_port" : 50001,\
2023-09-06 10:23:20 +00:00
"tci_ip" : "127.0.0.1",\
"spectrum": "waterfall",\
"enable_scatter" : "False",\
"enable_fft" : "False",\
"enable_fsk" : "False",\
"low_bandwidth_mode" : "False",\
"theme" : "default",\
"screen_height" : 430,\
"screen_width" : 1050,\
"update_channel" : "latest",\
"beacon_interval" : 300,\
"received_files_folder" : "None",\
"tuning_range_fmin" : "-50.0",\
"tuning_range_fmax" : "50.0",\
"respond_to_cq" : "True",\
2023-09-10 06:47:12 +00:00
"rx_buffer_size" : 16, \
2023-09-06 10:23:20 +00:00
"enable_explorer" : "False", \
"wftheme": 2, \
"high_graphics" : "True",\
"explorer_stats" : "False", \
"auto_tune" : "False", \
"enable_is_writing" : "True", \
"shared_folder_path" : ".", \
"enable_request_profile" : "True", \
"enable_request_shared_folder" : "False", \
"max_retry_attempts" : 5, \
"enable_auto_retry" : "False", \
"tx_delay" : 0, \
"auto_start": 0, \
"enable_sys_notification": 1, \
"enable_mesh_features": "False" \
}';
if (!fs.existsSync(configPath)) {
fs.writeFileSync(configPath, configDefaultSettings);
}
2023-10-03 13:15:17 +00:00
export function loadSettings() {
// load settings
var config = require(configPath);
2023-09-06 12:48:45 +00:00
2023-10-03 13:15:17 +00:00
//config validation
// check running config against default config.
// if parameter not exists, add it to running config to prevent errors
console.log("CONFIG VALIDATION ----------------------------- ");
2023-09-06 20:20:18 +00:00
2023-10-03 13:15:17 +00:00
var parsedConfig = JSON.parse(configDefaultSettings);
for (var key in parsedConfig) {
if (config.hasOwnProperty(key)) {
console.log("FOUND SETTTING [" + key + "]: " + config[key]);
2023-09-06 20:20:18 +00:00
} else {
2023-10-03 13:15:17 +00:00
console.log("MISSING SETTTING [" + key + "] : " + parsedConfig[key]);
config[key] = parsedConfig[key];
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
}
try {
if (key == "mycall") {
settings.mycall = config[key].split("-")[0];
settings.myssid = config[key].split("-")[1];
} else {
settings[key] = config[key];
}
} catch (e) {
console.log(e);
2023-09-06 20:20:18 +00:00
}
2023-09-06 10:23:20 +00:00
}
2023-09-06 12:48:45 +00:00
}
2023-10-03 13:15:17 +00:00
export function saveSettingsToFile() {
console.log("save settings to file...");
let config = settings.getJSON();
console.log(config);
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
}