From 98476eff3e898a6dfdcd58699bd323cf8d501c5a Mon Sep 17 00:00:00 2001 From: zjdndjf <186369260+zjdndjf@users.noreply.github.com> Date: Mon, 1 Jun 2026 00:21:00 +0800 Subject: [PATCH] feat: persist IP provider selection, close #1881 --- src/renderer/src/pages/network.tsx | 11 ++++++++--- src/shared/types.d.ts | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/renderer/src/pages/network.tsx b/src/renderer/src/pages/network.tsx index 3bb44d59..41013c23 100644 --- a/src/renderer/src/pages/network.tsx +++ b/src/renderer/src/pages/network.tsx @@ -211,7 +211,9 @@ const InfoRow: React.FC = ({ label, value, mono }) => ( const IPPage: React.FC = () => { const { t } = useTranslation() const { appConfig, patchAppConfig } = useAppConfig() - const [provider, setProvider] = useState('ip.sb') + const [provider, setProvider] = useState( + (appConfig?.networkIPProvider as IPProvider) ?? 'ip.sb' + ) const [ipInfo, setIpInfo] = useState(null) const [loading, setLoading] = useState(false) const [error, setError] = useState(null) @@ -374,7 +376,10 @@ const IPPage: React.FC = () => { try { const data = await fetchIPInfo(IP_ENDPOINTS[target]) setIpInfo(parseProvider(target, data as Record)) - if (p) setProvider(p) + if (p) { + setProvider(p) + patchAppConfig({ networkIPProvider: p }) + } } catch (e) { setError(e instanceof Error ? e.message : t('network.fetchFailed')) setIpInfo(null) @@ -382,7 +387,7 @@ const IPPage: React.FC = () => { setLoading(false) } }, - [provider, t] + [patchAppConfig, provider, t] ) useEffect(() => { diff --git a/src/shared/types.d.ts b/src/shared/types.d.ts index 61920099..de2dbdfa 100644 --- a/src/shared/types.d.ts +++ b/src/shared/types.d.ts @@ -324,6 +324,7 @@ interface IAppConfig { delayTestUrl?: string delayTestTimeout?: number networkLatencyTargets?: INetworkLatencyTarget[] + networkIPProvider?: 'ip.sb' | 'ipwho.is' | 'ipapi.is' subscriptionTimeout?: number encryptedPassword?: number[] controlDns?: boolean