import React, { useCallback } from 'react';
import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
import { useRoute, useNavigation } from '@react-navigation/native';
import {
CometChatThreadHeader,
CometChatMessageList,
CometChatMessageComposer,
useTheme,
useCometChatTranslation,
Icon,
} from '@cometchat/chat-uikit-react-native';
import { CometChat } from '@cometchat/chat-sdk-react-native';
const ThreadView = () => {
const route = useRoute();
const navigation = useNavigation();
const theme = useTheme();
const { t } = useCometChatTranslation();
const { message, user, group } = route.params || {};
const handleBack = useCallback(() => {
navigation.goBack();
}, [navigation]);
return (
<View style={{ backgroundColor: theme.color.background1, flex: 1 }}>
{/* Custom Header */}
<View style={styles.headerStyle}>
<TouchableOpacity onPress={handleBack}>
{/* Back icon */}
</TouchableOpacity>
<View style={styles.textStyle}>
<Text style={[theme.typography.heading1.bold, { color: theme.color.textPrimary }]}>
{t('THREAD')}
</Text>
<Text
style={[theme.typography.caption1.regular, { color: theme.color.textSecondary }]}
numberOfLines={1}
>
{user ? user.getName() : group?.getName()}
</Text>
</View>
</View>
{/* Thread Header - shows parent message */}
<CometChatThreadHeader parentMessage={message} />
{/* Threaded Message List */}
<View style={{ flex: 1 }}>
<CometChatMessageList
user={user}
group={group}
parentMessageId={message.getId().toString()}
/>
</View>
{/* Message Composer for Thread */}
<CometChatMessageComposer
user={user}
group={group}
parentMessageId={message.getId()}
/>
</View>
);
};
const styles = StyleSheet.create({
headerStyle: {
paddingVertical: 10,
paddingLeft: 10,
flexDirection: 'row',
},
textStyle: {
paddingLeft: 10,
alignItems: 'flex-start',
},
});
export default ThreadView;