fix: bug
This commit is contained in:
@@ -68,50 +68,83 @@ export function useWorksSearch(params: UseWorksSearchParams) {
|
||||
|
||||
const { keyword, category, page = 1, limit = 20 } = params
|
||||
|
||||
const execute = useCallback(async () => {
|
||||
// Only execute query when keyword has content
|
||||
const trimmedKeyword = keyword?.trim() || ''
|
||||
if (!trimmedKeyword) {
|
||||
setData(undefined)
|
||||
setError(null)
|
||||
return { data: undefined, error: null }
|
||||
}
|
||||
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
|
||||
// Build API params - only include category if it's not "全部"
|
||||
const apiParams = {
|
||||
keyword: trimmedKeyword,
|
||||
...(category && category !== '全部' && { category }),
|
||||
page,
|
||||
limit,
|
||||
}
|
||||
|
||||
const templateGeneration = root.get(TemplateGenerationController)
|
||||
const { data: result, error: err } = await handleError(async () =>
|
||||
await templateGeneration.list(apiParams)
|
||||
)
|
||||
|
||||
if (err) {
|
||||
setError(err)
|
||||
setLoading(false)
|
||||
return { data: undefined, error: err }
|
||||
}
|
||||
|
||||
setData(result as WorksSearchResponse)
|
||||
setLoading(false)
|
||||
return { data: result as WorksSearchResponse, error: null }
|
||||
}, [keyword, category, page, limit])
|
||||
|
||||
// Auto-execute search when params change
|
||||
useEffect(() => {
|
||||
const execute = async () => {
|
||||
// Only execute query when keyword has content
|
||||
const trimmedKeyword = keyword?.trim() || ''
|
||||
if (!trimmedKeyword) {
|
||||
setData(undefined)
|
||||
setError(null)
|
||||
return
|
||||
}
|
||||
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
|
||||
// Build API params - only include category if it's not "全部"
|
||||
const apiParams = {
|
||||
keyword: trimmedKeyword,
|
||||
...(category && category !== '全部' && { category }),
|
||||
page,
|
||||
limit,
|
||||
}
|
||||
|
||||
const templateGeneration = root.get(TemplateGenerationController)
|
||||
const { data: result, error: err } = await handleError(async () =>
|
||||
await templateGeneration.list(apiParams)
|
||||
)
|
||||
|
||||
if (err) {
|
||||
setError(err)
|
||||
setLoading(false)
|
||||
return
|
||||
}
|
||||
|
||||
setData(result as WorksSearchResponse)
|
||||
setLoading(false)
|
||||
}
|
||||
|
||||
execute()
|
||||
}, [execute])
|
||||
}, [keyword, category, page, limit])
|
||||
|
||||
const refetch = useCallback(() => {
|
||||
const execute = async () => {
|
||||
const trimmedKeyword = keyword?.trim() || ''
|
||||
if (!trimmedKeyword) {
|
||||
setData(undefined)
|
||||
setError(null)
|
||||
return { data: undefined, error: null }
|
||||
}
|
||||
|
||||
setLoading(true)
|
||||
setError(null)
|
||||
|
||||
const apiParams = {
|
||||
keyword: trimmedKeyword,
|
||||
...(category && category !== '全部' && { category }),
|
||||
page,
|
||||
limit,
|
||||
}
|
||||
|
||||
const templateGeneration = root.get(TemplateGenerationController)
|
||||
const { data: result, error: err } = await handleError(async () =>
|
||||
await templateGeneration.list(apiParams)
|
||||
)
|
||||
|
||||
if (err) {
|
||||
setError(err)
|
||||
setLoading(false)
|
||||
return { data: undefined, error: err }
|
||||
}
|
||||
|
||||
setData(result as WorksSearchResponse)
|
||||
setLoading(false)
|
||||
return { data: result as WorksSearchResponse, error: null }
|
||||
}
|
||||
|
||||
return execute()
|
||||
}, [execute])
|
||||
}, [keyword, category, page, limit])
|
||||
|
||||
return {
|
||||
data,
|
||||
|
||||
Reference in New Issue
Block a user