// electron/utils/readConfig.js

const fs = require('fs');
const path = require('path');
const { app } = require('electron');
const defaultConfig = require('./config.default');

const configPath = path.join(app.getPath("userData"),'config.default.json');


/**
 * 读取配置文件
 */
function readConfigFile() {

  try {
    if (fs.existsSync(configPath)) {
      const data = fs.readFileSync(configPath, 'utf8');

      return {
        ...defaultConfig,
        ...JSON.parse(data),
      };
    } else {
      console.log('配置文件不存在');
      // 创建空白JSON文件
      fs.writeFileSync(configPath, '{}', 'utf8');
      return {
        ...defaultConfig,
      };
    }
  } catch (error) {
    console.error('读取配置文件出错:', error);
    return null;
  }
}

/**
 * 写入配置文件
 * @param {string} key - 要写入的配置项键名
 * @param {*} value - 要写入的配置项值
 */
function writeConfigFile(key, value) {

  try {
    let config = {};

    // 如果配置文件存在，则读取现有内容
    if (fs.existsSync(configPath)) {
      const data = fs.readFileSync(configPath, 'utf8');
      config = {
        ...defaultConfig,
        ...JSON.parse(data),
      };
    }else {
      console.log('配置文件不存在');
      // 创建空白JSON文件
      fs.writeFileSync(configPath, '{}', 'utf8');
      config = {
        ...defaultConfig,
      }
    }

    // 更新配置项
    config[key] = value;

    // 将更新后的配置写回文件
    fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf8');
    console.log(`成功写入配置项: ${key}`);
  } catch (error) {
    console.error('写入配置文件出错:', error);
  }
}

module.exports = {
  readConfigFile,
  writeConfigFile
};
