about summary refs log tree commit diff
path: root/src/components/ProfileHoverCard/index.web.tsx
diff options
context:
space:
mode:
authorHailey <me@haileyok.com>2024-04-12 16:51:07 -0700
committerGitHub <noreply@github.com>2024-04-12 16:51:07 -0700
commit7d01ff90d3a941b5d2b04783735608b5d37d0718 (patch)
tree8875911a29fe2ab849a164c042135f6e389e1b05 /src/components/ProfileHoverCard/index.web.tsx
parentcefa0a55e8240e24e2961d929ead2d20743858ce (diff)
downloadvoidsky-7d01ff90d3a941b5d2b04783735608b5d37d0718.tar.zst
wait a sec before showing card (#3516)
Diffstat (limited to 'src/components/ProfileHoverCard/index.web.tsx')
-rw-r--r--src/components/ProfileHoverCard/index.web.tsx22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/components/ProfileHoverCard/index.web.tsx b/src/components/ProfileHoverCard/index.web.tsx
index cfb8cf2fc..0d62a52a3 100644
--- a/src/components/ProfileHoverCard/index.web.tsx
+++ b/src/components/ProfileHoverCard/index.web.tsx
@@ -62,22 +62,25 @@ export function ProfileHoverCardInner(props: ProfileHoverCardProps) {
   const targetHovered = React.useRef(false)
   const cardHovered = React.useRef(false)
   const targetClicked = React.useRef(false)
+  const showTimeout = React.useRef<NodeJS.Timeout>()
 
   const onPointerEnterTarget = React.useCallback(() => {
-    targetHovered.current = true
+    showTimeout.current = setTimeout(async () => {
+      targetHovered.current = true
+
+      if (prefetchedProfile.current) {
+        // if we're navigating
+        if (targetClicked.current) return
+        setHovered(true)
+      } else {
+        await prefetchProfileQuery(props.did)
 
-    if (prefetchedProfile.current) {
-      // if we're navigating
-      if (targetClicked.current) return
-      setHovered(true)
-    } else {
-      prefetchProfileQuery(props.did).then(() => {
         if (targetHovered.current) {
           setHovered(true)
         }
         prefetchedProfile.current = true
-      })
-    }
+      }
+    }, 350)
   }, [props.did, prefetchProfileQuery])
   const onPointerEnterCard = React.useCallback(() => {
     cardHovered.current = true
@@ -86,6 +89,7 @@ export function ProfileHoverCardInner(props: ProfileHoverCardProps) {
     setHovered(true)
   }, [])
   const onPointerLeaveTarget = React.useCallback(() => {
+    clearTimeout(showTimeout.current)
     targetHovered.current = false
     setTimeout(() => {
       if (cardHovered.current) return