Protect against other exit methods, protect against multiple fetches

zio/dev^2
Eric Bailey 2024-09-11 21:56:20 -05:00
parent 45c8d89d92
commit c99e43d6c6
2 changed files with 16 additions and 13 deletions

View File

@ -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() {
}
}
if (!fetching.current) {
fetching.current = true
networkRetry(3, fetchUserNumber).catch(() => {
nuxDialogs.dismissActiveNux()
})
}
}, [
agent.sessionManager.pdsUrl,
agent.session?.accessJwt,

View File

@ -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 {