mirror of
https://github.com/Myzel394/kleckrelay-website.git
synced 2025-06-20 00:05:26 +02:00
added extension handling for refetching aliases
This commit is contained in:
parent
e88bf31257
commit
44c29bae12
@ -5,6 +5,7 @@ import {useEvent} from "react-use"
|
|||||||
import {ExtensionKleckEvent} from "~/extension-types"
|
import {ExtensionKleckEvent} from "~/extension-types"
|
||||||
import {User} from "~/server-types"
|
import {User} from "~/server-types"
|
||||||
import {AUTHENTICATION_PATHS} from "~/constants/values"
|
import {AUTHENTICATION_PATHS} from "~/constants/values"
|
||||||
|
import {queryClient} from "~/constants/react-query"
|
||||||
|
|
||||||
export interface UseExtensionHandlerResult {
|
export interface UseExtensionHandlerResult {
|
||||||
sharePassword: () => void
|
sharePassword: () => void
|
||||||
@ -80,6 +81,21 @@ export default function useExtensionHandler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
break
|
break
|
||||||
|
case "refetch-aliases":
|
||||||
|
if (document.visibilityState !== "visible") {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
;(async () => {
|
||||||
|
await Promise.allSettled([
|
||||||
|
queryClient.invalidateQueries({
|
||||||
|
queryKey: ["get_alias"],
|
||||||
|
}),
|
||||||
|
queryClient.invalidateQueries({
|
||||||
|
queryKey: ["get_aliases"],
|
||||||
|
}),
|
||||||
|
])
|
||||||
|
})()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[dispatchPasswordStatus],
|
[dispatchPasswordStatus],
|
||||||
|
@ -14,11 +14,16 @@ interface ExtensionKleckMessageEnterPassword {
|
|||||||
type: "enter-password"
|
type: "enter-password"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface ExtensionKleckMessageRefetchAliases {
|
||||||
|
type: "refetch-aliases"
|
||||||
|
}
|
||||||
|
|
||||||
export type ExtensionKleckMessage =
|
export type ExtensionKleckMessage =
|
||||||
| ExtensionKleckMessagePasswordStatus
|
| ExtensionKleckMessagePasswordStatus
|
||||||
| ExtensionKleckMessageAskForPassword
|
| ExtensionKleckMessageAskForPassword
|
||||||
| ExtensionKleckMessageUser
|
| ExtensionKleckMessageUser
|
||||||
| ExtensionKleckMessageEnterPassword
|
| ExtensionKleckMessageEnterPassword
|
||||||
|
| ExtensionKleckMessageRefetchAliases
|
||||||
|
|
||||||
export type ExtensionKleckEvent = MessageEvent & {
|
export type ExtensionKleckEvent = MessageEvent & {
|
||||||
detail: ExtensionKleckMessage
|
detail: ExtensionKleckMessage
|
||||||
|
@ -16,3 +16,5 @@ export * from "./use-is-any-input-focused"
|
|||||||
export {default as useIsAnyInputFocused} from "./use-is-any-input-focused"
|
export {default as useIsAnyInputFocused} from "./use-is-any-input-focused"
|
||||||
export * from "./use-extension-handler"
|
export * from "./use-extension-handler"
|
||||||
export {default as useExtensionHandler} from "./use-extension-handler"
|
export {default as useExtensionHandler} from "./use-extension-handler"
|
||||||
|
export * from "./use-window-visible"
|
||||||
|
export {default as useWindowVisible} from "./use-window-visible"
|
||||||
|
14
src/hooks/use-window-visible.ts
Normal file
14
src/hooks/use-window-visible.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
import {useCallback, useState} from "react"
|
||||||
|
import {useEvent} from "react-use"
|
||||||
|
|
||||||
|
export default function useWindowVisible(isVisibleByDefault = true): boolean {
|
||||||
|
const [isVisible, setIsVisible] = useState<boolean>(isVisibleByDefault)
|
||||||
|
|
||||||
|
const handleVisibilityChange = useCallback(() => {
|
||||||
|
setIsVisible(document.visibilityState === "visible")
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
useEvent("visibilitychange", handleVisibilityChange, document)
|
||||||
|
|
||||||
|
return isVisible
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user