newsnow/src/hooks/useRefetch.ts

32 lines
783 B
TypeScript
Raw Normal View History

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