From 3232f7ae48154b33c165e3e96266a4161ddeadd6 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Tue, 5 Aug 2025 14:03:29 -0500 Subject: [PATCH] Reorg, rename everything --- src/App.native.tsx | 6 ++--- src/App.web.tsx | 6 ++--- .../Badge.tsx} | 2 +- .../Overlay.tsx} | 2 +- .../__tests__/useAnnouncementState.test.ts | 4 ++-- src/components/PolicyUpdateOverlay/config.ts | 7 ++++++ .../index.tsx | 10 ++++----- .../updates/202508}/config.ts | 2 +- .../updates/202508}/index.tsx | 14 ++++++------ .../usePolicyUpdateState.ts} | 22 +++++++++---------- .../dialogs/BlockingAnnouncements/config.ts | 7 ------ src/screens/Settings/AboutSettings.tsx | 4 ++-- src/state/queries/nuxs/definitions.ts | 6 ++--- src/storage/schema.ts | 6 ++--- .../createNativeStackNavigatorWithAuth.tsx | 6 +++-- src/view/shell/index.tsx | 4 ++-- src/view/shell/index.web.tsx | 4 ++-- 17 files changed, 57 insertions(+), 55 deletions(-) rename src/components/{dialogs/BlockingAnnouncements/AnnouncementBadge.tsx => PolicyUpdateOverlay/Badge.tsx} (95%) rename src/components/{dialogs/BlockingAnnouncements/AnnouncementDialog.tsx => PolicyUpdateOverlay/Overlay.tsx} (99%) rename src/components/{dialogs/BlockingAnnouncements => PolicyUpdateOverlay}/__tests__/useAnnouncementState.test.ts (97%) create mode 100644 src/components/PolicyUpdateOverlay/config.ts rename src/components/{dialogs/BlockingAnnouncements => PolicyUpdateOverlay}/index.tsx (76%) rename src/components/{dialogs/BlockingAnnouncements/announcements/PolicyUpdate202508 => PolicyUpdateOverlay/updates/202508}/config.ts (62%) rename src/components/{dialogs/BlockingAnnouncements/announcements/PolicyUpdate202508 => PolicyUpdateOverlay/updates/202508}/index.tsx (93%) rename src/components/{dialogs/BlockingAnnouncements/useAnnouncementState.ts => PolicyUpdateOverlay/usePolicyUpdateState.ts} (82%) delete mode 100644 src/components/dialogs/BlockingAnnouncements/config.ts diff --git a/src/App.native.tsx b/src/App.native.tsx index 8ad62b1295..1bc232cfbd 100644 --- a/src/App.native.tsx +++ b/src/App.native.tsx @@ -70,9 +70,9 @@ import {Provider as ContextMenuProvider} from '#/components/ContextMenu' import {NuxDialogs} from '#/components/dialogs/nuxs' import {useStarterPackEntry} from '#/components/hooks/useStarterPackEntry' import {Provider as IntentDialogProvider} from '#/components/intents/IntentDialogs' +import {Provider as PolicyUpdateOverlayProvider} from '#/components/PolicyUpdateOverlay' import {Provider as PortalProvider} from '#/components/Portal' import {Provider as VideoVolumeProvider} from '#/components/Post/Embed/VideoEmbed/VideoVolumeContext' -import {Provider as BlockingAnnouncementsPortalProvider} from '#/components/dialogs/BlockingAnnouncements' import {Splash} from '#/Splash' import {BottomSheetProvider} from '../modules/bottom-sheet' import {BackgroundNotificationPreferencesProvider} from '../modules/expo-background-notification-handler/src/BackgroundNotificationHandlerProvider' @@ -221,7 +221,7 @@ function App() { - + @@ -232,7 +232,7 @@ function App() { - + diff --git a/src/App.web.tsx b/src/App.web.tsx index 3af6af8e99..37f9d0a3d7 100644 --- a/src/App.web.tsx +++ b/src/App.web.tsx @@ -54,10 +54,10 @@ import {Shell} from '#/view/shell/index' import {ThemeProvider as Alf} from '#/alf' import {useColorModeTheme} from '#/alf/util/useColorModeTheme' import {Provider as ContextMenuProvider} from '#/components/ContextMenu' -import {Provider as BlockingAnnouncementsPortalProvider} from '#/components/dialogs/BlockingAnnouncements' import {NuxDialogs} from '#/components/dialogs/nuxs' import {useStarterPackEntry} from '#/components/hooks/useStarterPackEntry' import {Provider as IntentDialogProvider} from '#/components/intents/IntentDialogs' +import {Provider as PolicyUpdateOverlayProvider} from '#/components/PolicyUpdateOverlay' import {Provider as PortalProvider} from '#/components/Portal' import {Provider as ActiveVideoProvider} from '#/components/Post/Embed/VideoEmbed/ActiveVideoWebContext' import {Provider as VideoVolumeProvider} from '#/components/Post/Embed/VideoEmbed/VideoVolumeContext' @@ -197,13 +197,13 @@ function App() { - + - + diff --git a/src/components/dialogs/BlockingAnnouncements/AnnouncementBadge.tsx b/src/components/PolicyUpdateOverlay/Badge.tsx similarity index 95% rename from src/components/dialogs/BlockingAnnouncements/AnnouncementBadge.tsx rename to src/components/PolicyUpdateOverlay/Badge.tsx index 255b177ba1..3829f60a5a 100644 --- a/src/components/dialogs/BlockingAnnouncements/AnnouncementBadge.tsx +++ b/src/components/PolicyUpdateOverlay/Badge.tsx @@ -5,7 +5,7 @@ import {Logo} from '#/view/icons/Logo' import {atoms as a, useTheme} from '#/alf' import {Text} from '#/components/Typography' -export function AnnouncementBadge() { +export function Badge() { const t = useTheme() return ( diff --git a/src/components/dialogs/BlockingAnnouncements/AnnouncementDialog.tsx b/src/components/PolicyUpdateOverlay/Overlay.tsx similarity index 99% rename from src/components/dialogs/BlockingAnnouncements/AnnouncementDialog.tsx rename to src/components/PolicyUpdateOverlay/Overlay.tsx index e59a851de7..dd071ef15c 100644 --- a/src/components/dialogs/BlockingAnnouncements/AnnouncementDialog.tsx +++ b/src/components/PolicyUpdateOverlay/Overlay.tsx @@ -15,7 +15,7 @@ import {LockScroll} from '#/components/LockScroll' const GUTTER = 24 -export function AnnouncementDialog({ +export function Overlay({ children, label, }: { diff --git a/src/components/dialogs/BlockingAnnouncements/__tests__/useAnnouncementState.test.ts b/src/components/PolicyUpdateOverlay/__tests__/useAnnouncementState.test.ts similarity index 97% rename from src/components/dialogs/BlockingAnnouncements/__tests__/useAnnouncementState.test.ts rename to src/components/PolicyUpdateOverlay/__tests__/useAnnouncementState.test.ts index 649175e2a8..f6055bf34a 100644 --- a/src/components/dialogs/BlockingAnnouncements/__tests__/useAnnouncementState.test.ts +++ b/src/components/PolicyUpdateOverlay/__tests__/useAnnouncementState.test.ts @@ -3,9 +3,9 @@ import {describe, test} from '@jest/globals' import { computeCompletedState, syncCompletedState, -} from '#/components/dialogs/BlockingAnnouncements/useAnnouncementState' +} from '#/components/PolicyUpdateOverlay/usePolicyUpdateState' -jest.mock('../../../../state/queries/nuxs') +jest.mock('../../../state/queries/nuxs') describe('computeCompletedState', () => { test(`initial state`, () => { diff --git a/src/components/PolicyUpdateOverlay/config.ts b/src/components/PolicyUpdateOverlay/config.ts new file mode 100644 index 0000000000..cd003ed639 --- /dev/null +++ b/src/components/PolicyUpdateOverlay/config.ts @@ -0,0 +1,7 @@ +import {ID} from '#/components/PolicyUpdateOverlay/updates/202508/config' + +/** + * The singulary active update ID. This is configured here to ensure that + * the relationship is clear. + */ +export const ACTIVE_UPDATE_ID = ID diff --git a/src/components/dialogs/BlockingAnnouncements/index.tsx b/src/components/PolicyUpdateOverlay/index.tsx similarity index 76% rename from src/components/dialogs/BlockingAnnouncements/index.tsx rename to src/components/PolicyUpdateOverlay/index.tsx index 03ac0a5a68..ab6e3dfbd9 100644 --- a/src/components/dialogs/BlockingAnnouncements/index.tsx +++ b/src/components/PolicyUpdateOverlay/index.tsx @@ -2,9 +2,9 @@ import {View} from 'react-native' import {isIOS} from '#/platform/detection' import {atoms as a} from '#/alf' -import {Announcement} from '#/components/dialogs/BlockingAnnouncements/announcements/PolicyUpdate202508' -import {useAnnouncementState} from '#/components/dialogs/BlockingAnnouncements/useAnnouncementState' import {FullWindowOverlay} from '#/components/FullWindowOverlay' +import {Content} from '#/components/PolicyUpdateOverlay/updates/202508' +import {usePolicyUpdateState} from '#/components/PolicyUpdateOverlay/usePolicyUpdateState' import {createPortalGroup} from '#/components/Portal' const portalGroup = createPortalGroup() @@ -13,8 +13,8 @@ export const Provider = portalGroup.Provider export const Portal = portalGroup.Portal export const Outlet = portalGroup.Outlet -export function BlockingAnnouncements() { - const state = useAnnouncementState() +export function PolicyUpdateOverlay() { + const state = usePolicyUpdateState() /* * See `window.clearNux` example in `/state/queries/nuxs` for a way to clear @@ -35,7 +35,7 @@ export function BlockingAnnouncements() { // so don't set it on iOS. FullWindowOverlay already does the job. !isIOS && {zIndex: 9999}, ]}> - + diff --git a/src/components/dialogs/BlockingAnnouncements/announcements/PolicyUpdate202508/config.ts b/src/components/PolicyUpdateOverlay/updates/202508/config.ts similarity index 62% rename from src/components/dialogs/BlockingAnnouncements/announcements/PolicyUpdate202508/config.ts rename to src/components/PolicyUpdateOverlay/updates/202508/config.ts index 1c230fd24d..72af31d852 100644 --- a/src/components/dialogs/BlockingAnnouncements/announcements/PolicyUpdate202508/config.ts +++ b/src/components/PolicyUpdateOverlay/updates/202508/config.ts @@ -4,4 +4,4 @@ import {Nux} from '#/state/queries/nuxs' -export const ID = Nux.BlockingAnnouncementPolicyUpdate202508 +export const ID = Nux.PolicyUpdate202508 diff --git a/src/components/dialogs/BlockingAnnouncements/announcements/PolicyUpdate202508/index.tsx b/src/components/PolicyUpdateOverlay/updates/202508/index.tsx similarity index 93% rename from src/components/dialogs/BlockingAnnouncements/announcements/PolicyUpdate202508/index.tsx rename to src/components/PolicyUpdateOverlay/updates/202508/index.tsx index 5a7ca13f62..5355274b12 100644 --- a/src/components/dialogs/BlockingAnnouncements/announcements/PolicyUpdate202508/index.tsx +++ b/src/components/PolicyUpdateOverlay/updates/202508/index.tsx @@ -7,13 +7,13 @@ import {isAndroid} from '#/platform/detection' import {useA11y} from '#/state/a11y' import {atoms as a, useTheme} from '#/alf' import {Button, ButtonText} from '#/components/Button' -import {AnnouncementBadge} from '#/components/dialogs/BlockingAnnouncements/AnnouncementBadge' -import {AnnouncementDialog} from '#/components/dialogs/BlockingAnnouncements/AnnouncementDialog' -import {type AnnouncementState} from '#/components/dialogs/BlockingAnnouncements/useAnnouncementState' import {InlineLinkText, Link} from '#/components/Link' +import {Badge} from '#/components/PolicyUpdateOverlay/Badge' +import {Overlay} from '#/components/PolicyUpdateOverlay/Overlay' +import {type PolicyUpdateState} from '#/components/PolicyUpdateOverlay/usePolicyUpdateState' import {Text} from '#/components/Typography' -export function Announcement({state}: {state: AnnouncementState}) { +export function Content({state}: {state: PolicyUpdateState}) { const t = useTheme() const {_} = useLingui() const {screenReaderEnabled} = useA11y() @@ -63,9 +63,9 @@ export function Announcement({state}: {state: AnnouncementState}) { : _(msg`We're updating our policies`) return ( - + - + {screenReaderEnabled ? ( @@ -184,6 +184,6 @@ export function Announcement({state}: {state: AnnouncementState}) { - + ) } diff --git a/src/components/dialogs/BlockingAnnouncements/useAnnouncementState.ts b/src/components/PolicyUpdateOverlay/usePolicyUpdateState.ts similarity index 82% rename from src/components/dialogs/BlockingAnnouncements/useAnnouncementState.ts rename to src/components/PolicyUpdateOverlay/usePolicyUpdateState.ts index 8b8dfb3e84..ccdc9440d3 100644 --- a/src/components/dialogs/BlockingAnnouncements/useAnnouncementState.ts +++ b/src/components/PolicyUpdateOverlay/usePolicyUpdateState.ts @@ -1,21 +1,21 @@ import {useMemo} from 'react' import {useNux, useSaveNux} from '#/state/queries/nuxs' -import {ACTIVE_ANNOUNCEMENT} from '#/components/dialogs/BlockingAnnouncements/config' +import {ACTIVE_UPDATE_ID} from '#/components/PolicyUpdateOverlay/config' import {IS_DEV} from '#/env' import {device, useStorage} from '#/storage' -export type AnnouncementState = { +export type PolicyUpdateState = { completed: boolean complete: () => void } -export function useAnnouncementState() { - const nux = useNux(ACTIVE_ANNOUNCEMENT) +export function usePolicyUpdateState() { + const nux = useNux(ACTIVE_UPDATE_ID) const {mutate: save, variables} = useSaveNux() - const deviceStorage = useStorage(device, [ACTIVE_ANNOUNCEMENT]) - const devOnlyOverride = - useStorage(device, ['blockingAnnouncementOverride']) && IS_DEV + const deviceStorage = useStorage(device, [ACTIVE_UPDATE_ID]) + const debugOverride = + useStorage(device, ['policyUpdateDebugOverride']) && IS_DEV return useMemo(() => { const nuxIsReady = nux.status === 'ready' const nuxIsCompleted = nux.nux?.completed === true @@ -29,7 +29,7 @@ export function useAnnouncementState() { completedForDevice, }) - if (!devOnlyOverride) { + if (!debugOverride) { syncCompletedState({ nuxIsReady, nuxIsCompleted, @@ -44,13 +44,13 @@ export function useAnnouncementState() { completed, complete() { save({ - id: ACTIVE_ANNOUNCEMENT, + id: ACTIVE_UPDATE_ID, completed: true, data: undefined, }) }, } - }, [nux, save, variables, deviceStorage, devOnlyOverride]) + }, [nux, save, variables, deviceStorage, debugOverride]) } export function computeCompletedState({ @@ -111,7 +111,7 @@ export function syncCompletedState({ !!completedForDevice ) { save({ - id: ACTIVE_ANNOUNCEMENT, + id: ACTIVE_UPDATE_ID, completed: true, data: undefined, }) diff --git a/src/components/dialogs/BlockingAnnouncements/config.ts b/src/components/dialogs/BlockingAnnouncements/config.ts deleted file mode 100644 index 8f58b5c3a0..0000000000 --- a/src/components/dialogs/BlockingAnnouncements/config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import {ID} from '#/components/dialogs/BlockingAnnouncements/announcements/PolicyUpdate202508/config' - -/** - * The singulary active announcement ID. This is configured here to ensure that - * the relationship is clear. - */ -export const ACTIVE_ANNOUNCEMENT = ID diff --git a/src/screens/Settings/AboutSettings.tsx b/src/screens/Settings/AboutSettings.tsx index 4bba812c0c..542f7def08 100644 --- a/src/screens/Settings/AboutSettings.tsx +++ b/src/screens/Settings/AboutSettings.tsx @@ -17,7 +17,6 @@ import * as Toast from '#/view/com/util/Toast' import * as SettingsList from '#/screens/Settings/components/SettingsList' import {atoms as a} from '#/alf' import {Button, ButtonText} from '#/components/Button' -import {ID as PolicyUpdate202508} from '#/components/dialogs/BlockingAnnouncements/announcements/PolicyUpdate202508/config' import {Atom_Stroke2_Corner0_Rounded as AtomIcon} from '#/components/icons/Atom' import {BroomSparkle_Stroke2_Corner2_Rounded as BroomSparkleIcon} from '#/components/icons/BroomSparkle' import {CodeLines_Stroke2_Corner2_Rounded as CodeLinesIcon} from '#/components/icons/CodeLines' @@ -26,6 +25,7 @@ import {Newspaper_Stroke2_Corner2_Rounded as NewspaperIcon} from '#/components/i import {Wrench_Stroke2_Corner2_Rounded as WrenchIcon} from '#/components/icons/Wrench' import * as Layout from '#/components/Layout' import {Loader} from '#/components/Loader' +import {ID as PolicyUpdate202508} from '#/components/PolicyUpdateOverlay/updates/202508/config' import {Text} from '#/components/Typography' import * as env from '#/env' import {device, useStorage} from '#/storage' @@ -198,7 +198,7 @@ export function AboutSettingsScreen({}: Props) { function PolicyUpdateDebug() { const agent = useAgent() const [override, setOverride] = useStorage(device, [ - 'blockingAnnouncementOverride', + 'policyUpdateDebugOverride', ]) return ( diff --git a/src/state/queries/nuxs/definitions.ts b/src/state/queries/nuxs/definitions.ts index 9ed08fd6df..7577d6b205 100644 --- a/src/state/queries/nuxs/definitions.ts +++ b/src/state/queries/nuxs/definitions.ts @@ -13,7 +13,7 @@ export enum Nux { /* * Blocking announcements. New IDs are required for each new announcement. */ - BlockingAnnouncementPolicyUpdate202508 = 'BlockingAnnouncementPolicyUpdate202508', + PolicyUpdate202508 = 'PolicyUpdate202508', } export const nuxNames = new Set(Object.values(Nux)) @@ -44,7 +44,7 @@ export type AppNux = BaseNux< data: undefined } | { - id: Nux.BlockingAnnouncementPolicyUpdate202508 + id: Nux.PolicyUpdate202508 data: undefined } > @@ -56,5 +56,5 @@ export const NuxSchemas: Record | undefined> = { [Nux.ActivitySubscriptions]: undefined, [Nux.AgeAssuranceDismissibleNotice]: undefined, [Nux.AgeAssuranceDismissibleFeedBanner]: undefined, - [Nux.BlockingAnnouncementPolicyUpdate202508]: undefined, + [Nux.PolicyUpdate202508]: undefined, } diff --git a/src/storage/schema.ts b/src/storage/schema.ts index 196552a2a3..421264ac1e 100644 --- a/src/storage/schema.ts +++ b/src/storage/schema.ts @@ -1,4 +1,4 @@ -import {type ID as PolicyUpdate202508} from '#/components/dialogs/BlockingAnnouncements/announcements/PolicyUpdate202508/config' +import {type ID as PolicyUpdate202508} from '#/components/PolicyUpdateOverlay/updates/202508/config' /** * Device data that's specific to the device and does not vary based account @@ -17,9 +17,9 @@ export type Device = { activitySubscriptionsNudged?: boolean /** - * Blocking announcements. New IDs are required for each new announcement. + * Policy update overlays. New IDs are required for each new announcement. */ - blockingAnnouncementOverride?: boolean + policyUpdateDebugOverride?: boolean [PolicyUpdate202508]?: boolean } diff --git a/src/view/shell/createNativeStackNavigatorWithAuth.tsx b/src/view/shell/createNativeStackNavigatorWithAuth.tsx index 63c1d96ae7..bb022a0134 100644 --- a/src/view/shell/createNativeStackNavigatorWithAuth.tsx +++ b/src/view/shell/createNativeStackNavigatorWithAuth.tsx @@ -40,7 +40,7 @@ import {Onboarding} from '#/screens/Onboarding' import {SignupQueued} from '#/screens/SignupQueued' import {Takendown} from '#/screens/Takendown' import {atoms as a, useLayoutBreakpoints} from '#/alf' -import {BlockingAnnouncements} from '#/components/dialogs/BlockingAnnouncements' +import {PolicyUpdateOverlay} from '#/components/PolicyUpdateOverlay' import {BottomBarWeb} from './bottom-bar/BottomBarWeb' import {DesktopLeftNav} from './desktop/LeftNav' import {DesktopRightNav} from './desktop/RightNav' @@ -168,7 +168,9 @@ function NativeStackNavigator({ {!isMobile && } )} - + + {/* Only shown after logged in and onboaring etc are complete */} + {hasSession && } ) } diff --git a/src/view/shell/index.tsx b/src/view/shell/index.tsx index d9e44120ec..4962d459ae 100644 --- a/src/view/shell/index.tsx +++ b/src/view/shell/index.tsx @@ -31,8 +31,8 @@ import {InAppBrowserConsentDialog} from '#/components/dialogs/InAppBrowserConsen import {LinkWarningDialog} from '#/components/dialogs/LinkWarning' import {MutedWordsDialog} from '#/components/dialogs/MutedWords' import {SigninDialog} from '#/components/dialogs/Signin' +import {Outlet as PolicyUpdateOverlayPortal} from '#/components/PolicyUpdateOverlay' import {Outlet as PortalOutlet} from '#/components/Portal' -import {Outlet as BlockingAccouncementsPortalOutlet} from '#/components/dialogs/BlockingAnnouncements' import {RoutesContainer, TabsNavigator} from '#/Navigation' import {BottomSheetOutlet} from '../../../modules/bottom-sheet' import {updateActiveViewAsync} from '../../../modules/expo-bluesky-swiss-army/src/VisibilityView' @@ -165,7 +165,7 @@ function ShellInner() { {/* MUST BE LAST */} - + ) } diff --git a/src/view/shell/index.web.tsx b/src/view/shell/index.web.tsx index 1945b23090..c6d926c9eb 100644 --- a/src/view/shell/index.web.tsx +++ b/src/view/shell/index.web.tsx @@ -18,11 +18,11 @@ import {ModalsContainer} from '#/view/com/modals/Modal' import {ErrorBoundary} from '#/view/com/util/ErrorBoundary' import {atoms as a, select, useTheme} from '#/alf' import {AgeAssuranceRedirectDialog} from '#/components/ageAssurance/AgeAssuranceRedirectDialog' -import {Outlet as BlockingAccouncementsPortalOutlet} from '#/components/dialogs/BlockingAnnouncements' import {EmailDialog} from '#/components/dialogs/EmailDialog' import {LinkWarningDialog} from '#/components/dialogs/LinkWarning' import {MutedWordsDialog} from '#/components/dialogs/MutedWords' import {SigninDialog} from '#/components/dialogs/Signin' +import {Outlet as PolicyUpdateOverlayPortal} from '#/components/PolicyUpdateOverlay' import {Outlet as PortalOutlet} from '#/components/Portal' import {FlatNavigator, RoutesContainer} from '#/Navigation' import {Composer} from './Composer.web' @@ -116,7 +116,7 @@ function ShellInner() { )} {/* MUST BE LAST */} - + ) }