mirror of
https://github.com/tailscale/tailscale.git
synced 2025-01-05 23:07:44 +00:00
client/web: refresh on tab focus
Refresh node data when user switches to the web client browser tab. This helps clean up the auth flow where they're sent to another tab to authenticate then return to the original tab, where the data should be refreshed to pick up the login updates. Updates tailscale/corp#13775 Signed-off-by: Sonia Appasamy <sonia@tailscale.com>
This commit is contained in:
parent
824cd02d6d
commit
349c05d38d
@ -38,7 +38,7 @@ export default function useNodeData() {
|
||||
const fetchNodeData = useCallback(() => {
|
||||
apiFetch("/api/data")
|
||||
.then((r) => r.json())
|
||||
.then((data) => setData(data))
|
||||
.then((d) => setData(d))
|
||||
.catch((error) => console.error(error))
|
||||
}, [setData])
|
||||
|
||||
@ -114,8 +114,21 @@ export default function useNodeData() {
|
||||
)
|
||||
|
||||
useEffect(
|
||||
fetchNodeData,
|
||||
// Initial data load.
|
||||
() => {
|
||||
// Initial data load.
|
||||
fetchNodeData()
|
||||
|
||||
// Refresh on browser tab focus.
|
||||
const onVisibilityChange = () => {
|
||||
document.visibilityState === "visible" && fetchNodeData()
|
||||
}
|
||||
window.addEventListener("visibilitychange", onVisibilityChange)
|
||||
return () => {
|
||||
// Cleanup browser tab listener.
|
||||
window.removeEventListener("visibilitychange", onVisibilityChange)
|
||||
}
|
||||
},
|
||||
// Run once.
|
||||
[]
|
||||
)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user