chore: control center

This commit is contained in:
lencx
2022-12-15 12:45:01 +08:00
parent 60abf6e487
commit 60f6628ec0
3 changed files with 35 additions and 20 deletions

View File

@@ -60,9 +60,12 @@ cask "popcorn-time", args: { "no-quarantine": true }
- `Theme` - `Light`, `Dark` (仅支持 macOS 和 Windows) - `Theme` - `Light`, `Dark` (仅支持 macOS 和 Windows)
- `Always On Top`: 窗口置顶 - `Always On Top`: 窗口置顶
- `Titlebar`: 是否显示 `Titlebar`,仅 macOS 支持 - `Titlebar`: 是否显示 `Titlebar`,仅 macOS 支持
- `User Agent` ([#17](https://github.com/lencx/ChatGPT/issues/17)): 自定义 `user agent` 防止网站安全检测,默认值为空。
- `Inject Script`: 用于修改网站的用户自定义脚本 - `Inject Script`: 用于修改网站的用户自定义脚本
- `Switch Origin` ([#14](https://github.com/lencx/ChatGPT/issues/14)): 切换网站源地址,默认为 `https://chat.openai.com`。需要注意的是镜像网站的 UI 需要和原网站一致,否则可能会导致某些功能不工作 - `Control Center`: ChatGPT 应用的控制中心,它将为应用提供无限的可能
- 设置 `Theme``Always on Top``Titlebar`
- `User Agent` ([#17](https://github.com/lencx/ChatGPT/issues/17)): 自定义 `user agent` 防止网站安全检测,默认值为空
- `Switch Origin` ([#14](https://github.com/lencx/ChatGPT/issues/14)): 切换网站源地址,默认为 `https://chat.openai.com`。需要注意的是镜像网站的 UI 需要和原网站一致,否则可能会导致某些功能不工作
- `Go to Config`: 打开 ChatGPT 配置目录 (`path: ~/.chatgpt/*`)
- `Clear Config`: 清除 ChatGPT 配置数据 (`path: ~/.chatgpt/*`), 这是危险操作,请提前备份数据 - `Clear Config`: 清除 ChatGPT 配置数据 (`path: ~/.chatgpt/*`), 这是危险操作,请提前备份数据
- `Restart ChatGPT`: 重启应用。如果注入脚本编辑完成,或者应用可卡死可以通过此菜单重新启动应用 - `Restart ChatGPT`: 重启应用。如果注入脚本编辑完成,或者应用可卡死可以通过此菜单重新启动应用
- `Awesome ChatGPT`: 一个很棒的 ChatGPT 推荐列表 - `Awesome ChatGPT`: 一个很棒的 ChatGPT 推荐列表

0
dist/.gitkeep vendored
View File

View File

@@ -60,19 +60,19 @@ impl ChatConfJson {
/// path: ~/.chatgpt/chat.conf.json /// path: ~/.chatgpt/chat.conf.json
pub fn init() -> PathBuf { pub fn init() -> PathBuf {
let conf_file = ChatConfJson::conf_path(); let conf_file = ChatConfJson::conf_path();
let content = if cfg!(target_os = "macos") {
DEFAULT_CHAT_CONF_MAC
} else {
DEFAULT_CHAT_CONF
};
if !exists(&conf_file) { if !exists(&conf_file) {
create_file(&conf_file).unwrap(); create_file(&conf_file).unwrap();
fs::write(&conf_file, content).unwrap();
#[cfg(target_os = "macos")]
fs::write(conf_file.clone(), DEFAULT_CHAT_CONF_MAC).unwrap();
#[cfg(not(target_os = "macos"))]
fs::write(conf_file.clone(), DEFAULT_CHAT_CONF).unwrap();
return conf_file; return conf_file;
} }
let conf_file = ChatConfJson::conf_path();
let file_content = fs::read_to_string(&conf_file).unwrap(); let file_content = fs::read_to_string(&conf_file).unwrap();
match serde_json::from_str(&file_content) { match serde_json::from_str(&file_content) {
Ok(v) => v, Ok(v) => v,
@@ -80,14 +80,10 @@ impl ChatConfJson {
if err.to_string() == "invalid type: map, expected unit at line 1 column 0" { if err.to_string() == "invalid type: map, expected unit at line 1 column 0" {
return conf_file; return conf_file;
} }
fs::write(&conf_file, content).unwrap();
#[cfg(target_os = "macos")]
fs::write(&conf_file, DEFAULT_CHAT_CONF_MAC).unwrap();
#[cfg(not(target_os = "macos"))]
fs::write(&conf_file, DEFAULT_CHAT_CONF).unwrap();
} }
}; };
conf_file conf_file
} }
@@ -96,11 +92,27 @@ impl ChatConfJson {
} }
pub fn get_chat_conf() -> Self { pub fn get_chat_conf() -> Self {
let config_file = fs::read_to_string(ChatConfJson::conf_path()) let conf_file = ChatConfJson::conf_path();
.unwrap_or_else(|_| DEFAULT_CHAT_CONF.to_string()); let file_content = fs::read_to_string(&conf_file).unwrap();
let config: Value = let content = if cfg!(target_os = "macos") {
serde_json::from_str(&config_file).expect("failed to parse chat.conf.json"); DEFAULT_CHAT_CONF_MAC
serde_json::from_value(config).unwrap() } else {
DEFAULT_CHAT_CONF
};
match serde_json::from_value(match serde_json::from_str(&file_content) {
Ok(v) => v,
Err(_) => {
fs::write(&conf_file, content).unwrap();
serde_json::from_str(content).unwrap()
}
}) {
Ok(v) => v,
Err(_) => {
fs::write(&conf_file, content).unwrap();
serde_json::from_value(serde_json::from_str(content).unwrap()).unwrap()
}
}
} }
// https://users.rust-lang.org/t/updating-object-fields-given-dynamic-json/39049/3 // https://users.rust-lang.org/t/updating-object-fields-given-dynamic-json/39049/3