mirror of
https://github.com/KuekHaoYang/KVideo.git
synced 2026-08-12 23:33:43 +08:00
66 lines
1.9 KiB
TypeScript
66 lines
1.9 KiB
TypeScript
import { useState, useRef, useCallback } from 'react';
|
|
import { Video, SourceBadge } from '@/lib/types';
|
|
|
|
export function useSearchState() {
|
|
const [loading, setLoading] = useState(false);
|
|
const [results, setResults] = useState<Video[]>([]);
|
|
const [availableSources, setAvailableSources] = useState<SourceBadge[]>([]);
|
|
const [completedSources, setCompletedSources] = useState(0);
|
|
const [totalSources, setTotalSources] = useState(0);
|
|
const [totalVideosFound, setTotalVideosFound] = useState(0);
|
|
const [currentPage, setCurrentPage] = useState(1);
|
|
const [maxPageCount, setMaxPageCount] = useState(1);
|
|
const [loadingMore, setLoadingMore] = useState(false);
|
|
const currentQueryRef = useRef<string>('');
|
|
|
|
const resetState = useCallback(() => {
|
|
setLoading(false);
|
|
setResults([]);
|
|
setAvailableSources([]);
|
|
setCompletedSources(0);
|
|
setTotalSources(0);
|
|
setTotalVideosFound(0);
|
|
setCurrentPage(1);
|
|
setMaxPageCount(1);
|
|
setLoadingMore(false);
|
|
currentQueryRef.current = '';
|
|
}, []);
|
|
|
|
const startSearch = useCallback((query: string) => {
|
|
setLoading(true);
|
|
setResults([]);
|
|
setAvailableSources([]);
|
|
setCompletedSources(0);
|
|
setTotalSources(0);
|
|
setTotalVideosFound(0);
|
|
setCurrentPage(1);
|
|
setMaxPageCount(1);
|
|
setLoadingMore(false);
|
|
currentQueryRef.current = query;
|
|
}, []);
|
|
|
|
return {
|
|
loading,
|
|
setLoading,
|
|
results,
|
|
setResults,
|
|
availableSources,
|
|
setAvailableSources,
|
|
completedSources,
|
|
setCompletedSources,
|
|
totalSources,
|
|
setTotalSources,
|
|
totalVideosFound,
|
|
setTotalVideosFound,
|
|
currentPage,
|
|
setCurrentPage,
|
|
maxPageCount,
|
|
setMaxPageCount,
|
|
loadingMore,
|
|
setLoadingMore,
|
|
currentQueryRef,
|
|
resetState,
|
|
startSearch,
|
|
};
|
|
}
|