修复搜索页带类型参数时仍后台搜索影视类型
This commit is contained in:
+59
-9
@@ -89,6 +89,7 @@ function SearchPageClient() {
|
|||||||
);
|
);
|
||||||
const [netdiskSearchEnabled, setNetdiskSearchEnabled] = useState(false);
|
const [netdiskSearchEnabled, setNetdiskSearchEnabled] = useState(false);
|
||||||
const [magnetSearchEnabled, setMagnetSearchEnabled] = useState(false);
|
const [magnetSearchEnabled, setMagnetSearchEnabled] = useState(false);
|
||||||
|
const [featureFlagsReady, setFeatureFlagsReady] = useState(false);
|
||||||
// 繁体转简体转换器
|
// 繁体转简体转换器
|
||||||
const converterRef = useRef<((text: string) => string) | null>(null);
|
const converterRef = useRef<((text: string) => string) | null>(null);
|
||||||
// 转换器是否已初始化
|
// 转换器是否已初始化
|
||||||
@@ -1016,12 +1017,10 @@ function SearchPageClient() {
|
|||||||
// 获取用户权限
|
// 获取用户权限
|
||||||
const authInfo = getAuthInfoFromBrowserCookie();
|
const authInfo = getAuthInfoFromBrowserCookie();
|
||||||
setUserRole(authInfo?.role || null);
|
setUserRole(authInfo?.role || null);
|
||||||
setNetdiskSearchEnabled(
|
const runtimeConfig = (window as any).RUNTIME_CONFIG || {};
|
||||||
!!(window as any).RUNTIME_CONFIG?.NETDISK_SEARCH_ENABLED
|
setNetdiskSearchEnabled(!!runtimeConfig.NETDISK_SEARCH_ENABLED);
|
||||||
);
|
setMagnetSearchEnabled(!!runtimeConfig.MAGNET_SEARCH_ENABLED);
|
||||||
setMagnetSearchEnabled(
|
setFeatureFlagsReady(true);
|
||||||
!!(window as any).RUNTIME_CONFIG?.MAGNET_SEARCH_ENABLED
|
|
||||||
);
|
|
||||||
|
|
||||||
// 初始化繁体转简体转换器
|
// 初始化繁体转简体转换器
|
||||||
if (typeof window !== 'undefined') {
|
if (typeof window !== 'undefined') {
|
||||||
@@ -1113,6 +1112,8 @@ function SearchPageClient() {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (!featureFlagsReady) return;
|
||||||
|
|
||||||
const typeParam = searchParams.get('type');
|
const typeParam = searchParams.get('type');
|
||||||
const query = searchParams.get('q');
|
const query = searchParams.get('q');
|
||||||
|
|
||||||
@@ -1135,7 +1136,12 @@ function SearchPageClient() {
|
|||||||
if (!query) {
|
if (!query) {
|
||||||
document.getElementById('searchInput')?.focus();
|
document.getElementById('searchInput')?.focus();
|
||||||
}
|
}
|
||||||
}, [searchParams, netdiskSearchEnabled, magnetSearchEnabled]);
|
}, [
|
||||||
|
searchParams,
|
||||||
|
netdiskSearchEnabled,
|
||||||
|
magnetSearchEnabled,
|
||||||
|
featureFlagsReady,
|
||||||
|
]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// 等待转换器初始化完成
|
// 等待转换器初始化完成
|
||||||
@@ -1178,6 +1184,41 @@ function SearchPageClient() {
|
|||||||
|
|
||||||
currentQueryRef.current = query.trim();
|
currentQueryRef.current = query.trim();
|
||||||
|
|
||||||
|
const typeParam = searchParams.get('type');
|
||||||
|
const isVideoSearchType = !typeParam || typeParam === 'video';
|
||||||
|
|
||||||
|
if (!isVideoSearchType) {
|
||||||
|
if (eventSourceRef.current) {
|
||||||
|
try {
|
||||||
|
eventSourceRef.current.close();
|
||||||
|
} catch {}
|
||||||
|
eventSourceRef.current = null;
|
||||||
|
}
|
||||||
|
pendingResultsRef.current = [];
|
||||||
|
if (flushTimerRef.current) {
|
||||||
|
clearTimeout(flushTimerRef.current);
|
||||||
|
flushTimerRef.current = null;
|
||||||
|
}
|
||||||
|
setIsLoading(false);
|
||||||
|
setSearchResults([]);
|
||||||
|
setTotalSources(0);
|
||||||
|
setCompletedSources(0);
|
||||||
|
setIsFromCache(false);
|
||||||
|
if (query) {
|
||||||
|
setSearchQuery(query);
|
||||||
|
setShowResults(true);
|
||||||
|
setShowSuggestions(false);
|
||||||
|
addSearchHistory(query);
|
||||||
|
} else {
|
||||||
|
setShowResults(false);
|
||||||
|
setShowSuggestions(false);
|
||||||
|
}
|
||||||
|
if (forceRefresh) {
|
||||||
|
setForceRefresh(false);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (query) {
|
if (query) {
|
||||||
setSearchQuery(query);
|
setSearchQuery(query);
|
||||||
|
|
||||||
@@ -1357,7 +1398,9 @@ function SearchPageClient() {
|
|||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
// 传统搜索:使用普通接口
|
// 传统搜索:使用普通接口
|
||||||
fetch(appendSpecialSourceParam(`/api/search?q=${encodeURIComponent(trimmed)}`))
|
fetch(
|
||||||
|
appendSpecialSourceParam(`/api/search?q=${encodeURIComponent(trimmed)}`)
|
||||||
|
)
|
||||||
.then((response) => response.json())
|
.then((response) => response.json())
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
if (currentQueryRef.current !== trimmed) return;
|
if (currentQueryRef.current !== trimmed) return;
|
||||||
@@ -1393,6 +1436,8 @@ function SearchPageClient() {
|
|||||||
}, [searchParams, forceRefresh, converterReady]);
|
}, [searchParams, forceRefresh, converterReady]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (!featureFlagsReady) return;
|
||||||
|
|
||||||
const typeParam = searchParams.get('type');
|
const typeParam = searchParams.get('type');
|
||||||
const query = searchParams.get('q');
|
const query = searchParams.get('q');
|
||||||
if (!query || !query.trim()) return;
|
if (!query || !query.trim()) return;
|
||||||
@@ -1410,7 +1455,12 @@ function SearchPageClient() {
|
|||||||
setTriggerAcgSearch((prev) => !prev);
|
setTriggerAcgSearch((prev) => !prev);
|
||||||
}, 100);
|
}, 100);
|
||||||
}
|
}
|
||||||
}, [searchParams, netdiskSearchEnabled, magnetSearchEnabled]);
|
}, [
|
||||||
|
searchParams,
|
||||||
|
netdiskSearchEnabled,
|
||||||
|
magnetSearchEnabled,
|
||||||
|
featureFlagsReady,
|
||||||
|
]);
|
||||||
|
|
||||||
// 组件卸载时,关闭可能存在的连接
|
// 组件卸载时,关闭可能存在的连接
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|||||||
Reference in New Issue
Block a user