diff --git a/src/renderer/src/components/resources/proxy-provider.tsx b/src/renderer/src/components/resources/proxy-provider.tsx index c797e82..a5522e6 100644 --- a/src/renderer/src/components/resources/proxy-provider.tsx +++ b/src/renderer/src/components/resources/proxy-provider.tsx @@ -47,11 +47,16 @@ const ProxyProvider: React.FC = () => { const { data, mutate } = useSWR('mihomoProxyProviders', mihomoProxyProviders) const providers = useMemo(() => { if (!data) return [] - if (!data.providers) return [] - return Object.keys(data.providers) - .map((key) => data.providers[key]) - .filter((provider) => { - return 'subscriptionInfo' in provider + return Object.values(data.providers) + .filter(provider => 'subscriptionInfo' in provider) + .sort((a, b) => { + if (a.vehicleType === 'File' && b.vehicleType !== 'File') { + return -1 + } + if (a.vehicleType !== 'File' && b.vehicleType === 'File') { + return 1 + } + return 0 }) }, [data]) const [updating, setUpdating] = useState(Array(providers.length).fill(false)) diff --git a/src/renderer/src/components/resources/rule-provider.tsx b/src/renderer/src/components/resources/rule-provider.tsx index 91b1a63..6a264ae 100644 --- a/src/renderer/src/components/resources/rule-provider.tsx +++ b/src/renderer/src/components/resources/rule-provider.tsx @@ -47,8 +47,15 @@ const RuleProvider: React.FC = () => { const { data, mutate } = useSWR('mihomoRuleProviders', mihomoRuleProviders) const providers = useMemo(() => { if (!data) return [] - if (!data.providers) return [] - return Object.keys(data.providers).map((key) => data.providers[key]) + return Object.values(data.providers).sort((a, b) => { + if (a.vehicleType === 'File' && b.vehicleType !== 'File') { + return -1 + } + if (a.vehicleType !== 'File' && b.vehicleType === 'File') { + return 1 + } + return 0 + }) }, [data]) const [updating, setUpdating] = useState(Array(providers.length).fill(false))