diff --git a/src/renderer/src/components/resources/rule-provider.tsx b/src/renderer/src/components/resources/rule-provider.tsx index c12db85a..0d42832b 100644 --- a/src/renderer/src/components/resources/rule-provider.tsx +++ b/src/renderer/src/components/resources/rule-provider.tsx @@ -53,20 +53,21 @@ const RuleProvider: React.FC = () => { }, [showDetails.title]) const { data, mutate } = useSWR('mihomoRuleProviders', mihomoRuleProviders) - const providers = useMemo(() => { + const allProviders = useMemo(() => { if (!data || !data.providers) return [] - return Object.values(data.providers) - .filter((p) => !filter || includesIgnoreCase(p.name, filter)) - .sort((a, b) => { - if (a.vehicleType === 'File' && b.vehicleType !== 'File') { - return -1 - } - if (a.vehicleType !== 'File' && b.vehicleType === 'File') { - return 1 - } - return 0 - }) - }, [data, filter]) + 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 providers = useMemo(() => { + return allProviders.filter((p) => !filter || includesIgnoreCase(p.name, filter)) + }, [allProviders, filter]) const [updating, setUpdating] = useState(Array(providers.length).fill(false)) const onUpdate = async (name: string, index: number): Promise => { @@ -87,7 +88,7 @@ const RuleProvider: React.FC = () => { } } - if (!providers.length) { + if (!allProviders.length) { return null } @@ -137,68 +138,72 @@ const RuleProvider: React.FC = () => { - {providers.map((provider, index) => ( - - - {provider.ruleCount} - - } - > -
-
{dayjs(provider.updatedAt).fromNow()}
- - -
-
- {provider.format}} - divider={index !== providers.length - 1} - > -
- {provider.vehicleType}::{provider.behavior} -
-
-
- ))} + {providers.length ? ( + providers.map((provider, index) => ( + + + {provider.ruleCount} + + } + > +
+
{dayjs(provider.updatedAt).fromNow()}
+ + +
+
+ {provider.format}} + divider={index !== providers.length - 1} + > +
+ {provider.vehicleType}::{provider.behavior} +
+
+
+ )) + ) : ( +
{t('traffic.noData')}
+ )} ) }