newsnow/src/hooks/useRefetch.ts

32 lines
783 B
TypeScript

import type { SourceID } from "@shared/types"
import { useUpdateQuery } from "./query"
export function useRefetch() {
const { enableLogin, loggedIn, login } = useLogin()
const toaster = useToast()
const updateQuery = useUpdateQuery()
/**
* force refresh
*/
const refresh = useCallback((...sources: SourceID[]) => {
if (enableLogin && !loggedIn) {
toaster("登录后可以强制拉取最新数据", {
type: "warning",
action: {
label: "登录",
onClick: login,
},
})
} else {
refetchSources.clear()
sources.forEach(id => refetchSources.add(id))
updateQuery(...sources)
}
}, [loggedIn, toaster, login, enableLogin, updateQuery])
return {
refresh,
refetchSources,
}
}