From 1f910c975dee71e2ee31ec574c4466f6aacf7ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B7=AB=E5=87=A4=E8=90=8D?= Date: Thu, 6 Aug 2026 11:48:10 +0800 Subject: [PATCH] Fix KOC resource fuzzy filters --- app/admin-app.tsx | 76 +++++++++++++++++++++++------------- app/globals.css | 26 +++++++----- tests/rendered-html.test.mjs | 6 ++- 3 files changed, 69 insertions(+), 39 deletions(-) diff --git a/app/admin-app.tsx b/app/admin-app.tsx index 7de5315..7443d14 100644 --- a/app/admin-app.tsx +++ b/app/admin-app.tsx @@ -1377,8 +1377,8 @@ function ResourcesPage({ }) { const [query, setQuery] = useState(""); const [platformFilter, setPlatformFilter] = useState("全部平台"); - const [ipFilter, setIpFilter] = useState("全部IP地区"); - const [sourceFilter, setSourceFilter] = useState("全部合作来源"); + const [ipFilter, setIpFilter] = useState(""); + const [sourceFilter, setSourceFilter] = useState(""); const resourceAccounts = useMemo(() => { const deliveriesByAccount = new Map(); distributions.forEach((distribution) => { @@ -1430,31 +1430,37 @@ function ResourcesPage({ ); const filteredAccounts = useMemo(() => { const keyword = query.trim().toLocaleLowerCase("zh-CN"); + const ipKeyword = ipFilter.trim().toLocaleLowerCase("zh-CN"); + const sourceKeyword = sourceFilter.trim().toLocaleLowerCase("zh-CN"); return resourceAccounts.filter(({ account, sources }) => { const searchable = `${account.nickname} ${account.public_account_id}`.toLocaleLowerCase( "zh-CN", ); + const ipLocation = (account.ip_location || "待识别").toLocaleLowerCase( + "zh-CN", + ); return ( (!keyword || searchable.includes(keyword)) && (platformFilter === "全部平台" || account.platform === platformFilter) && - (ipFilter === "全部IP地区" || - (account.ip_location || "待识别") === ipFilter) && - (sourceFilter === "全部合作来源" || - sources.includes(sourceFilter)) + (!ipKeyword || ipLocation.includes(ipKeyword)) && + (!sourceKeyword || + sources.some((source) => + source.toLocaleLowerCase("zh-CN").includes(sourceKeyword), + )) ); }); }, [ipFilter, platformFilter, query, resourceAccounts, sourceFilter]); const hasActiveFilters = Boolean(query.trim()) || platformFilter !== "全部平台" || - ipFilter !== "全部IP地区" || - sourceFilter !== "全部合作来源"; + Boolean(ipFilter.trim()) || + Boolean(sourceFilter.trim()); const clearFilters = () => { setQuery(""); setPlatformFilter("全部平台"); - setIpFilter("全部IP地区"); - setSourceFilter("全部合作来源"); + setIpFilter(""); + setSourceFilter(""); }; return (
@@ -1494,7 +1500,7 @@ function ResourcesPage({
-