diff options
Diffstat (limited to 'src/screens/chat/ChatScreen.tsx')
-rw-r--r-- | src/screens/chat/ChatScreen.tsx | 161 |
1 files changed, 30 insertions, 131 deletions
diff --git a/src/screens/chat/ChatScreen.tsx b/src/screens/chat/ChatScreen.tsx index 682906ee..161bd07d 100644 --- a/src/screens/chat/ChatScreen.tsx +++ b/src/screens/chat/ChatScreen.tsx @@ -1,24 +1,20 @@ import {useBottomTabBarHeight} from '@react-navigation/bottom-tabs'; import {StackNavigationProp} from '@react-navigation/stack'; -import React, {useContext} from 'react'; -import {Image, StyleSheet, Text, View} from 'react-native'; -import {SafeAreaView} from 'react-native-safe-area-context'; -import {useStore} from 'react-redux'; +import React, {useContext, useEffect} from 'react'; +import {StyleSheet} from 'react-native'; +import {SafeAreaView, useSafeAreaInsets} from 'react-native-safe-area-context'; import { Channel, Chat, MessageInput, MessageList, - OverlayProvider, - useMessageContext, + useAttachmentPickerContext, } from 'stream-chat-react-native'; import {ChatContext} from '../../App'; -import ChatHeader from '../../components/messages/ChatHeader'; -import {TAGG_LIGHT_BLUE} from '../../constants'; +import {ChatHeader, ChatInput, TabsGradient} from '../../components'; import {MainStackParams} from '../../routes'; -import {RootState} from '../../store/rootReducer'; import {ScreenType} from '../../types'; -import {isIPhoneX, SCREEN_WIDTH} from '../../utils'; +import {HeaderHeight, isIPhoneX} from '../../utils'; type ChatScreenNavigationProp = StackNavigationProp<MainStackParams, 'Chat'>; interface ChatScreenProps { @@ -29,9 +25,9 @@ interface ChatScreenProps { */ const ChatScreen: React.FC<ChatScreenProps> = () => { const {channel, chatClient} = useContext(ChatContext); - const state: RootState = useStore().getState(); - const loggedInUserId = state.user.user.userId; const tabbarHeight = useBottomTabBarHeight(); + const {setTopInset} = useAttachmentPickerContext(); + const insets = useSafeAreaInsets(); const chatTheme = { messageList: { @@ -39,52 +35,17 @@ const ChatScreen: React.FC<ChatScreenProps> = () => { backgroundColor: 'white', }, }, + messageInput: { + container: { + backgroundColor: '#f8f8f8', + height: 70, + }, + }, }; - const isOwnMessage = (message) => { - if (message.user.id === loggedInUserId) { - return true; - } else { - return false; - } - }; - - const OwnMessageBubble = ({message}) => ( - <View style={[styles.mainBubbleContainer, styles.mainOwnBubbleContainer]}> - <View style={styles.ownBubbleContainer}> - <View style={styles.ownBubble}> - <Text style={styles.messageText}>{message.text}</Text> - </View> - </View> - {/* TODO: Timestamp */} - </View> - ); - - const UserXMessageBubble = ({message}) => ( - <View style={[styles.mainBubbleContainer, styles.mainUserXBubbleContainer]}> - <Image - style={styles.avatar} - source={ - message.user.thumbnail_url - ? {uri: message.user.thumbnail_url} - : require('../../assets/images/avatar-placeholder.png') - } - /> - <View style={styles.userXBubble}> - <Text style={styles.messageText}>{message.text}</Text> - </View> - {/* TODO: Timestamp */} - </View> - ); - - const CustomMessageUIComponent = () => { - const {message} = useMessageContext(); - if (isOwnMessage(message)) { - return <OwnMessageBubble message={message} />; - } else { - return <UserXMessageBubble message={message} />; - } - }; + useEffect(() => { + setTopInset(insets.top + HeaderHeight); + }); return ( <SafeAreaView @@ -95,23 +56,20 @@ const ChatScreen: React.FC<ChatScreenProps> = () => { ]}> <ChatHeader screenType={ScreenType.Chat} /> <Chat client={chatClient} style={chatTheme}> - <OverlayProvider topInset={0} bottomInset={0}> - <Channel - channel={channel} - keyboardVerticalOffset={0} - OverlayReactionList={() => null} - // MessageSimple={CustomMessageUIComponent} - messageActions={({copyMessage, deleteMessage}) => [ - copyMessage, - deleteMessage, - ]} - // AttachButton={() => null} - > - <MessageList onThreadSelect={() => {}} /> - <MessageInput /> - </Channel> - </OverlayProvider> + <Channel + channel={channel} + keyboardVerticalOffset={0} + OverlayReactionList={() => null} + messageActions={({copyMessage, deleteMessage}) => [ + copyMessage, + deleteMessage, + ]}> + <MessageList onThreadSelect={() => {}} /> + {/* <MessageInput /> */} + <MessageInput Input={ChatInput} /> + </Channel> </Chat> + <TabsGradient /> </SafeAreaView> ); }; @@ -121,65 +79,6 @@ const styles = StyleSheet.create({ backgroundColor: 'white', flex: 1, }, - - submitButton: { - height: 35, - width: 35, - backgroundColor: TAGG_LIGHT_BLUE, - borderRadius: 999, - justifyContent: 'center', - alignItems: 'center', - bottom: -5, - alignSelf: 'flex-end', - }, - messageText: { - width: 196, - paddingHorizontal: 23, - paddingTop: 7.35, - paddingBottom: 12, - }, - mainBubbleContainer: { - marginVertical: 1, - width: SCREEN_WIDTH, - flexDirection: 'row', - }, - mainOwnBubbleContainer: { - justifyContent: 'flex-end', // Different - marginTop: 22, - }, - mainUserXBubbleContainer: { - justifyContent: 'flex-start', - }, - avatar: { - width: 40, - height: 40, - borderRadius: 20, - right: -19, - zIndex: 1, - position: 'absolute', - top: 0, - left: 0, - }, - ownBubbleContainer: {width: 241, marginBottom: 9}, - ownBubble: { - maxWidth: 270, - backgroundColor: '#DEE6F4', - borderColor: '#DEE6F4', - borderWidth: 1, - borderRadius: 10, - alignSelf: 'center', - }, - userXBubble: { - maxWidth: 235, - backgroundColor: '#E4F0F2', - borderColor: '#E4F0F2', - borderWidth: 1, - borderRadius: 10, - zIndex: 0, - alignSelf: 'flex-end', - marginLeft: 25, - marginTop: 14, - }, }); export default ChatScreen; |