diff options
Diffstat (limited to 'src/state/lightbox.tsx')
-rw-r--r-- | src/state/lightbox.tsx | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/state/lightbox.tsx b/src/state/lightbox.tsx index 1dae67932..06541106e 100644 --- a/src/state/lightbox.tsx +++ b/src/state/lightbox.tsx @@ -1,10 +1,12 @@ import React from 'react' import type {MeasuredDimensions} from 'react-native-reanimated' +import {nanoid} from 'nanoid/non-secure' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' import {ImageSource} from '#/view/com/lightbox/ImageViewing/@types' -type Lightbox = { +export type Lightbox = { + id: string images: ImageSource[] thumbDims: MeasuredDimensions | null index: number @@ -17,7 +19,7 @@ const LightboxContext = React.createContext<{ }) const LightboxControlContext = React.createContext<{ - openLightbox: (lightbox: Lightbox) => void + openLightbox: (lightbox: Omit<Lightbox, 'id'>) => void closeLightbox: () => boolean }>({ openLightbox: () => {}, @@ -29,9 +31,11 @@ export function Provider({children}: React.PropsWithChildren<{}>) { null, ) - const openLightbox = useNonReactiveCallback((lightbox: Lightbox) => { - setActiveLightbox(lightbox) - }) + const openLightbox = useNonReactiveCallback( + (lightbox: Omit<Lightbox, 'id'>) => { + setActiveLightbox({...lightbox, id: nanoid()}) + }, + ) const closeLightbox = useNonReactiveCallback(() => { let wasActive = !!activeLightbox |