stream-chat-react-native-core 5.29.1-beta.4 → 5.30.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Channel/Channel.js +4 -2
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -2
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js +1 -1
- package/lib/commonjs/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +6 -14
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +11 -0
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +12 -27
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js +10 -12
- package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageEditedTimestamp.js +55 -0
- package/lib/commonjs/components/Message/MessageSimple/MessageEditedTimestamp.js.map +1 -0
- package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +94 -58
- package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +6 -0
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageTimestamp.js +48 -0
- package/lib/commonjs/components/Message/MessageSimple/MessageTimestamp.js.map +1 -0
- package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +5 -1
- package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/commonjs/components/MessageList/InlineDateSeparator.js +6 -2
- package/lib/commonjs/components/MessageList/InlineDateSeparator.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +9 -6
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageSystem.js +30 -27
- package/lib/commonjs/components/MessageList/MessageSystem.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getGroupStyles.js +3 -2
- package/lib/commonjs/components/MessageList/utils/getGroupStyles.js.map +1 -1
- package/lib/commonjs/components/index.js +11 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +3 -0
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/i18n/en.json +2 -1
- package/lib/commonjs/i18n/es.json +39 -38
- package/lib/commonjs/i18n/fr.json +39 -38
- package/lib/commonjs/i18n/he.json +39 -38
- package/lib/commonjs/i18n/hi.json +39 -38
- package/lib/commonjs/i18n/it.json +39 -38
- package/lib/commonjs/i18n/ja.json +39 -38
- package/lib/commonjs/i18n/ko.json +39 -38
- package/lib/commonjs/i18n/nl.json +39 -38
- package/lib/commonjs/i18n/pt-BR.json +39 -38
- package/lib/commonjs/i18n/ru.json +39 -38
- package/lib/commonjs/i18n/tr.json +39 -38
- package/lib/commonjs/utils/getDateString.js +31 -0
- package/lib/commonjs/utils/getDateString.js.map +1 -0
- package/lib/commonjs/utils/utils.js +5 -1
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Channel/Channel.js +4 -2
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -2
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js +1 -1
- package/lib/module/components/ChannelPreview/hooks/useLatestMessagePreview.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +6 -14
- package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
- package/lib/module/components/Message/Message.js +11 -0
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageContent.js +12 -27
- package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageDeleted.js +10 -12
- package/lib/module/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageEditedTimestamp.js +55 -0
- package/lib/module/components/Message/MessageSimple/MessageEditedTimestamp.js.map +1 -0
- package/lib/module/components/Message/MessageSimple/MessageFooter.js +94 -58
- package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageSimple.js +6 -0
- package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageTimestamp.js +48 -0
- package/lib/module/components/Message/MessageSimple/MessageTimestamp.js.map +1 -0
- package/lib/module/components/Message/hooks/useCreateMessageContext.js +5 -1
- package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/module/components/MessageList/InlineDateSeparator.js +6 -2
- package/lib/module/components/MessageList/InlineDateSeparator.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +9 -6
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageList/MessageSystem.js +30 -27
- package/lib/module/components/MessageList/MessageSystem.js.map +1 -1
- package/lib/module/components/MessageList/utils/getGroupStyles.js +3 -2
- package/lib/module/components/MessageList/utils/getGroupStyles.js.map +1 -1
- package/lib/module/components/index.js +11 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +3 -0
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/i18n/en.json +2 -1
- package/lib/module/i18n/es.json +39 -38
- package/lib/module/i18n/fr.json +39 -38
- package/lib/module/i18n/he.json +39 -38
- package/lib/module/i18n/hi.json +39 -38
- package/lib/module/i18n/it.json +39 -38
- package/lib/module/i18n/ja.json +39 -38
- package/lib/module/i18n/ko.json +39 -38
- package/lib/module/i18n/nl.json +39 -38
- package/lib/module/i18n/pt-BR.json +39 -38
- package/lib/module/i18n/ru.json +39 -38
- package/lib/module/i18n/tr.json +39 -38
- package/lib/module/utils/getDateString.js +31 -0
- package/lib/module/utils/getDateString.js.map +1 -0
- package/lib/module/utils/utils.js +5 -1
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Channel/Channel.d.ts +1 -1
- package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
- package/lib/typescript/components/ImageGallery/components/ImageGalleryHeader.d.ts.map +1 -1
- package/lib/typescript/components/Message/Message.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageDeleted.d.ts +8 -8
- package/lib/typescript/components/Message/MessageSimple/MessageDeleted.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageEditedTimestamp.d.ts +7 -0
- package/lib/typescript/components/Message/MessageSimple/MessageEditedTimestamp.d.ts.map +1 -0
- package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageFooter.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts.map +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageTimestamp.d.ts +22 -0
- package/lib/typescript/components/Message/MessageSimple/MessageTimestamp.d.ts.map +1 -0
- package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
- package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/DateHeader.d.ts +1 -1
- package/lib/typescript/components/MessageList/DateHeader.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/InlineDateSeparator.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageSystem.d.ts +0 -8
- package/lib/typescript/components/MessageList/MessageSystem.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/utils/getGroupStyles.d.ts.map +1 -1
- package/lib/typescript/components/index.d.ts +1 -0
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +1 -1
- package/lib/typescript/contexts/channelContext/ChannelContext.d.ts.map +1 -1
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts +5 -1
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts.map +1 -1
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +6 -5
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +3 -0
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
- package/lib/typescript/i18n/en.json +2 -1
- package/lib/typescript/i18n/es.json +39 -38
- package/lib/typescript/i18n/fr.json +39 -38
- package/lib/typescript/i18n/he.json +39 -38
- package/lib/typescript/i18n/hi.json +39 -38
- package/lib/typescript/i18n/it.json +39 -38
- package/lib/typescript/i18n/ja.json +39 -38
- package/lib/typescript/i18n/ko.json +39 -38
- package/lib/typescript/i18n/nl.json +39 -38
- package/lib/typescript/i18n/pt-BR.json +39 -38
- package/lib/typescript/i18n/ru.json +39 -38
- package/lib/typescript/i18n/tr.json +39 -38
- package/lib/typescript/utils/Streami18n.d.ts +6 -0
- package/lib/typescript/utils/Streami18n.d.ts.map +1 -1
- package/lib/typescript/utils/getDateString.d.ts +30 -0
- package/lib/typescript/utils/getDateString.d.ts.map +1 -0
- package/lib/typescript/utils/utils.d.ts +6 -0
- package/lib/typescript/utils/utils.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/Channel/Channel.tsx +4 -3
- package/src/components/Channel/hooks/useCreateMessagesContext.ts +2 -2
- package/src/components/ChannelPreview/hooks/useLatestMessagePreview.ts +1 -1
- package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +3 -31
- package/src/components/Message/Message.tsx +7 -0
- package/src/components/Message/MessageSimple/MessageContent.tsx +13 -33
- package/src/components/Message/MessageSimple/MessageDeleted.tsx +13 -31
- package/src/components/Message/MessageSimple/MessageEditedTimestamp.tsx +56 -0
- package/src/components/Message/MessageSimple/MessageFooter.tsx +104 -63
- package/src/components/Message/MessageSimple/MessageSimple.tsx +14 -2
- package/src/components/Message/MessageSimple/MessageTimestamp.tsx +64 -0
- package/src/components/Message/hooks/useCreateMessageContext.ts +5 -0
- package/src/components/MessageList/DateHeader.tsx +1 -1
- package/src/components/MessageList/InlineDateSeparator.tsx +8 -8
- package/src/components/MessageList/MessageList.tsx +9 -9
- package/src/components/MessageList/MessageSystem.tsx +35 -43
- package/src/components/MessageList/utils/getGroupStyles.ts +7 -4
- package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +20 -12
- package/src/components/index.ts +1 -0
- package/src/contexts/channelContext/ChannelContext.tsx +1 -1
- package/src/contexts/messageContext/MessageContext.tsx +4 -0
- package/src/contexts/messagesContext/MessagesContext.tsx +6 -5
- package/src/contexts/themeContext/utils/theme.ts +6 -0
- package/src/i18n/en.json +2 -1
- package/src/i18n/es.json +39 -38
- package/src/i18n/fr.json +39 -38
- package/src/i18n/he.json +39 -38
- package/src/i18n/hi.json +39 -38
- package/src/i18n/it.json +39 -38
- package/src/i18n/ja.json +39 -38
- package/src/i18n/ko.json +39 -38
- package/src/i18n/nl.json +39 -38
- package/src/i18n/pt-BR.json +39 -38
- package/src/i18n/ru.json +39 -38
- package/src/i18n/tr.json +39 -38
- package/src/utils/getDateString.ts +67 -0
- package/src/utils/utils.ts +11 -0
- package/src/version.json +1 -1
|
@@ -4,14 +4,11 @@ import Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-nati
|
|
|
4
4
|
|
|
5
5
|
import { useOverlayContext } from '../../../contexts/overlayContext/OverlayContext';
|
|
6
6
|
import { useTheme } from '../../../contexts/themeContext/ThemeContext';
|
|
7
|
-
import {
|
|
8
|
-
isDayOrMoment,
|
|
9
|
-
TDateTimeParserOutput,
|
|
10
|
-
useTranslationContext,
|
|
11
|
-
} from '../../../contexts/translationContext/TranslationContext';
|
|
7
|
+
import { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';
|
|
12
8
|
import { Close } from '../../../icons';
|
|
13
9
|
|
|
14
10
|
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
11
|
+
import { getDateString } from '../../../utils/getDateString';
|
|
15
12
|
import type { Photo } from '../ImageGallery';
|
|
16
13
|
|
|
17
14
|
const ReanimatedSafeAreaView = Animated.createAnimatedComponent
|
|
@@ -101,32 +98,7 @@ export const ImageGalleryHeader = <
|
|
|
101
98
|
const { t, tDateTimeParser } = useTranslationContext();
|
|
102
99
|
const { setOverlay } = useOverlayContext();
|
|
103
100
|
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* .calendar and .fromNow can be initialized after the first render,
|
|
108
|
-
* and attempting to access them at that time will cause an error
|
|
109
|
-
* to be thrown.
|
|
110
|
-
*
|
|
111
|
-
* This falls back to null if neither exist.
|
|
112
|
-
*/
|
|
113
|
-
const getDateObject = (date: TDateTimeParserOutput | null) => {
|
|
114
|
-
if (date === null || !isDayOrMoment(date)) {
|
|
115
|
-
return null;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
if (date.calendar) {
|
|
119
|
-
return date.calendar();
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
if (date.fromNow) {
|
|
123
|
-
return date.fromNow();
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
return null;
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
const date = getDateObject(parsedDate);
|
|
101
|
+
const date = getDateString({ calendar: true, date: photo?.created_at, tDateTimeParser });
|
|
130
102
|
|
|
131
103
|
const headerStyle = useAnimatedStyle<ViewStyle>(() => ({
|
|
132
104
|
opacity: opacity.value,
|
|
@@ -48,6 +48,7 @@ import {
|
|
|
48
48
|
hasOnlyEmojis,
|
|
49
49
|
isBlockedMessage,
|
|
50
50
|
isBouncedMessage,
|
|
51
|
+
isEditedMessage,
|
|
51
52
|
MessageStatusTypes,
|
|
52
53
|
} from '../../utils/utils';
|
|
53
54
|
|
|
@@ -233,6 +234,7 @@ const MessageWithContext = <
|
|
|
233
234
|
props: MessagePropsWithContext<StreamChatGenerics>,
|
|
234
235
|
) => {
|
|
235
236
|
const [isBounceDialogOpen, setIsBounceDialogOpen] = useState(false);
|
|
237
|
+
const [isEditedMessageOpen, setIsEditedMessageOpen] = useState(false);
|
|
236
238
|
const isMessageTypeDeleted = props.message.type === 'deleted';
|
|
237
239
|
|
|
238
240
|
const {
|
|
@@ -334,6 +336,9 @@ const MessageWithContext = <
|
|
|
334
336
|
if (dismissKeyboardOnMessageTouch) {
|
|
335
337
|
Keyboard.dismiss();
|
|
336
338
|
}
|
|
339
|
+
if (isEditedMessage(message)) {
|
|
340
|
+
setIsEditedMessageOpen((prevState) => !prevState);
|
|
341
|
+
}
|
|
337
342
|
const quotedMessage = message.quoted_message as MessageType<StreamChatGenerics>;
|
|
338
343
|
if (error) {
|
|
339
344
|
/**
|
|
@@ -677,6 +682,7 @@ const MessageWithContext = <
|
|
|
677
682
|
handleToggleReaction,
|
|
678
683
|
hasReactions,
|
|
679
684
|
images: attachments.images,
|
|
685
|
+
isEditedMessageOpen,
|
|
680
686
|
isMyMessage,
|
|
681
687
|
lastGroupMessage: groupStyles?.[0] === 'single' || groupStyles?.[0] === 'bottom',
|
|
682
688
|
lastReceivedId,
|
|
@@ -727,6 +733,7 @@ const MessageWithContext = <
|
|
|
727
733
|
otherAttachments: attachments.other,
|
|
728
734
|
preventPress,
|
|
729
735
|
reactions,
|
|
736
|
+
setIsEditedMessageOpen,
|
|
730
737
|
showAvatar,
|
|
731
738
|
showMessageOverlay,
|
|
732
739
|
showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,
|
|
@@ -19,8 +19,6 @@ import {
|
|
|
19
19
|
} from '../../../contexts/messagesContext/MessagesContext';
|
|
20
20
|
import { useTheme } from '../../../contexts/themeContext/ThemeContext';
|
|
21
21
|
import {
|
|
22
|
-
isDayOrMoment,
|
|
23
|
-
TDateTimeParserInput,
|
|
24
22
|
TranslationContextValue,
|
|
25
23
|
useTranslationContext,
|
|
26
24
|
} from '../../../contexts/translationContext/TranslationContext';
|
|
@@ -66,6 +64,7 @@ export type MessageContentPropsWithContext<
|
|
|
66
64
|
MessageContextValue<StreamChatGenerics>,
|
|
67
65
|
| 'alignment'
|
|
68
66
|
| 'disabled'
|
|
67
|
+
| 'isEditedMessageOpen'
|
|
69
68
|
| 'goToMessage'
|
|
70
69
|
| 'groupStyles'
|
|
71
70
|
| 'hasReactions'
|
|
@@ -88,7 +87,6 @@ export type MessageContentPropsWithContext<
|
|
|
88
87
|
| 'additionalTouchableProps'
|
|
89
88
|
| 'Attachment'
|
|
90
89
|
| 'FileAttachmentGroup'
|
|
91
|
-
| 'formatDate'
|
|
92
90
|
| 'Gallery'
|
|
93
91
|
| 'isAttachmentEqual'
|
|
94
92
|
| 'MessageFooter'
|
|
@@ -102,7 +100,7 @@ export type MessageContentPropsWithContext<
|
|
|
102
100
|
| 'onPressInMessage'
|
|
103
101
|
| 'Reply'
|
|
104
102
|
> &
|
|
105
|
-
Pick<TranslationContextValue, 't'
|
|
103
|
+
Pick<TranslationContextValue, 't'> & {
|
|
106
104
|
setMessageContentWidth: React.Dispatch<React.SetStateAction<number>>;
|
|
107
105
|
};
|
|
108
106
|
|
|
@@ -120,7 +118,6 @@ const MessageContentWithContext = <
|
|
|
120
118
|
Attachment,
|
|
121
119
|
disabled,
|
|
122
120
|
FileAttachmentGroup,
|
|
123
|
-
formatDate,
|
|
124
121
|
Gallery,
|
|
125
122
|
groupStyles,
|
|
126
123
|
hasReactions,
|
|
@@ -145,7 +142,6 @@ const MessageContentWithContext = <
|
|
|
145
142
|
Reply,
|
|
146
143
|
setMessageContentWidth,
|
|
147
144
|
showMessageStatus,
|
|
148
|
-
tDateTimeParser,
|
|
149
145
|
threadList,
|
|
150
146
|
} = props;
|
|
151
147
|
|
|
@@ -178,21 +174,6 @@ const MessageContentWithContext = <
|
|
|
178
174
|
} = useTheme();
|
|
179
175
|
const { vw } = useViewport();
|
|
180
176
|
|
|
181
|
-
const getDateText = (formatter?: (date: TDateTimeParserInput) => string) => {
|
|
182
|
-
if (!message.created_at) return '';
|
|
183
|
-
|
|
184
|
-
if (formatter) {
|
|
185
|
-
return formatter(message.created_at);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
const parserOutput = tDateTimeParser(message.created_at);
|
|
189
|
-
|
|
190
|
-
if (isDayOrMoment(parserOutput)) {
|
|
191
|
-
return parserOutput.format('LT');
|
|
192
|
-
}
|
|
193
|
-
return message.created_at;
|
|
194
|
-
};
|
|
195
|
-
|
|
196
177
|
const onLayout: (event: LayoutChangeEvent) => void = ({
|
|
197
178
|
nativeEvent: {
|
|
198
179
|
layout: { width },
|
|
@@ -221,7 +202,7 @@ const MessageContentWithContext = <
|
|
|
221
202
|
if (isMessageTypeDeleted) {
|
|
222
203
|
return (
|
|
223
204
|
<MessageDeleted
|
|
224
|
-
|
|
205
|
+
date={message.created_at}
|
|
225
206
|
groupStyle={groupStyle}
|
|
226
207
|
noBorder={noBorder}
|
|
227
208
|
onLayout={onLayout}
|
|
@@ -332,7 +313,7 @@ const MessageContentWithContext = <
|
|
|
332
313
|
{MessageHeader && (
|
|
333
314
|
<MessageHeader
|
|
334
315
|
alignment={alignment}
|
|
335
|
-
|
|
316
|
+
date={message.created_at}
|
|
336
317
|
isDeleted={isMessageTypeDeleted}
|
|
337
318
|
lastGroupMessage={lastGroupMessage}
|
|
338
319
|
members={members}
|
|
@@ -411,7 +392,7 @@ const MessageContentWithContext = <
|
|
|
411
392
|
{error && <MessageError />}
|
|
412
393
|
</View>
|
|
413
394
|
<MessageReplies noBorder={noBorder} repliesCurveColor={repliesCurveColor} />
|
|
414
|
-
<MessageFooter
|
|
395
|
+
<MessageFooter date={message.created_at} isDeleted={!!isMessageTypeDeleted} />
|
|
415
396
|
</TouchableOpacity>
|
|
416
397
|
);
|
|
417
398
|
};
|
|
@@ -426,6 +407,7 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
426
407
|
groupStyles: prevGroupStyles,
|
|
427
408
|
hasReactions: prevHasReactions,
|
|
428
409
|
isAttachmentEqual,
|
|
410
|
+
isEditedMessageOpen: prevIsEditedMessageOpen,
|
|
429
411
|
lastGroupMessage: prevLastGroupMessage,
|
|
430
412
|
members: prevMembers,
|
|
431
413
|
message: prevMessage,
|
|
@@ -434,13 +416,13 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
434
416
|
onlyEmojis: prevOnlyEmojis,
|
|
435
417
|
otherAttachments: prevOtherAttachments,
|
|
436
418
|
t: prevT,
|
|
437
|
-
tDateTimeParser: prevTDateTimeParser,
|
|
438
419
|
} = prevProps;
|
|
439
420
|
const {
|
|
440
421
|
disabled: nextDisabled,
|
|
441
422
|
goToMessage: nextGoToMessage,
|
|
442
423
|
groupStyles: nextGroupStyles,
|
|
443
424
|
hasReactions: nextHasReactions,
|
|
425
|
+
isEditedMessageOpen: nextIsEditedMessageOpen,
|
|
444
426
|
lastGroupMessage: nextLastGroupMessage,
|
|
445
427
|
members: nextMembers,
|
|
446
428
|
message: nextMessage,
|
|
@@ -449,7 +431,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
449
431
|
onlyEmojis: nextOnlyEmojis,
|
|
450
432
|
otherAttachments: nextOtherAttachments,
|
|
451
433
|
t: nextT,
|
|
452
|
-
tDateTimeParser: nextTDateTimeParser,
|
|
453
434
|
} = nextProps;
|
|
454
435
|
|
|
455
436
|
const disabledEqual = prevDisabled === nextDisabled;
|
|
@@ -465,6 +446,9 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
465
446
|
nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;
|
|
466
447
|
if (goToMessageChangedAndMatters) return false;
|
|
467
448
|
|
|
449
|
+
const isEditedMessageOpenEqual = prevIsEditedMessageOpen === nextIsEditedMessageOpen;
|
|
450
|
+
if (!isEditedMessageOpenEqual) return false;
|
|
451
|
+
|
|
468
452
|
const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;
|
|
469
453
|
if (!onlyEmojisEqual) return false;
|
|
470
454
|
|
|
@@ -542,9 +526,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
542
526
|
const tEqual = prevT === nextT;
|
|
543
527
|
if (!tEqual) return false;
|
|
544
528
|
|
|
545
|
-
const tDateTimeParserEqual = prevTDateTimeParser === nextTDateTimeParser;
|
|
546
|
-
if (!tDateTimeParserEqual) return false;
|
|
547
|
-
|
|
548
529
|
const messageThemeEqual =
|
|
549
530
|
JSON.stringify(prevMyMessageTheme) === JSON.stringify(nextMyMessageTheme);
|
|
550
531
|
if (!messageThemeEqual) return false;
|
|
@@ -576,6 +557,7 @@ export const MessageContent = <
|
|
|
576
557
|
goToMessage,
|
|
577
558
|
groupStyles,
|
|
578
559
|
hasReactions,
|
|
560
|
+
isEditedMessageOpen,
|
|
579
561
|
isMyMessage,
|
|
580
562
|
lastGroupMessage,
|
|
581
563
|
lastReceivedId,
|
|
@@ -595,7 +577,6 @@ export const MessageContent = <
|
|
|
595
577
|
additionalTouchableProps,
|
|
596
578
|
Attachment,
|
|
597
579
|
FileAttachmentGroup,
|
|
598
|
-
formatDate,
|
|
599
580
|
Gallery,
|
|
600
581
|
isAttachmentEqual,
|
|
601
582
|
MessageDeleted,
|
|
@@ -608,7 +589,7 @@ export const MessageContent = <
|
|
|
608
589
|
myMessageTheme,
|
|
609
590
|
Reply,
|
|
610
591
|
} = useMessagesContext<StreamChatGenerics>();
|
|
611
|
-
const { t
|
|
592
|
+
const { t } = useTranslationContext();
|
|
612
593
|
|
|
613
594
|
return (
|
|
614
595
|
<MemoizedMessageContent<StreamChatGenerics>
|
|
@@ -618,12 +599,12 @@ export const MessageContent = <
|
|
|
618
599
|
Attachment,
|
|
619
600
|
disabled,
|
|
620
601
|
FileAttachmentGroup,
|
|
621
|
-
formatDate,
|
|
622
602
|
Gallery,
|
|
623
603
|
goToMessage,
|
|
624
604
|
groupStyles,
|
|
625
605
|
hasReactions,
|
|
626
606
|
isAttachmentEqual,
|
|
607
|
+
isEditedMessageOpen,
|
|
627
608
|
isMyMessage,
|
|
628
609
|
lastGroupMessage,
|
|
629
610
|
lastReceivedId,
|
|
@@ -647,7 +628,6 @@ export const MessageContent = <
|
|
|
647
628
|
Reply,
|
|
648
629
|
showMessageStatus,
|
|
649
630
|
t,
|
|
650
|
-
tDateTimeParser,
|
|
651
631
|
threadList,
|
|
652
632
|
}}
|
|
653
633
|
{...props}
|
|
@@ -3,11 +3,9 @@ import { LayoutChangeEvent, StyleSheet, View } from 'react-native';
|
|
|
3
3
|
|
|
4
4
|
import merge from 'lodash/merge';
|
|
5
5
|
|
|
6
|
-
import type { MessageFooterProps } from './MessageFooter';
|
|
7
6
|
import { MessageTextContainer } from './MessageTextContainer';
|
|
8
7
|
|
|
9
8
|
import {
|
|
10
|
-
Alignment,
|
|
11
9
|
MessageContextValue,
|
|
12
10
|
useMessageContext,
|
|
13
11
|
} from '../../../contexts/messageContext/MessageContext';
|
|
@@ -16,13 +14,9 @@ import {
|
|
|
16
14
|
useMessagesContext,
|
|
17
15
|
} from '../../../contexts/messagesContext/MessagesContext';
|
|
18
16
|
import { useTheme } from '../../../contexts/themeContext/ThemeContext';
|
|
19
|
-
import {
|
|
20
|
-
TranslationContextValue,
|
|
21
|
-
useTranslationContext,
|
|
22
|
-
} from '../../../contexts/translationContext/TranslationContext';
|
|
17
|
+
import { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';
|
|
23
18
|
|
|
24
19
|
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
25
|
-
import type { MessageType } from '../../MessageList/hooks/useMessageList';
|
|
26
20
|
|
|
27
21
|
const styles = StyleSheet.create({
|
|
28
22
|
containerInner: {
|
|
@@ -40,17 +34,16 @@ const styles = StyleSheet.create({
|
|
|
40
34
|
});
|
|
41
35
|
|
|
42
36
|
type MessageDeletedComponentProps = {
|
|
43
|
-
formattedDate: string | Date;
|
|
44
37
|
groupStyle: string;
|
|
45
38
|
noBorder: boolean;
|
|
46
39
|
onLayout: (event: LayoutChangeEvent) => void;
|
|
40
|
+
date?: string | Date;
|
|
47
41
|
};
|
|
48
42
|
|
|
49
43
|
type MessageDeletedPropsWithContext<
|
|
50
44
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
51
45
|
> = Pick<MessageContextValue<StreamChatGenerics>, 'alignment' | 'message'> &
|
|
52
46
|
Pick<MessagesContextValue<StreamChatGenerics>, 'MessageFooter'> &
|
|
53
|
-
Pick<TranslationContextValue, 't'> &
|
|
54
47
|
MessageDeletedComponentProps;
|
|
55
48
|
|
|
56
49
|
const MessageDeletedWithContext = <
|
|
@@ -58,8 +51,7 @@ const MessageDeletedWithContext = <
|
|
|
58
51
|
>(
|
|
59
52
|
props: MessageDeletedPropsWithContext<StreamChatGenerics>,
|
|
60
53
|
) => {
|
|
61
|
-
const { alignment,
|
|
62
|
-
props;
|
|
54
|
+
const { alignment, date, groupStyle, message, MessageFooter, noBorder, onLayout } = props;
|
|
63
55
|
|
|
64
56
|
const {
|
|
65
57
|
theme: {
|
|
@@ -74,6 +66,7 @@ const MessageDeletedWithContext = <
|
|
|
74
66
|
},
|
|
75
67
|
},
|
|
76
68
|
} = useTheme();
|
|
69
|
+
const { t } = useTranslationContext();
|
|
77
70
|
|
|
78
71
|
return (
|
|
79
72
|
<View
|
|
@@ -108,7 +101,7 @@ const MessageDeletedWithContext = <
|
|
|
108
101
|
message={{ ...message, text: `_${t('Message deleted')}_` }}
|
|
109
102
|
/>
|
|
110
103
|
</View>
|
|
111
|
-
<MessageFooter
|
|
104
|
+
<MessageFooter date={date} isDeleted />
|
|
112
105
|
</View>
|
|
113
106
|
);
|
|
114
107
|
};
|
|
@@ -117,16 +110,8 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
117
110
|
prevProps: MessageDeletedPropsWithContext<StreamChatGenerics>,
|
|
118
111
|
nextProps: MessageDeletedPropsWithContext<StreamChatGenerics>,
|
|
119
112
|
) => {
|
|
120
|
-
const {
|
|
121
|
-
|
|
122
|
-
formattedDate: prevFormattedDate,
|
|
123
|
-
message: prevMessage,
|
|
124
|
-
} = prevProps;
|
|
125
|
-
const {
|
|
126
|
-
alignment: nextAlignment,
|
|
127
|
-
formattedDate: nextFormattedDate,
|
|
128
|
-
message: nextMessage,
|
|
129
|
-
} = nextProps;
|
|
113
|
+
const { alignment: prevAlignment, date: prevDate, message: prevMessage } = prevProps;
|
|
114
|
+
const { alignment: nextAlignment, date: nextDate, message: nextMessage } = nextProps;
|
|
130
115
|
|
|
131
116
|
const alignmentEqual = prevAlignment === nextAlignment;
|
|
132
117
|
if (!alignmentEqual) return false;
|
|
@@ -142,8 +127,8 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
142
127
|
prevMessage.pinned === nextMessage.pinned;
|
|
143
128
|
if (!messageEqual) return false;
|
|
144
129
|
|
|
145
|
-
const
|
|
146
|
-
if (!
|
|
130
|
+
const dateEqual = prevDate === nextDate;
|
|
131
|
+
if (!dateEqual) return false;
|
|
147
132
|
|
|
148
133
|
return true;
|
|
149
134
|
};
|
|
@@ -155,10 +140,10 @@ const MemoizedMessageDeleted = React.memo(
|
|
|
155
140
|
|
|
156
141
|
export type MessageDeletedProps<
|
|
157
142
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
158
|
-
> =
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
143
|
+
> = Partial<MessageDeletedPropsWithContext<StreamChatGenerics>> & {
|
|
144
|
+
groupStyle: string;
|
|
145
|
+
noBorder: boolean;
|
|
146
|
+
onLayout: (event: LayoutChangeEvent) => void;
|
|
162
147
|
};
|
|
163
148
|
|
|
164
149
|
export const MessageDeleted = <
|
|
@@ -170,15 +155,12 @@ export const MessageDeleted = <
|
|
|
170
155
|
|
|
171
156
|
const { MessageFooter } = useMessagesContext<StreamChatGenerics>();
|
|
172
157
|
|
|
173
|
-
const { t } = useTranslationContext();
|
|
174
|
-
|
|
175
158
|
return (
|
|
176
159
|
<MemoizedMessageDeleted
|
|
177
160
|
{...{
|
|
178
161
|
alignment,
|
|
179
162
|
message,
|
|
180
163
|
MessageFooter,
|
|
181
|
-
t,
|
|
182
164
|
}}
|
|
183
165
|
{...props}
|
|
184
166
|
/>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { StyleSheet, Text, View } from 'react-native';
|
|
3
|
+
|
|
4
|
+
import { MessageTimestamp, MessageTimestampProps } from './MessageTimestamp';
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
MessageContextValue,
|
|
8
|
+
useMessageContext,
|
|
9
|
+
} from '../../../contexts/messageContext/MessageContext';
|
|
10
|
+
import { useTheme } from '../../../contexts/themeContext/ThemeContext';
|
|
11
|
+
import { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';
|
|
12
|
+
import { DefaultStreamChatGenerics } from '../../../types/types';
|
|
13
|
+
import { isEditedMessage } from '../../../utils/utils';
|
|
14
|
+
|
|
15
|
+
export type MessageEditedTimestampProps<
|
|
16
|
+
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
17
|
+
> = Partial<Pick<MessageContextValue<StreamChatGenerics>, 'message'>> & MessageTimestampProps;
|
|
18
|
+
|
|
19
|
+
export const MessageEditedTimestamp = <
|
|
20
|
+
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
21
|
+
>(
|
|
22
|
+
props: MessageEditedTimestampProps<StreamChatGenerics>,
|
|
23
|
+
) => {
|
|
24
|
+
const { message: propMessage, timestamp } = props;
|
|
25
|
+
const {
|
|
26
|
+
theme: {
|
|
27
|
+
colors: { grey },
|
|
28
|
+
messageSimple: {
|
|
29
|
+
content: { editedLabel, editedTimestampContainer },
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
} = useTheme();
|
|
33
|
+
const { t } = useTranslationContext();
|
|
34
|
+
const { message: contextMessage } = useMessageContext<StreamChatGenerics>();
|
|
35
|
+
const message = propMessage || contextMessage;
|
|
36
|
+
|
|
37
|
+
if (!isEditedMessage(message)) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<View style={[styles.container, editedTimestampContainer]}>
|
|
43
|
+
<Text style={[styles.text, { color: grey }, editedLabel]}>{t<string>('Edited') + ' '}</Text>
|
|
44
|
+
<MessageTimestamp calendar={true} timestamp={timestamp} />
|
|
45
|
+
</View>
|
|
46
|
+
);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const styles = StyleSheet.create({
|
|
50
|
+
container: {
|
|
51
|
+
flexDirection: 'row',
|
|
52
|
+
},
|
|
53
|
+
text: {
|
|
54
|
+
fontSize: 12,
|
|
55
|
+
},
|
|
56
|
+
});
|