From 0f3ada65adfcf72f510d5ffc2c38506b8e550412 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Tue, 5 Aug 2025 12:32:03 -0500 Subject: [PATCH] Add debug code --- .../useAnnouncementState.ts | 23 ++++++---- src/screens/Settings/AboutSettings.tsx | 43 +++++++++++++++++++ src/storage/schema.ts | 1 + 3 files changed, 58 insertions(+), 9 deletions(-) diff --git a/src/components/dialogs/BlockingAnnouncements/useAnnouncementState.ts b/src/components/dialogs/BlockingAnnouncements/useAnnouncementState.ts index 8a12b5627f..8b8dfb3e84 100644 --- a/src/components/dialogs/BlockingAnnouncements/useAnnouncementState.ts +++ b/src/components/dialogs/BlockingAnnouncements/useAnnouncementState.ts @@ -2,6 +2,7 @@ import {useMemo} from 'react' import {useNux, useSaveNux} from '#/state/queries/nuxs' import {ACTIVE_ANNOUNCEMENT} from '#/components/dialogs/BlockingAnnouncements/config' +import {IS_DEV} from '#/env' import {device, useStorage} from '#/storage' export type AnnouncementState = { @@ -13,6 +14,8 @@ export function useAnnouncementState() { const nux = useNux(ACTIVE_ANNOUNCEMENT) const {mutate: save, variables} = useSaveNux() const deviceStorage = useStorage(device, [ACTIVE_ANNOUNCEMENT]) + const devOnlyOverride = + useStorage(device, ['blockingAnnouncementOverride']) && IS_DEV return useMemo(() => { const nuxIsReady = nux.status === 'ready' const nuxIsCompleted = nux.nux?.completed === true @@ -26,14 +29,16 @@ export function useAnnouncementState() { completedForDevice, }) - syncCompletedState({ - nuxIsReady, - nuxIsCompleted, - nuxIsOptimisticallyCompleted, - completedForDevice, - save, - setCompletedForDevice, - }) + if (!devOnlyOverride) { + syncCompletedState({ + nuxIsReady, + nuxIsCompleted, + nuxIsOptimisticallyCompleted, + completedForDevice, + save, + setCompletedForDevice, + }) + } return { completed, @@ -45,7 +50,7 @@ export function useAnnouncementState() { }) }, } - }, [nux, save, variables, deviceStorage]) + }, [nux, save, variables, deviceStorage, devOnlyOverride]) } export function computeCompletedState({ diff --git a/src/screens/Settings/AboutSettings.tsx b/src/screens/Settings/AboutSettings.tsx index e48841d9f0..66506a579c 100644 --- a/src/screens/Settings/AboutSettings.tsx +++ b/src/screens/Settings/AboutSettings.tsx @@ -12,6 +12,8 @@ import {Statsig} from 'statsig-react-native-expo' import {STATUS_PAGE_URL} from '#/lib/constants' import {type CommonNavigatorParams} from '#/lib/routes/types' import {isAndroid, isIOS, isNative} from '#/platform/detection' +import {Nux} from '#/state/queries/nuxs' +import {useAgent} from '#/state/session' import * as Toast from '#/view/com/util/Toast' import * as SettingsList from '#/screens/Settings/components/SettingsList' import {Atom_Stroke2_Corner0_Rounded as AtomIcon} from '#/components/icons/Atom' @@ -23,6 +25,7 @@ import {Wrench_Stroke2_Corner2_Rounded as WrenchIcon} from '#/components/icons/W import * as Layout from '#/components/Layout' import {Loader} from '#/components/Loader' import * as env from '#/env' +import {device, useStorage} from '#/storage' import {useDemoMode} from '#/storage/hooks/demo-mode' import {useDevMode} from '#/storage/hooks/dev-mode' import {OTAInfo} from './components/OTAInfo' @@ -179,6 +182,8 @@ export function AboutSettingsScreen({}: Props) { )} + + )} @@ -186,3 +191,41 @@ export function AboutSettingsScreen({}: Props) { ) } + +function PolicyUpdateDebug() { + const agent = useAgent() + const [override, setOverride] = useStorage(device, [ + 'blockingAnnouncementOverride', + ]) + + return ( + <> + { + setOverride(!override) + }} + label="Toggle"> + + + Enable policy update override + + + + {override && ( + { + device.set([Nux.BlockingAnnouncementPolicyUpdate202508], false) + agent.bskyAppRemoveNuxs([ + Nux.BlockingAnnouncementPolicyUpdate202508, + ]) + }} + label="Reset policy update nux"> + + + Reset policy update state + + + )} + + ) +} diff --git a/src/storage/schema.ts b/src/storage/schema.ts index 527e0d9e96..1ee780c78c 100644 --- a/src/storage/schema.ts +++ b/src/storage/schema.ts @@ -19,6 +19,7 @@ export type Device = { /** * Blocking announcements. New IDs are required for each new announcement. */ + blockingAnnouncementOverride?: boolean [Nux.BlockingAnnouncementPolicyUpdate202508]?: boolean }