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 */}
-
+
>
)
}