From 042f73b4b73f7a7db3f7605c0b9167e6535fdd29 Mon Sep 17 00:00:00 2001 From: Shravya Ramesh Date: Mon, 19 Apr 2021 19:38:38 -0700 Subject: Read receipts and timestamps --- src/assets/icons/messages/delivered_icon.png | Bin 0 -> 65998 bytes src/assets/icons/messages/read_icon.png | Bin 0 -> 65884 bytes src/assets/icons/messages/sent_icon.png | Bin 0 -> 56234 bytes src/screens/chat/ChatScreen.tsx | 82 ++++++++++++++++++++++++++- 4 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 src/assets/icons/messages/delivered_icon.png create mode 100644 src/assets/icons/messages/read_icon.png create mode 100644 src/assets/icons/messages/sent_icon.png (limited to 'src') diff --git a/src/assets/icons/messages/delivered_icon.png b/src/assets/icons/messages/delivered_icon.png new file mode 100644 index 00000000..0afa7e90 Binary files /dev/null and b/src/assets/icons/messages/delivered_icon.png differ diff --git a/src/assets/icons/messages/read_icon.png b/src/assets/icons/messages/read_icon.png new file mode 100644 index 00000000..a82b705d Binary files /dev/null and b/src/assets/icons/messages/read_icon.png differ diff --git a/src/assets/icons/messages/sent_icon.png b/src/assets/icons/messages/sent_icon.png new file mode 100644 index 00000000..55988c78 Binary files /dev/null and b/src/assets/icons/messages/sent_icon.png differ diff --git a/src/screens/chat/ChatScreen.tsx b/src/screens/chat/ChatScreen.tsx index 6a25797e..cafcada8 100644 --- a/src/screens/chat/ChatScreen.tsx +++ b/src/screens/chat/ChatScreen.tsx @@ -1,7 +1,7 @@ import {useBottomTabBarHeight} from '@react-navigation/bottom-tabs'; import {StackNavigationProp} from '@react-navigation/stack'; -import React, {useContext, useEffect, useState} from 'react'; -import {StyleSheet, Text, View} from 'react-native'; +import React, {useContext, useEffect} from 'react'; +import {StyleSheet, Text, View, Image} from 'react-native'; import {SafeAreaView, useSafeAreaInsets} from 'react-native-safe-area-context'; import { Channel, @@ -11,6 +11,7 @@ import { MessageList, useAttachmentPickerContext, Theme, + useMessageContext, } from 'stream-chat-react-native'; import moment from 'moment'; import {ChatContext} from '../../App'; @@ -74,6 +75,24 @@ const ChatScreen: React.FC = () => { flexDirection: 'row', }, content: { + deletedContainer: {}, + deletedContainerInner: { + borderColor: 'transparent', + borderBottomLeftRadius: 10, + borderTopLeftRadius: 10, + borderBottomRightRadius: 10, + borderTopRightRadius: 10, + }, + deletedMetaText: { + paddingHorizontal: 10, + }, + deletedText: { + em: { + fontSize: 15, + fontStyle: 'italic', + fontWeight: '400', + }, + }, metaContainer: { marginLeft: 5, }, @@ -138,6 +157,64 @@ const ChatScreen: React.FC = () => { ); }; + const MessageFooter = () => { + const message = useMessageContext(); + if (message.message.type === 'deleted') { + return <>; + } else { + const printTime = moment(message.message.created_at).format('h:mmA'); + const styles = message.isMyMessage ? {marginRight: 5} : {marginLeft: 5}; + + if (message.lastGroupMessage) { + return ( + + {readReceipts(message)} + + {printTime} + + + ); + } else { + return <>; + } + } + }; + + const readReceipts = (message) => { + const readByLocal = message.message.readBy; + if (message.isMyMessage) { + if (readByLocal) { + return ( + + ); + } else if (message.message.status === 'received') { + return ( + + ); + } else if (message.message.status === 'sending') { + return ( + + ); + } else { + return <>; + } + } + }; + return ( = () => { copyMessage, deleteMessage, ]} + MessageFooter={MessageFooter} DateHeader={DateHeader} TypingIndicator={TypingIndicator} myMessageTheme={loggedInUsersMessageTheme} -- cgit v1.2.3-70-g09d2