From 86eb9885c7fb4166d24a0bd74508d13d20004af5 Mon Sep 17 00:00:00 2001 From: vineyardbovines Date: Tue, 21 Apr 2026 12:02:03 -0400 Subject: [PATCH] refactor(lightbox): move state module to features/lightbox/state --- src/App.native.tsx | 2 +- src/App.web.tsx | 2 +- src/components/Post/Embed/ImageEmbed.tsx | 2 +- src/{state/lightbox.tsx => features/lightbox/state.tsx} | 0 src/screens/Profile/Header/Shell.tsx | 2 +- src/state/util.ts | 2 +- src/view/com/lightbox/ImageViewing/index.tsx | 2 +- src/view/com/lightbox/Lightbox.tsx | 2 +- src/view/com/lightbox/Lightbox.web.tsx | 2 +- src/view/com/profile/ProfileSubpageHeader.tsx | 2 +- src/view/com/util/List.tsx | 2 +- 11 files changed, 10 insertions(+), 10 deletions(-) rename src/{state/lightbox.tsx => features/lightbox/state.tsx} (100%) diff --git a/src/App.native.tsx b/src/App.native.tsx index 3a0a5a6a57..9c97bd41dc 100644 --- a/src/App.native.tsx +++ b/src/App.native.tsx @@ -31,7 +31,6 @@ import {Provider as EmailVerificationProvider} from '#/state/email-verification' import {listenSessionDropped} from '#/state/events' import {GlobalGestureEventsProvider} from '#/state/global-gesture-events' import {Provider as HomeBadgeProvider} from '#/state/home-badge' -import {Provider as LightboxStateProvider} from '#/state/lightbox' import {MessagesProvider} from '#/state/messages' import {Provider as ModalStateProvider} from '#/state/modals' import {init as initPersistedState} from '#/state/persisted' @@ -78,6 +77,7 @@ import { setupDeviceId, } from '#/analytics' import {IS_ANDROID, IS_IOS} from '#/env' +import {Provider as LightboxStateProvider} from '#/features/lightbox/state' import { prefetchLiveEvents, Provider as LiveEventsProvider, diff --git a/src/App.web.tsx b/src/App.web.tsx index a840437a1b..42cec50c87 100644 --- a/src/App.web.tsx +++ b/src/App.web.tsx @@ -24,7 +24,6 @@ import {Provider as DialogStateProvider} from '#/state/dialogs' import {Provider as EmailVerificationProvider} from '#/state/email-verification' import {listenSessionDropped} from '#/state/events' import {Provider as HomeBadgeProvider} from '#/state/home-badge' -import {Provider as LightboxStateProvider} from '#/state/lightbox' import {MessagesProvider} from '#/state/messages' import {Provider as ModalStateProvider} from '#/state/modals' import {init as initPersistedState} from '#/state/persisted' @@ -70,6 +69,7 @@ import { features, setupDeviceId, } from '#/analytics' +import {Provider as LightboxStateProvider} from '#/features/lightbox/state' import { prefetchLiveEvents, Provider as LiveEventsProvider, diff --git a/src/components/Post/Embed/ImageEmbed.tsx b/src/components/Post/Embed/ImageEmbed.tsx index 2adc33b6e6..605feb5d49 100644 --- a/src/components/Post/Embed/ImageEmbed.tsx +++ b/src/components/Post/Embed/ImageEmbed.tsx @@ -2,7 +2,6 @@ import {InteractionManager, View} from 'react-native' import {type AnimatedRef} from 'react-native-reanimated' import {Image} from 'expo-image' -import {useLightboxControls} from '#/state/lightbox' import {type Dimensions} from '#/view/com/lightbox/ImageViewing/@types' import {atoms as a, tokens} from '#/alf' import {AutoSizedImage} from '#/components/images/AutoSizedImage' @@ -10,6 +9,7 @@ import {Gallery} from '#/components/images/Gallery' import {ImageLayoutGrid} from '#/components/images/ImageLayoutGrid' import {PostEmbedViewContext} from '#/components/Post/Embed/types' import {useAnalytics} from '#/analytics' +import {useLightboxControls} from '#/features/lightbox/state' import {type EmbedType} from '#/types/bsky/post' import {type CommonProps} from './types' diff --git a/src/state/lightbox.tsx b/src/features/lightbox/state.tsx similarity index 100% rename from src/state/lightbox.tsx rename to src/features/lightbox/state.tsx diff --git a/src/screens/Profile/Header/Shell.tsx b/src/screens/Profile/Header/Shell.tsx index 1d33539e25..fcdfcad80a 100644 --- a/src/screens/Profile/Header/Shell.tsx +++ b/src/screens/Profile/Header/Shell.tsx @@ -14,7 +14,6 @@ import {BACK_HITSLOP} from '#/lib/constants' import {useHaptics} from '#/lib/haptics' import {type NavigationProp} from '#/lib/routes/types' import {type Shadow} from '#/state/cache/types' -import {useLightboxControls} from '#/state/lightbox' import {useSession} from '#/state/session' import {LoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder' import {UserAvatar} from '#/view/com/util/UserAvatar' @@ -27,6 +26,7 @@ import {LabelsOnMe} from '#/components/moderation/LabelsOnMe' import {ProfileHeaderAlerts} from '#/components/moderation/ProfileHeaderAlerts' import {useAnalytics} from '#/analytics' import {IS_IOS} from '#/env' +import {useLightboxControls} from '#/features/lightbox/state' import {useActorStatus} from '#/features/liveNow' import {EditLiveDialog} from '#/features/liveNow/components/EditLiveDialog' import {LiveIndicator} from '#/features/liveNow/components/LiveIndicator' diff --git a/src/state/util.ts b/src/state/util.ts index cdd8214a96..d52446b660 100644 --- a/src/state/util.ts +++ b/src/state/util.ts @@ -1,7 +1,7 @@ import {useCallback} from 'react' import {useDialogStateControlContext} from '#/state/dialogs' -import {useLightboxControls} from './lightbox' +import {useLightboxControls} from '#/features/lightbox/state' import {useModalControls} from './modals' import {useComposerControls} from './shell/composer' import {useSetDrawerOpen} from './shell/drawer-open' diff --git a/src/view/com/lightbox/ImageViewing/index.tsx b/src/view/com/lightbox/ImageViewing/index.tsx index 40cabd722d..8115baa618 100644 --- a/src/view/com/lightbox/ImageViewing/index.tsx +++ b/src/view/com/lightbox/ImageViewing/index.tsx @@ -44,13 +44,13 @@ import {Trans} from '@lingui/react/macro' import {type Dimensions} from '#/lib/media/types' import {colors, s} from '#/lib/styles' -import {type Lightbox} from '#/state/lightbox' import {Button} from '#/view/com/util/forms/Button' import {Text} from '#/view/com/util/text/Text' import {ScrollView} from '#/view/com/util/Views' import {useTheme} from '#/alf' import {setSystemUITheme} from '#/alf/util/systemUI' import {IS_IOS} from '#/env' +import {type Lightbox} from '#/features/lightbox/state' import {PlatformInfo} from '../../../../../modules/expo-bluesky-swiss-army' import { type ImageSource, diff --git a/src/view/com/lightbox/Lightbox.tsx b/src/view/com/lightbox/Lightbox.tsx index 003d01a94a..6dbc139461 100644 --- a/src/view/com/lightbox/Lightbox.tsx +++ b/src/view/com/lightbox/Lightbox.tsx @@ -2,7 +2,7 @@ import {useCallback} from 'react' import {shareImageModal} from '#/lib/media/manip' import {useSaveImageToMediaLibrary} from '#/lib/media/save-image' -import {useLightbox, useLightboxControls} from '#/state/lightbox' +import {useLightbox, useLightboxControls} from '#/features/lightbox/state' import ImageView from './ImageViewing' export function Lightbox() { diff --git a/src/view/com/lightbox/Lightbox.web.tsx b/src/view/com/lightbox/Lightbox.web.tsx index ddfc4fd8b7..229d52a43a 100644 --- a/src/view/com/lightbox/Lightbox.web.tsx +++ b/src/view/com/lightbox/Lightbox.web.tsx @@ -9,7 +9,6 @@ import {RemoveScrollBar} from 'react-remove-scroll-bar' import {saveImageToMediaLibrary} from '#/lib/media/manip' import {useA11y} from '#/state/a11y' -import {useLightbox, useLightboxControls} from '#/state/lightbox' import { atoms as a, flatten, @@ -30,6 +29,7 @@ import {Loader} from '#/components/Loader' import * as Menu from '#/components/Menu' import * as Toast from '#/components/Toast' import {Text} from '#/components/Typography' +import {useLightbox, useLightboxControls} from '#/features/lightbox/state' import {type ImageSource} from './ImageViewing/@types' export function Lightbox() { diff --git a/src/view/com/profile/ProfileSubpageHeader.tsx b/src/view/com/profile/ProfileSubpageHeader.tsx index 1c0bf40843..eaf71e282f 100644 --- a/src/view/com/profile/ProfileSubpageHeader.tsx +++ b/src/view/com/profile/ProfileSubpageHeader.tsx @@ -13,13 +13,13 @@ import {makeProfileLink} from '#/lib/routes/links' import {type NavigationProp} from '#/lib/routes/types' import {sanitizeHandle} from '#/lib/strings/handles' import {emitSoftReset} from '#/state/events' -import {useLightboxControls} from '#/state/lightbox' import {TextLink} from '#/view/com/util/Link' import {LoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder' import {Text} from '#/view/com/util/text/Text' import {UserAvatar, type UserAvatarType} from '#/view/com/util/UserAvatar' import {StarterPack} from '#/components/icons/StarterPack' import * as Layout from '#/components/Layout' +import {useLightboxControls} from '#/features/lightbox/state' export function ProfileSubpageHeader({ isLoading, diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index d9a7f06af6..ed9481dbc0 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -12,9 +12,9 @@ import {useDedupe} from '#/lib/hooks/useDedupe' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' import {useScrollHandlers} from '#/lib/ScrollContext' import {addStyle} from '#/lib/styles' -import {useLightbox} from '#/state/lightbox' import {useTheme} from '#/alf' import {IS_IOS} from '#/env' +import {useLightbox} from '#/features/lightbox/state' import {FlatList_INTERNAL} from './Views' export type ListMethods = FlatList_INTERNAL