From 5873076fd78caa7ae7abd9effb0d7e3e66114a66 Mon Sep 17 00:00:00 2001 From: Fndroid Date: Thu, 30 Jul 2020 22:23:47 +0800 Subject: [PATCH] Feature: add script mode in settings (#49) --- src/containers/Settings/index.tsx | 21 ++++++++++++++------- src/i18n/en_US.ts | 3 ++- src/i18n/zh_CN.ts | 3 ++- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/containers/Settings/index.tsx b/src/containers/Settings/index.tsx index bf6ff6e..2c835a5 100644 --- a/src/containers/Settings/index.tsx +++ b/src/containers/Settings/index.tsx @@ -1,8 +1,8 @@ -import React, { useEffect } from 'react' +import React, { useEffect, useMemo } from 'react' import classnames from 'classnames' import capitalize from 'lodash/capitalize' import { Header, Card, Row, Col, Switch, ButtonSelect, ButtonSelectOptions, Input, Icon } from '@components' -import { useI18n, useClashXData, useAPIInfo, useGeneral, useIdentity } from '@stores' +import { useI18n, useClashXData, useAPIInfo, useGeneral, useIdentity, useVersion } from '@stores' import { updateConfig } from '@lib/request' import { useObject } from '@lib/hook' import { jsBridge } from '@lib/jsBridge' @@ -12,6 +12,7 @@ import './style.scss' const languageOptions: ButtonSelectOptions[] = [{ label: '中文', value: 'zh_CN' }, { label: 'English', value: 'en_US' }] export default function Settings () { + const { premium } = useVersion() const { data: clashXData, update: fetchClashXData } = useClashXData() const { general, update: fetchGeneral } = useGeneral() const { set: setIdentity } = useIdentity() @@ -78,11 +79,17 @@ export default function Settings () { systemProxy } = clashXData - const proxyModeOptions: ButtonSelectOptions[] = [ - { label: t('values.global'), value: 'Global' }, - { label: t('values.rules'), value: 'Rule' }, - { label: t('values.direct'), value: 'Direct' } - ] + const proxyModeOptions = useMemo(() => { + const options = [ + { label: t('values.global'), value: 'Global' }, + { label: t('values.rules'), value: 'Rule' }, + { label: t('values.direct'), value: 'Direct' } + ] + if (premium) { + options.push({ label: t('values.script'), value: 'Script' }) + } + return options + }, [t, premium]) return (
diff --git a/src/i18n/en_US.ts b/src/i18n/en_US.ts index a6c4677..e4953e7 100644 --- a/src/i18n/en_US.ts +++ b/src/i18n/en_US.ts @@ -25,7 +25,8 @@ export default { en: 'English', global: 'Global', rules: 'Rules', - direct: 'Direct' + direct: 'Direct', + script: 'Script' }, versionString: 'Current ClashX is the latest version:{{version}}', checkUpdate: 'Check Update', diff --git a/src/i18n/zh_CN.ts b/src/i18n/zh_CN.ts index 29a0c71..45b4ebb 100644 --- a/src/i18n/zh_CN.ts +++ b/src/i18n/zh_CN.ts @@ -25,7 +25,8 @@ export default { en: 'English', global: '全局', rules: '规则', - direct: '直连' + direct: '直连', + script: '脚本' }, versionString: '当前 ClashX 已是最新版本:{{version}}', checkUpdate: '检查更新',