chore: control center

This commit is contained in:
lencx
2022-12-15 01:41:19 +08:00
parent cd7d5fab63
commit 396dc0b762
6 changed files with 27 additions and 23 deletions

View File

@@ -47,10 +47,6 @@ pub fn init(context: &Context<EmbeddedAssets>) -> Menu {
let preferences_menu = Submenu::new( let preferences_menu = Submenu::new(
"Preferences", "Preferences",
Menu::with_items([ Menu::with_items([
CustomMenuItem::new("dashboard".to_string(), "Dashboard")
.accelerator("CmdOrCtrl+D")
.into(),
MenuItem::Separator.into(),
Submenu::new( Submenu::new(
"Theme", "Theme",
Menu::new() Menu::new()
@@ -73,6 +69,9 @@ pub fn init(context: &Context<EmbeddedAssets>) -> Menu {
CustomMenuItem::new("inject_script".to_string(), "Inject Script") CustomMenuItem::new("inject_script".to_string(), "Inject Script")
.accelerator("CmdOrCtrl+J") .accelerator("CmdOrCtrl+J")
.into(), .into(),
CustomMenuItem::new("control_center".to_string(), "Control Center")
.accelerator("CmdOrCtrl+Shift+P")
.into(),
MenuItem::Separator.into(), MenuItem::Separator.into(),
CustomMenuItem::new("go_conf".to_string(), "Go to Config") CustomMenuItem::new("go_conf".to_string(), "Go to Config")
.accelerator("CmdOrCtrl+Shift+G") .accelerator("CmdOrCtrl+Shift+G")
@@ -160,7 +159,7 @@ pub fn menu_handler(event: WindowMenuEvent<tauri::Wry>) {
match menu_id { match menu_id {
// Preferences // Preferences
"dashboard" => app.get_window("main").unwrap().show().unwrap(), "control_center" => app.get_window("main").unwrap().show().unwrap(),
"restart" => tauri::api::process::restart(&app.env()), "restart" => tauri::api::process::restart(&app.env()),
"inject_script" => open(&app, script_path), "inject_script" => open(&app, script_path),
"go_conf" => utils::open_file(utils::chat_root()), "go_conf" => utils::open_file(utils::chat_root()),

View File

@@ -21,7 +21,7 @@ pub fn init(app: &mut App) -> std::result::Result<(), Box<dyn std::error::Error>
.initialization_script(include_str!("../assets/jspdf.js")) .initialization_script(include_str!("../assets/jspdf.js"))
.initialization_script(include_str!("../assets/core.js")) .initialization_script(include_str!("../assets/core.js"))
.initialization_script(include_str!("../assets/export.js")) .initialization_script(include_str!("../assets/export.js"))
.user_agent(&chat_conf.ua_pc) .user_agent(&chat_conf.ua_window)
.build()?; .build()?;
#[cfg(not(target_os = "macos"))] #[cfg(not(target_os = "macos"))]
@@ -37,7 +37,7 @@ pub fn init(app: &mut App) -> std::result::Result<(), Box<dyn std::error::Error>
.initialization_script(include_str!("../assets/jspdf.js")) .initialization_script(include_str!("../assets/jspdf.js"))
.initialization_script(include_str!("../assets/core.js")) .initialization_script(include_str!("../assets/core.js"))
.initialization_script(include_str!("../assets/export.js")) .initialization_script(include_str!("../assets/export.js"))
.user_agent(&chat_conf.ua_pc) .user_agent(&chat_conf.ua_window)
.build()?; .build()?;
Ok(()) Ok(())

View File

@@ -17,7 +17,7 @@ pub fn mini_window(handle: &tauri::AppHandle) {
.initialization_script(include_str!("../assets/jspdf.js")) .initialization_script(include_str!("../assets/jspdf.js"))
.initialization_script(include_str!("../assets/core.js")) .initialization_script(include_str!("../assets/core.js"))
.initialization_script(include_str!("../assets/export.js")) .initialization_script(include_str!("../assets/export.js"))
.user_agent(&chat_conf.ua_phone) .user_agent(&chat_conf.ua_tray)
.build() .build()
.unwrap() .unwrap()
.hide() .hide()

View File

@@ -19,8 +19,8 @@ pub const DEFAULT_CHAT_CONF: &str = r#"{
"titlebar": true, "titlebar": true,
"default_origin": "https://chat.openai.com", "default_origin": "https://chat.openai.com",
"origin": "https://chat.openai.com", "origin": "https://chat.openai.com",
"ua_pc": "", "ua_window": "",
"ua_phone": "" "ua_tray": ""
}"#; }"#;
pub const DEFAULT_CHAT_CONF_MAC: &str = r#"{ pub const DEFAULT_CHAT_CONF_MAC: &str = r#"{
"always_on_top": false, "always_on_top": false,
@@ -28,8 +28,8 @@ pub const DEFAULT_CHAT_CONF_MAC: &str = r#"{
"titlebar": false, "titlebar": false,
"default_origin": "https://chat.openai.com", "default_origin": "https://chat.openai.com",
"origin": "https://chat.openai.com", "origin": "https://chat.openai.com",
"ua_pc": "", "ua_window": "",
"ua_phone": "" "ua_tray": ""
}"#; }"#;
pub struct ChatState { pub struct ChatState {
@@ -51,8 +51,8 @@ pub struct ChatConfJson {
pub theme: String, pub theme: String,
pub default_origin: String, pub default_origin: String,
pub origin: String, pub origin: String,
pub ua_pc: String, pub ua_window: String,
pub ua_phone: String, pub ua_tray: String,
} }
impl ChatConfJson { impl ChatConfJson {

View File

@@ -9,6 +9,7 @@ mod utils;
use app::{cmd, menu, setup}; use app::{cmd, menu, setup};
use conf::{ChatConfJson, ChatState}; use conf::{ChatConfJson, ChatState};
use tauri::Manager;
fn main() { fn main() {
ChatConfJson::init(); ChatConfJson::init();

22
src/view/General.tsx vendored
View File

@@ -1,12 +1,21 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { Form, Radio, Switch, Input, Button, Space, message } from 'antd'; import { Form, Radio, Switch, Input, Button, Space, message, Tooltip } from 'antd';
import { QuestionCircleOutlined } from '@ant-design/icons';
import { invoke } from '@tauri-apps/api'; import { invoke } from '@tauri-apps/api';
import { platform } from '@tauri-apps/api/os'; import { platform } from '@tauri-apps/api/os';
import { ask } from '@tauri-apps/api/dialog'; import { ask } from '@tauri-apps/api/dialog';
import { relaunch } from '@tauri-apps/api/process'; import { relaunch } from '@tauri-apps/api/process';
import { clone, pick, isEqual } from 'lodash'; import { clone, pick, isEqual } from 'lodash';
const restartNames = ['origin', 'ua_window', 'ua_tray'] const restartNames = ['theme', 'titlebar', 'origin', 'ua_window', 'ua_tray'];
const OriginLabel = ({ url }: { url: string }) => {
return (
<span>
Switch Origin <Tooltip title={`Default: ${url}`}><QuestionCircleOutlined /></Tooltip>
</span>
)
}
export default function General() { export default function General() {
const [form] = Form.useForm(); const [form] = Form.useForm();
@@ -27,17 +36,12 @@ export default function General() {
form.setFieldsValue(clone(chatConf)); form.setFieldsValue(clone(chatConf));
}, [chatConf]) }, [chatConf])
console.log('«28» /src/view/General.tsx ~> ', chatConf);
const onCancel = () => { const onCancel = () => {
form.setFieldsValue(chatConf); form.setFieldsValue(chatConf);
}; };
const onFinish = async (values: any) => { const onFinish = async (values: any) => {
await invoke('form_confirm', { data: values, label: 'main' }); await invoke('form_confirm', { data: values, label: 'main' });
console.log('«33» /src/view/General.tsx ~> ', pick(chatConf, restartNames), pick(values, restartNames));
if (!isEqual(pick(chatConf, restartNames), pick(values, restartNames))) { if (!isEqual(pick(chatConf, restartNames), pick(values, restartNames))) {
const isOk = await ask(`Configuration saved successfully, whether to restart?`, { const isOk = await ask(`Configuration saved successfully, whether to restart?`, {
title: 'ChatGPT Preferences' title: 'ChatGPT Preferences'
@@ -71,13 +75,13 @@ export default function General() {
<Switch /> <Switch />
</Form.Item> </Form.Item>
)} )}
<Form.Item label="Switch Origin" name="origin"> <Form.Item label={<OriginLabel url={chatConf?.default_origin} />} name="origin">
<Input placeholder="https://chat.openai.com" /> <Input placeholder="https://chat.openai.com" />
</Form.Item> </Form.Item>
<Form.Item label="User Agent (Window)" name="ua_window"> <Form.Item label="User Agent (Window)" name="ua_window">
<Input.TextArea autoSize={{ minRows: 2, maxRows: 4 }} placeholder="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" /> <Input.TextArea autoSize={{ minRows: 2, maxRows: 4 }} placeholder="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" />
</Form.Item> </Form.Item>
<Form.Item label="User Agent (Tray)" name="ua_tray"> <Form.Item label="User Agent (SystemTray)" name="ua_tray">
<Input.TextArea autoSize={{ minRows: 2, maxRows: 4 }} placeholder="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" /> <Input.TextArea autoSize={{ minRows: 2, maxRows: 4 }} placeholder="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" />
</Form.Item> </Form.Item>
<Form.Item> <Form.Item>