mirror of
https://github.com/woodchen-ink/clash-and-dashboard.git
synced 2025-07-18 22:11:56 +08:00
fix(setting): fix systemproxy & startatlogin jsbridge
This commit is contained in:
parent
4320bc737b
commit
49d256a51f
@ -8,7 +8,7 @@ import { updateConfig } from '@lib/request'
|
|||||||
import { setLocalStorageItem, to } from '@lib/helper'
|
import { setLocalStorageItem, to } from '@lib/helper'
|
||||||
import { rootStores } from '@lib/createStore'
|
import { rootStores } from '@lib/createStore'
|
||||||
import './style.scss'
|
import './style.scss'
|
||||||
import { isClashX } from '@lib/jsBridge'
|
import { isClashX, jsBridge } from '@lib/jsBridge'
|
||||||
|
|
||||||
class Settings extends React.Component<I18nProps, {}> {
|
class Settings extends React.Component<I18nProps, {}> {
|
||||||
state = {
|
state = {
|
||||||
@ -21,7 +21,8 @@ class Settings extends React.Component<I18nProps, {}> {
|
|||||||
externalControllerHost: '127.0.0.1',
|
externalControllerHost: '127.0.0.1',
|
||||||
externalControllerPort: '8080',
|
externalControllerPort: '8080',
|
||||||
externalControllerSecret: '',
|
externalControllerSecret: '',
|
||||||
showEditDrawer: false
|
showEditDrawer: false,
|
||||||
|
isClashX: false
|
||||||
}
|
}
|
||||||
|
|
||||||
languageOptions: ButtonSelectOptions[] = [{ label: '中文', value: 'zh' }, { label: 'English', value: 'en' }]
|
languageOptions: ButtonSelectOptions[] = [{ label: '中文', value: 'zh' }, { label: 'English', value: 'en' }]
|
||||||
@ -66,9 +67,26 @@ class Settings extends React.Component<I18nProps, {}> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleStartAtLoginChange = async (state: boolean) => {
|
||||||
|
await jsBridge.setStartAtLogin(state)
|
||||||
|
this.setState({ startAtLogin: state })
|
||||||
|
}
|
||||||
|
|
||||||
|
handleSetSystemProxy = async (state: boolean) => {
|
||||||
|
await jsBridge.setSystemProxy(state)
|
||||||
|
this.setState({ setAsSystemProxy: state })
|
||||||
|
}
|
||||||
|
|
||||||
async componentDidMount () {
|
async componentDidMount () {
|
||||||
if (isClashX()) {
|
if (isClashX()) {
|
||||||
await rootStores.config.fetchAndParseConfig()
|
await rootStores.config.fetchAndParseConfig()
|
||||||
|
const startAtLogin = await jsBridge.getStartAtLogin()
|
||||||
|
const setAsSystemProxy = await jsBridge.isSystemProxySet()
|
||||||
|
this.setState({
|
||||||
|
startAtLogin,
|
||||||
|
setAsSystemProxy,
|
||||||
|
isClashX: true
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
await rootStores.config.fetchConfig()
|
await rootStores.config.fetchConfig()
|
||||||
}
|
}
|
||||||
@ -87,6 +105,7 @@ class Settings extends React.Component<I18nProps, {}> {
|
|||||||
render () {
|
render () {
|
||||||
const { t, lng } = this.props
|
const { t, lng } = this.props
|
||||||
const {
|
const {
|
||||||
|
isClashX,
|
||||||
startAtLogin,
|
startAtLogin,
|
||||||
setAsSystemProxy,
|
setAsSystemProxy,
|
||||||
allowConnectFromLan,
|
allowConnectFromLan,
|
||||||
@ -113,7 +132,7 @@ class Settings extends React.Component<I18nProps, {}> {
|
|||||||
<span className="label">{t('labels.startAtLogin')}</span>
|
<span className="label">{t('labels.startAtLogin')}</span>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={4} className="value-column">
|
<Col span={4} className="value-column">
|
||||||
<Switch checked={startAtLogin} onChange={startAtLogin => this.setState({ startAtLogin })} />
|
<Switch disabled={!isClashX} checked={startAtLogin} onChange={this.handleStartAtLoginChange} />
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={4} offset={1}>
|
<Col span={4} offset={1}>
|
||||||
<span className="label">{t('labels.language')}</span>
|
<span className="label">{t('labels.language')}</span>
|
||||||
@ -128,8 +147,9 @@ class Settings extends React.Component<I18nProps, {}> {
|
|||||||
</Col>
|
</Col>
|
||||||
<Col span={4} className="value-column">
|
<Col span={4} className="value-column">
|
||||||
<Switch
|
<Switch
|
||||||
|
disabled={!isClashX}
|
||||||
checked={setAsSystemProxy}
|
checked={setAsSystemProxy}
|
||||||
onChange={setAsSystemProxy => this.setState({ setAsSystemProxy })}
|
onChange={this.handleSetSystemProxy}
|
||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span={7} offset={1}>
|
<Col span={7} offset={1}>
|
||||||
|
@ -144,6 +144,22 @@ export class JsBridge {
|
|||||||
public writeConfigWithString (data: string) {
|
public writeConfigWithString (data: string) {
|
||||||
return this.callHandler('writeConfigWithString', data)
|
return this.callHandler('writeConfigWithString', data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public setSystemProxy (data: boolean) {
|
||||||
|
return this.callHandler('setSystemProxy', data)
|
||||||
|
}
|
||||||
|
|
||||||
|
public getStartAtLogin () {
|
||||||
|
return this.callHandler<Boolean>('getStartAtLogin')
|
||||||
|
}
|
||||||
|
|
||||||
|
public setStartAtLogin (data: boolean) {
|
||||||
|
return this.callHandler<Boolean>('setStartAtLogin', data)
|
||||||
|
}
|
||||||
|
|
||||||
|
public isSystemProxySet () {
|
||||||
|
return this.callHandler<Boolean>('isSystemProxySet')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function setupJsBridge (callback) {
|
export function setupJsBridge (callback) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user