Skip to content

Commit 439911d

Browse files
committed
feat: Dynamic clash_mode support
1 parent 444a7e4 commit 439911d

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

src/components/Config.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,10 @@ const langOptions = [
5151
['en', 'English'],
5252
];
5353

54-
const modeOptions = [
55-
['Global', 'Global'],
56-
['Rule', 'Rule'],
57-
['Direct', 'Direct'],
58-
];
54+
const modeOptions = useMemo(() => {
55+
return configState.modes || [['Rule', 'Rule'], ['Global', 'Global'], ['Direct', 'Direct']];
56+
}, [configState.modes]);
57+
5958

6059
const mapState = (s: State) => ({
6160
configs: getConfigs(s),
@@ -254,7 +253,7 @@ function ConfigImpl({
254253
<div>
255254
<div className={s0.label}>Mode</div>
256255
<Select
257-
options={modeOptions}
256+
options={modeOptions.map((mode) => [mode, mode])}
258257
selected={mode}
259258
onChange={(e) => handleChangeValue({ name: 'mode', value: e.target.value })}
260259
/>

src/store/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export type ClashGeneralConfig = {
2222
'redir-port': number;
2323
'allow-lan': boolean;
2424
mode: string;
25+
modes?: string[];
2526
'log-level': string;
2627
};
2728

0 commit comments

Comments
 (0)