Add debug code

This commit is contained in:
Eric Bailey
2025-08-05 12:32:03 -05:00
parent c1b6ae8b6e
commit 0f3ada65ad
3 changed files with 58 additions and 9 deletions
@@ -2,6 +2,7 @@ import {useMemo} from 'react'
import {useNux, useSaveNux} from '#/state/queries/nuxs' import {useNux, useSaveNux} from '#/state/queries/nuxs'
import {ACTIVE_ANNOUNCEMENT} from '#/components/dialogs/BlockingAnnouncements/config' import {ACTIVE_ANNOUNCEMENT} from '#/components/dialogs/BlockingAnnouncements/config'
import {IS_DEV} from '#/env'
import {device, useStorage} from '#/storage' import {device, useStorage} from '#/storage'
export type AnnouncementState = { export type AnnouncementState = {
@@ -13,6 +14,8 @@ export function useAnnouncementState() {
const nux = useNux(ACTIVE_ANNOUNCEMENT) const nux = useNux(ACTIVE_ANNOUNCEMENT)
const {mutate: save, variables} = useSaveNux() const {mutate: save, variables} = useSaveNux()
const deviceStorage = useStorage(device, [ACTIVE_ANNOUNCEMENT]) const deviceStorage = useStorage(device, [ACTIVE_ANNOUNCEMENT])
const devOnlyOverride =
useStorage(device, ['blockingAnnouncementOverride']) && IS_DEV
return useMemo(() => { return useMemo(() => {
const nuxIsReady = nux.status === 'ready' const nuxIsReady = nux.status === 'ready'
const nuxIsCompleted = nux.nux?.completed === true const nuxIsCompleted = nux.nux?.completed === true
@@ -26,14 +29,16 @@ export function useAnnouncementState() {
completedForDevice, completedForDevice,
}) })
syncCompletedState({ if (!devOnlyOverride) {
nuxIsReady, syncCompletedState({
nuxIsCompleted, nuxIsReady,
nuxIsOptimisticallyCompleted, nuxIsCompleted,
completedForDevice, nuxIsOptimisticallyCompleted,
save, completedForDevice,
setCompletedForDevice, save,
}) setCompletedForDevice,
})
}
return { return {
completed, completed,
@@ -45,7 +50,7 @@ export function useAnnouncementState() {
}) })
}, },
} }
}, [nux, save, variables, deviceStorage]) }, [nux, save, variables, deviceStorage, devOnlyOverride])
} }
export function computeCompletedState({ export function computeCompletedState({
+43
View File
@@ -12,6 +12,8 @@ import {Statsig} from 'statsig-react-native-expo'
import {STATUS_PAGE_URL} from '#/lib/constants' import {STATUS_PAGE_URL} from '#/lib/constants'
import {type CommonNavigatorParams} from '#/lib/routes/types' import {type CommonNavigatorParams} from '#/lib/routes/types'
import {isAndroid, isIOS, isNative} from '#/platform/detection' 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 Toast from '#/view/com/util/Toast'
import * as SettingsList from '#/screens/Settings/components/SettingsList' import * as SettingsList from '#/screens/Settings/components/SettingsList'
import {Atom_Stroke2_Corner0_Rounded as AtomIcon} from '#/components/icons/Atom' 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 * as Layout from '#/components/Layout'
import {Loader} from '#/components/Loader' import {Loader} from '#/components/Loader'
import * as env from '#/env' import * as env from '#/env'
import {device, useStorage} from '#/storage'
import {useDemoMode} from '#/storage/hooks/demo-mode' import {useDemoMode} from '#/storage/hooks/demo-mode'
import {useDevMode} from '#/storage/hooks/dev-mode' import {useDevMode} from '#/storage/hooks/dev-mode'
import {OTAInfo} from './components/OTAInfo' import {OTAInfo} from './components/OTAInfo'
@@ -179,6 +182,8 @@ export function AboutSettingsScreen({}: Props) {
</SettingsList.ItemText> </SettingsList.ItemText>
</SettingsList.PressableItem> </SettingsList.PressableItem>
)} )}
<PolicyUpdateDebug />
</> </>
)} )}
</SettingsList.Container> </SettingsList.Container>
@@ -186,3 +191,41 @@ export function AboutSettingsScreen({}: Props) {
</Layout.Screen> </Layout.Screen>
) )
} }
function PolicyUpdateDebug() {
const agent = useAgent()
const [override, setOverride] = useStorage(device, [
'blockingAnnouncementOverride',
])
return (
<>
<SettingsList.PressableItem
onPress={() => {
setOverride(!override)
}}
label="Toggle">
<SettingsList.ItemIcon icon={AtomIcon} />
<SettingsList.ItemText>
Enable policy update override
</SettingsList.ItemText>
</SettingsList.PressableItem>
{override && (
<SettingsList.PressableItem
onPress={() => {
device.set([Nux.BlockingAnnouncementPolicyUpdate202508], false)
agent.bskyAppRemoveNuxs([
Nux.BlockingAnnouncementPolicyUpdate202508,
])
}}
label="Reset policy update nux">
<SettingsList.ItemIcon icon={AtomIcon} />
<SettingsList.ItemText>
Reset policy update state
</SettingsList.ItemText>
</SettingsList.PressableItem>
)}
</>
)
}
+1
View File
@@ -19,6 +19,7 @@ export type Device = {
/** /**
* Blocking announcements. New IDs are required for each new announcement. * Blocking announcements. New IDs are required for each new announcement.
*/ */
blockingAnnouncementOverride?: boolean
[Nux.BlockingAnnouncementPolicyUpdate202508]?: boolean [Nux.BlockingAnnouncementPolicyUpdate202508]?: boolean
} }