diff options
Diffstat (limited to 'src/components/messages')
-rw-r--r-- | src/components/messages/MessageAvatar.tsx | 44 | ||||
-rw-r--r-- | src/components/messages/TypingIndicator.tsx | 30 | ||||
-rw-r--r-- | src/components/messages/index.ts | 2 |
3 files changed, 76 insertions, 0 deletions
diff --git a/src/components/messages/MessageAvatar.tsx b/src/components/messages/MessageAvatar.tsx new file mode 100644 index 00000000..d275eae5 --- /dev/null +++ b/src/components/messages/MessageAvatar.tsx @@ -0,0 +1,44 @@ +import React, {useContext} from 'react'; +import {Image, StyleSheet, View} from 'react-native'; +import {getMember, normalize} from '../../utils'; +import {useMessageContext} from 'stream-chat-react-native-core'; +import {useStore} from 'react-redux'; +import {ChatContext} from '../../App'; + +const MessageAvatar: React.FC = () => { + const {channel} = useContext(ChatContext); + const state = useStore().getState(); + const member = getMember(channel, state); + const message = useMessageContext(); + + return ( + <View style={styles.messageAvatarContainer}> + {message.lastGroupMessage === true && ( + <Image + style={styles.messageAvatar} + source={ + member + ? {uri: member.user?.thumbnail_url} + : require('../../assets/images/avatar-placeholder.png') + } + /> + )} + </View> + ); +}; + +const styles = StyleSheet.create({ + messageAvatarContainer: { + width: normalize(20), + zIndex: 1, + bottom: 20, + marginRight: '2%', + }, + messageAvatar: { + borderRadius: 50, + width: normalize(18), + height: normalize(18), + }, +}); + +export default MessageAvatar; diff --git a/src/components/messages/TypingIndicator.tsx b/src/components/messages/TypingIndicator.tsx new file mode 100644 index 00000000..be7141a2 --- /dev/null +++ b/src/components/messages/TypingIndicator.tsx @@ -0,0 +1,30 @@ +import React from 'react'; +import {View, Image, StyleSheet} from 'react-native'; +import {SCREEN_WIDTH} from '../../utils'; + +const TypingIndicator: React.FC = () => { + return ( + <View style={styles.typingIndicatorContainer}> + <Image + source={require('../../assets/gifs/loading-animation.gif')} + style={{width: 88, height: 49}} + /> + </View> + ); +}; + +const styles = StyleSheet.create({ + typingIndicatorContainer: { + backgroundColor: '#E4F0F2', + width: 88, + height: 32, + borderRadius: 10, + marginBottom: 10, + marginLeft: SCREEN_WIDTH * 0.09, + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + }, +}); + +export default TypingIndicator; diff --git a/src/components/messages/index.ts b/src/components/messages/index.ts index c809d3d1..d08e9454 100644 --- a/src/components/messages/index.ts +++ b/src/components/messages/index.ts @@ -3,3 +3,5 @@ export {default as ChannelPreview} from './ChannelPreview'; export {default as ChatInput} from './ChatInput'; export {default as ChatHeader} from './ChatHeader'; export {default as ChatInputSubmit} from './ChatInputSubmit'; +export {default as MessageAvatar} from './MessageAvatar'; +export {default as TypingIndicator} from './TypingIndicator'; |