1- import React , { useState } from 'react' ;
1+ import React , { useEffect , useState } from 'react' ;
22
33import { Text , View } from 'react-native' ;
44
@@ -7,7 +7,6 @@ import { SharedValue } from 'react-native-reanimated';
77import { act , fireEvent , render , screen } from '@testing-library/react-native' ;
88
99import { LocalMessage } from '../../../../../../stream-chat-js/dist/types/types' ;
10- import * as imageGalleryContext from '../../../contexts/imageGalleryContext/ImageGalleryContext' ;
1110import {
1211 ImageGalleryContext ,
1312 ImageGalleryContextValue ,
@@ -21,20 +20,23 @@ import { generateMessage } from '../../../mock-builders/generator/message';
2120import { ImageGalleryStateStore } from '../../../state-store/image-gallery-state-store' ;
2221import { ImageGrid , ImageGridType } from '../components/ImageGrid' ;
2322
24- const imageGalleryStoreSetup = ( message : LocalMessage ) => {
25- const initialImageGalleryStateStore = new ImageGalleryStateStore ( ) ;
26- initialImageGalleryStateStore . openImageGallery ( {
27- message,
23+ const ImageGalleryGridComponent = ( props : Partial < ImageGridType > & { message : LocalMessage } ) => {
24+ const { message } = props ;
25+ const [ imageGalleryStateStore ] = useState ( ( ) => new ImageGalleryStateStore ( ) ) ;
26+
27+ useEffect ( ( ) => {
28+ const unsubscribe = imageGalleryStateStore . registerSubscriptions ( ) ;
29+
30+ return ( ) => {
31+ unsubscribe ( ) ;
32+ } ;
33+ } , [ imageGalleryStateStore ] ) ;
34+
35+ imageGalleryStateStore . openImageGallery ( {
36+ messages : [ message ] ,
2837 selectedAttachmentUrl :
2938 message . attachments ?. [ 0 ] ?. asset_url || message . attachments ?. [ 0 ] ?. image_url || '' ,
3039 } ) ;
31- return initialImageGalleryStateStore ;
32- } ;
33-
34- const ImageGalleryGridComponent = ( props : Partial < ImageGridType > & { message : LocalMessage } ) => {
35- const initialImageGalleryStateStore = imageGalleryStoreSetup ( props . message ) ;
36-
37- const [ imageGalleryStateStore ] = useState ( initialImageGalleryStateStore ) ;
3840
3941 return (
4042 < OverlayProvider value = { { overlayOpacity : { value : 1 } as SharedValue < number > } } >
@@ -52,11 +54,6 @@ describe('ImageGalleryOverlay', () => {
5254 const message = generateMessage ( {
5355 attachments : [ generateImageAttachment ( ) , generateImageAttachment ( ) ] ,
5456 } ) as unknown as LocalMessage ;
55- const stateStore = imageGalleryStoreSetup ( message ) ;
56-
57- jest . spyOn ( imageGalleryContext , 'useImageGalleryContext' ) . mockReturnValue ( {
58- imageGalleryStateStore : stateStore ,
59- } as unknown as ImageGalleryContextValue ) ;
6057
6158 render ( < ImageGalleryGridComponent message = { message } /> ) ;
6259
@@ -67,11 +64,6 @@ describe('ImageGalleryOverlay', () => {
6764 const message = generateMessage ( {
6865 attachments : [ generateImageAttachment ( ) , generateVideoAttachment ( { type : 'video' } ) ] ,
6966 } ) as unknown as LocalMessage ;
70- const stateStore = imageGalleryStoreSetup ( message ) ;
71-
72- jest . spyOn ( imageGalleryContext , 'useImageGalleryContext' ) . mockReturnValue ( {
73- imageGalleryStateStore : stateStore ,
74- } as unknown as ImageGalleryContextValue ) ;
7567
7668 render ( < ImageGalleryGridComponent message = { message } /> ) ;
7769
@@ -89,12 +81,6 @@ describe('ImageGalleryOverlay', () => {
8981 attachments : [ generateImageAttachment ( ) , generateVideoAttachment ( { type : 'video' } ) ] ,
9082 } ) as unknown as LocalMessage ;
9183
92- const stateStore = imageGalleryStoreSetup ( message ) ;
93-
94- jest . spyOn ( imageGalleryContext , 'useImageGalleryContext' ) . mockReturnValue ( {
95- imageGalleryStateStore : stateStore ,
96- } as unknown as ImageGalleryContextValue ) ;
97-
9884 render ( < ImageGalleryGridComponent imageComponent = { CustomImageComponent } message = { message } /> ) ;
9985
10086 expect ( screen . queryAllByText ( 'Image Attachment' ) ) . toHaveLength ( 2 ) ;
@@ -106,11 +92,6 @@ describe('ImageGalleryOverlay', () => {
10692 const message = generateMessage ( {
10793 attachments : [ generateImageAttachment ( ) , generateVideoAttachment ( { type : 'video' } ) ] ,
10894 } ) as unknown as LocalMessage ;
109- const stateStore = imageGalleryStoreSetup ( message ) ;
110-
111- jest . spyOn ( imageGalleryContext , 'useImageGalleryContext' ) . mockReturnValue ( {
112- imageGalleryStateStore : stateStore ,
113- } as unknown as ImageGalleryContextValue ) ;
11495
11596 render ( < ImageGalleryGridComponent closeGridView = { closeGridViewMock } message = { message } /> ) ;
11697
0 commit comments