diff --git a/examples/SampleApp/src/components/MessageInfoBottomSheet.tsx b/examples/SampleApp/src/components/MessageInfoBottomSheet.tsx
index b989c32203..a4ad65728b 100644
--- a/examples/SampleApp/src/components/MessageInfoBottomSheet.tsx
+++ b/examples/SampleApp/src/components/MessageInfoBottomSheet.tsx
@@ -1,15 +1,14 @@
import React, { useMemo } from 'react';
-import BottomSheet, { BottomSheetFlatList } from '@gorhom/bottom-sheet';
-import { BottomSheetView } from '@gorhom/bottom-sheet';
import {
Avatar,
+ BottomSheetModal,
useChatContext,
useMessageDeliveredData,
useMessageReadData,
useTheme,
} from 'stream-chat-react-native';
import { LocalMessage, UserResponse } from 'stream-chat';
-import { StyleSheet, Text, View } from 'react-native';
+import { FlatList, StyleSheet, Text, View } from 'react-native';
const renderUserItem = ({ item }: { item: UserResponse }) => (
@@ -24,10 +23,12 @@ const renderEmptyText = ({ text }: { text: string }) => (
export const MessageInfoBottomSheet = ({
message,
- ref,
+ visible,
+ onClose,
}: {
message?: LocalMessage;
- ref: React.RefObject;
+ visible: boolean;
+ onClose: () => void;
}) => {
const {
theme: { colors },
@@ -45,10 +46,10 @@ export const MessageInfoBottomSheet = ({
}, [readStatus, client?.user?.id]);
return (
-
-
+
+
Read
- item.id}
@@ -56,15 +57,15 @@ export const MessageInfoBottomSheet = ({
ListEmptyComponent={renderEmptyText({ text: 'No one has read this message.' })}
/>
Delivered
- item.id}
style={styles.flatList}
ListEmptyComponent={renderEmptyText({ text: 'The message was not delivered to anyone.' })}
/>
-
-
+
+
);
};
diff --git a/examples/SampleApp/src/screens/ChannelScreen.tsx b/examples/SampleApp/src/screens/ChannelScreen.tsx
index c978ccfe5a..406938e40d 100644
--- a/examples/SampleApp/src/screens/ChannelScreen.tsx
+++ b/examples/SampleApp/src/screens/ChannelScreen.tsx
@@ -1,4 +1,4 @@
-import React, { useCallback, useEffect, useRef, useState } from 'react';
+import React, { useCallback, useEffect, useState } from 'react';
import type { LocalMessage, Channel as StreamChatChannel } from 'stream-chat';
import { RouteProp, useFocusEffect, useNavigation } from '@react-navigation/native';
import {
@@ -33,7 +33,6 @@ import { channelMessageActions } from '../utils/messageActions.tsx';
import { MessageLocation } from '../components/LocationSharing/MessageLocation.tsx';
import { useStreamChatContext } from '../context/StreamChatContext.tsx';
import { CustomAttachmentPickerSelectionBar } from '../components/AttachmentPickerSelectionBar.tsx';
-import BottomSheet from '@gorhom/bottom-sheet';
import { MessageInfoBottomSheet } from '../components/MessageInfoBottomSheet.tsx';
export type ChannelScreenNavigationProp = NativeStackNavigationProp<
@@ -130,6 +129,7 @@ export const ChannelScreen: React.FC = ({
} = useTheme();
const { t } = useTranslationContext();
const { setThread } = useStreamChatContext();
+ const [modalVisible, setModalVisible] = useState(false);
const [selectedMessage, setSelectedMessage] = useState(undefined);
const [channel, setChannel] = useState(channelFromProp);
@@ -186,15 +186,14 @@ export const ChannelScreen: React.FC = ({
[channel, navigation, setThread],
);
- const messageInfoBottomSheetRef = useRef(null);
+ const handleMessageInfo = useCallback((message: LocalMessage) => {
+ setSelectedMessage(message);
+ setModalVisible(true);
+ }, []);
- const handleMessageInfo = useCallback(
- (message: LocalMessage) => {
- setSelectedMessage(message);
- messageInfoBottomSheetRef.current?.snapToIndex(1);
- },
- [messageInfoBottomSheetRef],
- );
+ const handleMessageInfoClose = useCallback(() => {
+ setModalVisible(false);
+ }, []);
const messageActions = useCallback(
(params: MessageActionsParams) => {
@@ -249,7 +248,13 @@ export const ChannelScreen: React.FC = ({
)}
-
+ {modalVisible && (
+
+ )}
);