appConfig.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. // import {app} from "electron";
  2. import Path from "path";
  3. import Logger from '../util/logger';
  4. import fs from "fs";
  5. import path from "path";
  6. import {AppConfig} from "@/types/appConfig.ts";
  7. import {getUserHomePath} from "@/util/pathTool.ts";
  8. let logger = Logger.logger('config', 'info');
  9. // const appPath = app.isPackaged ? Path.dirname(app.getPath('exe')) : app.getAppPath();
  10. let userPath = getUserHomePath();
  11. const configPath = Path.resolve( userPath,`configs/fc-ele.json`);
  12. logger.info(`[config app] configPath: ${configPath}`);
  13. const defaultConfig : AppConfig = {
  14. // 项目高级配置文件 使用nedb存储至用户目录
  15. dbPath: '',
  16. // 退出时是否提示
  17. exitQuestion: true,
  18. // 直接退出或者缩小到托盘
  19. exitMode: 'normal',
  20. // 快捷键
  21. hotKey: {
  22. // 显示
  23. show: 'ctrl+alt+h',
  24. min: 'ctrl+alt+x',
  25. },
  26. // 窗口队列
  27. saveWinSize: 1,
  28. enableIpv6: true,
  29. };
  30. let _config: null|AppConfig = null;
  31. // 加载项目配置文件 json
  32. function _loadProjectConfig(): null|AppConfig {
  33. let config: null|AppConfig = null;
  34. try {
  35. let data = fs.readFileSync(configPath, 'utf-8');
  36. // fs 的 buffer 转字符串
  37. config = JSON.parse(data.toString());
  38. } catch (err) {
  39. logger.error(err);
  40. }
  41. return config;
  42. }
  43. function _saveProjectConfig(config: AppConfig): boolean {
  44. try {
  45. // 判断目录是否存在
  46. if(!fs.existsSync(path.dirname(configPath))){
  47. logger.info("创建默认配置文件");
  48. fs.mkdirSync(path.dirname(configPath));
  49. }
  50. fs.writeFileSync(configPath, JSON.stringify(config));
  51. return true;
  52. } catch (err) {
  53. logger.error(err);
  54. logger.info("save config file fail")
  55. return false;
  56. }
  57. }
  58. // 修改配置文件
  59. // function _changeConfig(key: string, value: any): boolean {
  60. // if(!_config){
  61. // return false;
  62. // }
  63. // _config = {
  64. // ..._config,
  65. // [key]: value,
  66. // };
  67. // return _saveProjectConfig(_config);
  68. // }
  69. export function saveConfig(appConfig: AppConfig): boolean {
  70. return _saveProjectConfig(appConfig);
  71. }
  72. export function getProjectConfig() : Promise<AppConfig> {
  73. return new Promise((resolve, reject) => {
  74. let config = _loadProjectConfig();
  75. if(config){
  76. resolve(config);
  77. }else{
  78. reject()
  79. }
  80. })
  81. }
  82. export function initData(): AppConfig {
  83. let config = _loadProjectConfig();
  84. if(!config){
  85. logger.info("init config");
  86. config = defaultConfig;
  87. }
  88. // 合并config
  89. _config = {
  90. ...defaultConfig,
  91. ...config,
  92. };
  93. // 保存配置文件
  94. _saveProjectConfig(_config);
  95. // 创建数据库
  96. return _config;
  97. }