chore: conf path

This commit is contained in:
lencx
2022-12-31 12:43:47 +08:00
parent dc0c78fee2
commit 9a392a71f6

107
src/view/General.tsx vendored
View File

@@ -1,18 +1,19 @@
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { Form, Radio, Switch, Input, Button, Space, message, Tooltip } from 'antd'; import { Form, Radio, Switch, Input, Button, Space, message, Tooltip } from 'antd';
import { QuestionCircleOutlined } from '@ant-design/icons'; import { QuestionCircleOutlined } from '@ant-design/icons';
import { invoke } from '@tauri-apps/api'; import { invoke, shell, path } 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, omit, isEqual } from 'lodash'; import { clone, omit, isEqual } from 'lodash';
import { DISABLE_AUTO_COMPLETE } from '@/utils'; import useInit from '@/hooks/useInit';
import { DISABLE_AUTO_COMPLETE, chatRoot } from '@/utils';
const OriginLabel = ({ url }: { url: string }) => { const OriginLabel = ({ url }: { url: string }) => {
return ( return (
<span> <span>
Switch Origin <Tooltip title={`Default: ${url}`}><QuestionCircleOutlined /></Tooltip> Switch Origin <Tooltip title={`Default: ${url}`}><QuestionCircleOutlined style={{ color: '#1677ff' }} /></Tooltip>
</span> </span>
) )
} }
@@ -29,7 +30,7 @@ const GlobalShortcut = () => {
<a href="https://tauri.app/v1/api/js/globalshortcut" target="_blank">https://tauri.app/v1/api/js/globalshortcut</a> <a href="https://tauri.app/v1/api/js/globalshortcut" target="_blank">https://tauri.app/v1/api/js/globalshortcut</a>
</div> </div>
)}> )}>
<QuestionCircleOutlined /> <QuestionCircleOutlined style={{ color: '#1677ff' }} />
</Tooltip> </Tooltip>
</div> </div>
) )
@@ -37,18 +38,17 @@ const GlobalShortcut = () => {
export default function General() { export default function General() {
const [form] = Form.useForm(); const [form] = Form.useForm();
const [jsonPath, setJsonPath] = useState('');
const [platformInfo, setPlatform] = useState<string>(''); const [platformInfo, setPlatform] = useState<string>('');
const [chatConf, setChatConf] = useState<any>(null); const [chatConf, setChatConf] = useState<any>(null);
const init = async () => { useInit(async () => {
setJsonPath(await path.join(await chatRoot(), 'chat.conf.json'));
setPlatform(await platform()); setPlatform(await platform());
const chatData = await invoke('get_chat_conf'); const chatData = await invoke('get_chat_conf');
setChatConf(chatData); setChatConf(chatData);
} });
useEffect(() => {
init();
}, [])
useEffect(() => { useEffect(() => {
form.setFieldsValue(clone(chatConf)); form.setFieldsValue(clone(chatConf));
@@ -73,47 +73,54 @@ export default function General() {
}; };
return ( return (
<Form <>
form={form} <div className="chat-table-tip">
style={{ maxWidth: 500 }} <div className="chat-sync-path">
onFinish={onFinish} <div>PATH: <a onClick={() => shell.open(jsonPath)} title={jsonPath}>{jsonPath}</a></div>
labelCol={{ span: 8 }} </div>
wrapperCol={{ span: 15, offset: 1 }} </div>
> <Form
<Form.Item label="Theme" name="theme"> form={form}
<Radio.Group> style={{ maxWidth: 500 }}
<Radio value="Light">Light</Radio> onFinish={onFinish}
<Radio value="Dark">Dark</Radio> labelCol={{ span: 8 }}
</Radio.Group> wrapperCol={{ span: 15, offset: 1 }}
</Form.Item> >
<Form.Item label="Stay On Top" name="stay_on_top" valuePropName="checked"> <Form.Item label="Theme" name="theme">
<Switch /> <Radio.Group>
</Form.Item> <Radio value="Light">Light</Radio>
<Form.Item label={<GlobalShortcut />} name="global_shortcut"> <Radio value="Dark">Dark</Radio>
<Input placeholder="CmdOrCtrl+Shift+O" {...DISABLE_AUTO_COMPLETE} /> </Radio.Group>
</Form.Item> </Form.Item>
{platformInfo === 'darwin' && ( <Form.Item label="Stay On Top" name="stay_on_top" valuePropName="checked">
<Form.Item label="Titlebar" name="titlebar" valuePropName="checked">
<Switch /> <Switch />
</Form.Item> </Form.Item>
)} <Form.Item label={<GlobalShortcut />} name="global_shortcut">
<Form.Item label={<OriginLabel url={chatConf?.default_origin} />} name="origin"> <Input placeholder="CmdOrCtrl+Shift+O" {...DISABLE_AUTO_COMPLETE} />
<Input placeholder="https://chat.openai.com" {...DISABLE_AUTO_COMPLETE} /> </Form.Item>
</Form.Item> {platformInfo === 'darwin' && (
<Form.Item label="User Agent (Window)" name="ua_window"> <Form.Item label="Titlebar" name="titlebar" valuePropName="checked">
<Input.TextArea autoSize={{ minRows: 4, maxRows: 4 }} {...DISABLE_AUTO_COMPLETE} 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" /> <Switch />
</Form.Item> </Form.Item>
<Form.Item label="User Agent (SystemTray)" name="ua_tray"> )}
<Input.TextArea autoSize={{ minRows: 4, maxRows: 4 }} {...DISABLE_AUTO_COMPLETE} 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 label={<OriginLabel url={chatConf?.default_origin} />} name="origin">
</Form.Item> <Input placeholder="https://chat.openai.com" {...DISABLE_AUTO_COMPLETE} />
<Form.Item> </Form.Item>
<Space size={20}> <Form.Item label="User Agent (Window)" name="ua_window">
<Button onClick={onCancel}>Cancel</Button> <Input.TextArea autoSize={{ minRows: 4, maxRows: 4 }} {...DISABLE_AUTO_COMPLETE} 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" />
<Button type="primary" htmlType="submit"> </Form.Item>
Submit <Form.Item label="User Agent (SystemTray)" name="ua_tray">
</Button> <Input.TextArea autoSize={{ minRows: 4, maxRows: 4 }} {...DISABLE_AUTO_COMPLETE} 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" />
</Space> </Form.Item>
</Form.Item> <Form.Item>
</Form> <Space size={20}>
<Button onClick={onCancel}>Cancel</Button>
<Button type="primary" htmlType="submit">
Submit
</Button>
</Space>
</Form.Item>
</Form>
</>
) )
} }