about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/components/dialogs/nuxs/TenMillion/index.tsx10
-rw-r--r--src/components/dialogs/nuxs/index.tsx19
2 files changed, 16 insertions, 13 deletions
diff --git a/src/components/dialogs/nuxs/TenMillion/index.tsx b/src/components/dialogs/nuxs/TenMillion/index.tsx
index f5c8435de..c77755145 100644
--- a/src/components/dialogs/nuxs/TenMillion/index.tsx
+++ b/src/components/dialogs/nuxs/TenMillion/index.tsx
@@ -87,6 +87,7 @@ export function TenMillion() {
   const agent = useAgent()
   const nuxDialogs = useNuxDialogContext()
   const [userNumber, setUserNumber] = React.useState<number>(0)
+  const fetching = React.useRef(false)
 
   React.useEffect(() => {
     async function fetchUserNumber() {
@@ -119,9 +120,12 @@ export function TenMillion() {
       }
     }
 
-    networkRetry(3, fetchUserNumber).catch(() => {
-      nuxDialogs.dismissActiveNux()
-    })
+    if (!fetching.current) {
+      fetching.current = true
+      networkRetry(3, fetchUserNumber).catch(() => {
+        nuxDialogs.dismissActiveNux()
+      })
+    }
   }, [
     agent.sessionManager.pdsUrl,
     agent.session?.accessJwt,
diff --git a/src/components/dialogs/nuxs/index.tsx b/src/components/dialogs/nuxs/index.tsx
index c02af59fc..f60c9e8d0 100644
--- a/src/components/dialogs/nuxs/index.tsx
+++ b/src/components/dialogs/nuxs/index.tsx
@@ -49,14 +49,7 @@ function Inner() {
   const dismissActiveNux = React.useCallback(() => {
     if (!activeNux) return
     setActiveNux(undefined)
-    const nux = nuxs?.find(nux => nux.id === activeNux)
-    upsertNux({
-      id: activeNux,
-      completed: true,
-      data: nux?.data,
-      expiresAt: nux?.expiresAt,
-    })
-  }, [activeNux, setActiveNux, upsertNux, nuxs])
+  }, [activeNux, setActiveNux])
 
   if (IS_DEV && typeof window !== 'undefined') {
     // @ts-ignore
@@ -77,12 +70,18 @@ function Inner() {
       if (nux && nux.completed) continue
 
       setActiveNux(id)
-      // snooze immediately upon enabling
+      // immediately snooze (in memory)
       snoozeNuxDialog()
+      // immediately update remote data
+      upsertNux({
+        id,
+        completed: true,
+        data: undefined,
+      })
 
       break
     }
-  }, [nuxs, snoozed, snoozeNuxDialog])
+  }, [nuxs, snoozed, snoozeNuxDialog, upsertNux])
 
   const ctx = React.useMemo(() => {
     return {