diff options
author | Eric Bailey <git@esb.lol> | 2024-12-06 09:42:42 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-06 09:42:42 -0600 |
commit | 3ab6c435df5dc3d17fe3e2531231ccf012a4860c (patch) | |
tree | 986a565d56127c23952f88c5c32450842feaad7d /src | |
parent | 143e2c802d1d8d8498e6658c174ed1e657c4ec12 (diff) | |
download | voidsky-3ab6c435df5dc3d17fe3e2531231ccf012a4860c.tar.zst |
Trim back prefs exposure in NUXs, make naming more friendly (#6980)
Diffstat (limited to 'src')
-rw-r--r-- | src/components/dialogs/nuxs/index.tsx | 17 | ||||
-rw-r--r-- | src/state/queries/nuxs/index.ts | 55 |
2 files changed, 48 insertions, 24 deletions
diff --git a/src/components/dialogs/nuxs/index.tsx b/src/components/dialogs/nuxs/index.tsx index 701ae84e6..11d622a4d 100644 --- a/src/components/dialogs/nuxs/index.tsx +++ b/src/components/dialogs/nuxs/index.tsx @@ -3,12 +3,7 @@ import {AppBskyActorDefs} from '@atproto/api' import {useGate} from '#/lib/statsig/statsig' import {logger} from '#/logger' -import { - Nux, - useNuxs, - useRemoveNuxsMutation, - useUpsertNuxMutation, -} from '#/state/queries/nuxs' +import {Nux, useNuxs, useResetNuxs, useSaveNux} from '#/state/queries/nuxs' import { usePreferencesQuery, UsePreferencesQueryResponse, @@ -85,8 +80,8 @@ function Inner({ return isSnoozed() }) const [activeNux, setActiveNux] = React.useState<Nux | undefined>() - const {mutateAsync: upsertNux} = useUpsertNuxMutation() - const {mutate: removeNuxs} = useRemoveNuxsMutation() + const {mutateAsync: saveNux} = useSaveNux() + const {mutate: resetNuxs} = useResetNuxs() const snoozeNuxDialog = React.useCallback(() => { snooze() @@ -102,7 +97,7 @@ function Inner({ // @ts-ignore window.clearNuxDialog = (id: Nux) => { if (!IS_DEV || !id) return - removeNuxs([id]) + resetNuxs([id]) unsnooze() } } @@ -136,7 +131,7 @@ function Inner({ snoozeNuxDialog() // immediately update remote data (affects next reload) - upsertNux({ + saveNux({ id, completed: true, data: undefined, @@ -152,7 +147,7 @@ function Inner({ nuxs, snoozed, snoozeNuxDialog, - upsertNux, + saveNux, gate, currentAccount, currentProfile, diff --git a/src/state/queries/nuxs/index.ts b/src/state/queries/nuxs/index.ts index e183bcfad..6ad59c7a4 100644 --- a/src/state/queries/nuxs/index.ts +++ b/src/state/queries/nuxs/index.ts @@ -10,49 +10,78 @@ import {useAgent} from '#/state/session' export {Nux} from '#/state/queries/nuxs/definitions' -export function useNuxs() { - const {data, ...rest} = usePreferencesQuery() +export function useNuxs(): + | { + nuxs: AppNux[] + status: 'ready' + } + | { + nuxs: undefined + status: 'loading' | 'error' + } { + const {data, isSuccess, isError} = usePreferencesQuery() + const status = isSuccess ? 'ready' : isError ? 'error' : 'loading' - if (data && rest.isSuccess) { - const nuxs = data.bskyAppState.nuxs + if (status === 'ready') { + const nuxs = data?.bskyAppState?.nuxs ?.map(parseAppNux) ?.filter(Boolean) as AppNux[] if (nuxs) { return { nuxs, - ...rest, + status, + } + } else { + return { + nuxs: [], + status, } } } return { nuxs: undefined, - ...rest, + status, } } -export function useNux<T extends Nux>(id: T) { - const {nuxs, ...rest} = useNuxs() +export function useNux<T extends Nux>( + id: T, +): + | { + nux: Extract<AppNux, {id: T}> | undefined + status: 'ready' + } + | { + nux: undefined + status: 'loading' | 'error' + } { + const {nuxs, status} = useNuxs() - if (nuxs && rest.isSuccess) { + if (status === 'ready') { const nux = nuxs.find(nux => nux.id === id) if (nux) { return { nux: nux as Extract<AppNux, {id: T}>, - ...rest, + status, + } + } else { + return { + nux: undefined, + status, } } } return { nux: undefined, - ...rest, + status, } } -export function useUpsertNuxMutation() { +export function useSaveNux() { const queryClient = useQueryClient() const agent = useAgent() @@ -68,7 +97,7 @@ export function useUpsertNuxMutation() { }) } -export function useRemoveNuxsMutation() { +export function useResetNuxs() { const queryClient = useQueryClient() const agent = useAgent() |