|
1 | | -import React, { useCallback, useEffect, useRef, useState } from 'react'; |
| 1 | +import React, { useCallback, useEffect, useState } from 'react'; |
2 | 2 | import type { LocalMessage, Channel as StreamChatChannel } from 'stream-chat'; |
3 | 3 | import { RouteProp, useFocusEffect, useNavigation } from '@react-navigation/native'; |
4 | 4 | import { |
@@ -33,7 +33,6 @@ import { channelMessageActions } from '../utils/messageActions.tsx'; |
33 | 33 | import { MessageLocation } from '../components/LocationSharing/MessageLocation.tsx'; |
34 | 34 | import { useStreamChatContext } from '../context/StreamChatContext.tsx'; |
35 | 35 | import { CustomAttachmentPickerSelectionBar } from '../components/AttachmentPickerSelectionBar.tsx'; |
36 | | -import BottomSheet from '@gorhom/bottom-sheet'; |
37 | 36 | import { MessageInfoBottomSheet } from '../components/MessageInfoBottomSheet.tsx'; |
38 | 37 |
|
39 | 38 | export type ChannelScreenNavigationProp = NativeStackNavigationProp< |
@@ -130,6 +129,7 @@ export const ChannelScreen: React.FC<ChannelScreenProps> = ({ |
130 | 129 | } = useTheme(); |
131 | 130 | const { t } = useTranslationContext(); |
132 | 131 | const { setThread } = useStreamChatContext(); |
| 132 | + const [modalVisible, setModalVisible] = useState(false); |
133 | 133 | const [selectedMessage, setSelectedMessage] = useState<LocalMessage | undefined>(undefined); |
134 | 134 |
|
135 | 135 | const [channel, setChannel] = useState<StreamChatChannel | undefined>(channelFromProp); |
@@ -186,15 +186,14 @@ export const ChannelScreen: React.FC<ChannelScreenProps> = ({ |
186 | 186 | [channel, navigation, setThread], |
187 | 187 | ); |
188 | 188 |
|
189 | | - const messageInfoBottomSheetRef = useRef<BottomSheet>(null); |
| 189 | + const handleMessageInfo = useCallback((message: LocalMessage) => { |
| 190 | + setSelectedMessage(message); |
| 191 | + setModalVisible(true); |
| 192 | + }, []); |
190 | 193 |
|
191 | | - const handleMessageInfo = useCallback( |
192 | | - (message: LocalMessage) => { |
193 | | - setSelectedMessage(message); |
194 | | - messageInfoBottomSheetRef.current?.snapToIndex(1); |
195 | | - }, |
196 | | - [messageInfoBottomSheetRef], |
197 | | - ); |
| 194 | + const handleMessageInfoClose = useCallback(() => { |
| 195 | + setModalVisible(false); |
| 196 | + }, []); |
198 | 197 |
|
199 | 198 | const messageActions = useCallback( |
200 | 199 | (params: MessageActionsParams) => { |
@@ -249,7 +248,13 @@ export const ChannelScreen: React.FC<ChannelScreenProps> = ({ |
249 | 248 | )} |
250 | 249 | <AITypingIndicatorView channel={channel} /> |
251 | 250 | <MessageInput /> |
252 | | - <MessageInfoBottomSheet message={selectedMessage} ref={messageInfoBottomSheetRef} /> |
| 251 | + {modalVisible && ( |
| 252 | + <MessageInfoBottomSheet |
| 253 | + visible={modalVisible} |
| 254 | + message={selectedMessage} |
| 255 | + onClose={handleMessageInfoClose} |
| 256 | + /> |
| 257 | + )} |
253 | 258 | </Channel> |
254 | 259 | </View> |
255 | 260 | ); |
|
0 commit comments