stream-chat-react-native-core 5.24.0-beta.2 → 5.24.0-beta.4

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.
Files changed (130) hide show
  1. package/lib/commonjs/components/Channel/Channel.js +30 -22
  2. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  3. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  4. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  5. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +52 -18
  6. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  7. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +4 -1
  8. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
  9. package/lib/commonjs/components/Message/Message.js +28 -6
  10. package/lib/commonjs/components/Message/Message.js.map +1 -1
  11. package/lib/commonjs/components/Message/MessageSimple/MessageBounce.js +84 -0
  12. package/lib/commonjs/components/Message/MessageSimple/MessageBounce.js.map +1 -0
  13. package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  14. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  15. package/lib/commonjs/components/index.js +11 -0
  16. package/lib/commonjs/components/index.js.map +1 -1
  17. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +51 -39
  18. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  19. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +4 -8
  20. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  21. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
  22. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  23. package/lib/commonjs/i18n/en.json +3 -0
  24. package/lib/commonjs/i18n/es.json +4 -1
  25. package/lib/commonjs/i18n/fr.json +28 -25
  26. package/lib/commonjs/i18n/he.json +4 -1
  27. package/lib/commonjs/i18n/hi.json +28 -25
  28. package/lib/commonjs/i18n/it.json +28 -25
  29. package/lib/commonjs/i18n/ja.json +4 -1
  30. package/lib/commonjs/i18n/ko.json +4 -1
  31. package/lib/commonjs/i18n/nl.json +28 -25
  32. package/lib/commonjs/i18n/ru.json +28 -25
  33. package/lib/commonjs/i18n/tr.json +28 -25
  34. package/lib/commonjs/utils/removeReservedFields.js +1 -1
  35. package/lib/commonjs/utils/removeReservedFields.js.map +1 -1
  36. package/lib/commonjs/utils/utils.js +5 -3
  37. package/lib/commonjs/utils/utils.js.map +1 -1
  38. package/lib/commonjs/version.json +1 -1
  39. package/lib/module/components/Channel/Channel.js +30 -22
  40. package/lib/module/components/Channel/Channel.js.map +1 -1
  41. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +2 -0
  42. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  43. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +52 -18
  44. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  45. package/lib/module/components/ChannelPreview/ChannelPreview.js +4 -1
  46. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  47. package/lib/module/components/Message/Message.js +28 -6
  48. package/lib/module/components/Message/Message.js.map +1 -1
  49. package/lib/module/components/Message/MessageSimple/MessageBounce.js +84 -0
  50. package/lib/module/components/Message/MessageSimple/MessageBounce.js.map +1 -0
  51. package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
  52. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  53. package/lib/module/components/index.js +11 -0
  54. package/lib/module/components/index.js.map +1 -1
  55. package/lib/module/contexts/messageInputContext/MessageInputContext.js +51 -39
  56. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  57. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +4 -8
  58. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  59. package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
  60. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  61. package/lib/module/i18n/en.json +3 -0
  62. package/lib/module/i18n/es.json +4 -1
  63. package/lib/module/i18n/fr.json +28 -25
  64. package/lib/module/i18n/he.json +4 -1
  65. package/lib/module/i18n/hi.json +28 -25
  66. package/lib/module/i18n/it.json +28 -25
  67. package/lib/module/i18n/ja.json +4 -1
  68. package/lib/module/i18n/ko.json +4 -1
  69. package/lib/module/i18n/nl.json +28 -25
  70. package/lib/module/i18n/ru.json +28 -25
  71. package/lib/module/i18n/tr.json +28 -25
  72. package/lib/module/utils/removeReservedFields.js +1 -1
  73. package/lib/module/utils/removeReservedFields.js.map +1 -1
  74. package/lib/module/utils/utils.js +5 -3
  75. package/lib/module/utils/utils.js.map +1 -1
  76. package/lib/module/version.json +1 -1
  77. package/lib/typescript/components/Channel/Channel.d.ts +1 -1
  78. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  79. package/lib/typescript/components/ChannelPreview/ChannelPreview.d.ts +1 -1
  80. package/lib/typescript/components/Message/Message.d.ts +1 -1
  81. package/lib/typescript/components/Message/MessageSimple/MessageBounce.d.ts +12 -0
  82. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts +1 -0
  83. package/lib/typescript/components/index.d.ts +1 -0
  84. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +6 -2
  85. package/lib/typescript/contexts/messageInputContext/hooks/useMessageDetailsForState.d.ts +1 -2
  86. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +7 -2
  87. package/lib/typescript/i18n/en.json +3 -0
  88. package/lib/typescript/i18n/es.json +4 -1
  89. package/lib/typescript/i18n/fr.json +28 -25
  90. package/lib/typescript/i18n/he.json +4 -1
  91. package/lib/typescript/i18n/hi.json +28 -25
  92. package/lib/typescript/i18n/it.json +28 -25
  93. package/lib/typescript/i18n/ja.json +4 -1
  94. package/lib/typescript/i18n/ko.json +4 -1
  95. package/lib/typescript/i18n/nl.json +28 -25
  96. package/lib/typescript/i18n/ru.json +28 -25
  97. package/lib/typescript/i18n/tr.json +28 -25
  98. package/lib/typescript/utils/Streami18n.d.ts +3 -0
  99. package/lib/typescript/utils/removeReservedFields.d.ts +2 -1
  100. package/lib/typescript/utils/utils.d.ts +11 -1
  101. package/package.json +2 -2
  102. package/src/components/Channel/Channel.tsx +26 -7
  103. package/src/components/Channel/hooks/useCreateMessagesContext.ts +2 -0
  104. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +6 -3
  105. package/src/components/ChannelPreview/ChannelPreview.tsx +5 -5
  106. package/src/components/Message/Message.tsx +26 -2
  107. package/src/components/Message/MessageSimple/MessageBounce.tsx +119 -0
  108. package/src/components/Message/hooks/useMessageActionHandlers.ts +1 -2
  109. package/src/components/Message/hooks/useMessageActions.tsx +1 -1
  110. package/src/components/index.ts +1 -0
  111. package/src/contexts/messageInputContext/MessageInputContext.tsx +27 -8
  112. package/src/contexts/messageInputContext/__tests__/sendMessage.test.tsx +8 -8
  113. package/src/contexts/messageInputContext/__tests__/updateMessage.test.tsx +1 -1
  114. package/src/contexts/messageInputContext/__tests__/useMessageDetailsForState.test.tsx +6 -1
  115. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +3 -9
  116. package/src/contexts/messagesContext/MessagesContext.tsx +7 -2
  117. package/src/i18n/en.json +3 -0
  118. package/src/i18n/es.json +4 -1
  119. package/src/i18n/fr.json +28 -25
  120. package/src/i18n/he.json +4 -1
  121. package/src/i18n/hi.json +28 -25
  122. package/src/i18n/it.json +28 -25
  123. package/src/i18n/ja.json +4 -1
  124. package/src/i18n/ko.json +4 -1
  125. package/src/i18n/nl.json +28 -25
  126. package/src/i18n/ru.json +28 -25
  127. package/src/i18n/tr.json +28 -25
  128. package/src/utils/removeReservedFields.ts +5 -2
  129. package/src/utils/utils.ts +16 -2
  130. package/src/version.json +1 -1
@@ -32,8 +32,7 @@ export const useMessageActionHandlers = <
32
32
  Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction'> &
33
33
  Pick<ChatContextValue<StreamChatGenerics>, 'client'> &
34
34
  Pick<MessageContextValue<StreamChatGenerics>, 'message'>) => {
35
- const handleResendMessage = () =>
36
- retrySendMessage(message as MessageResponse<StreamChatGenerics>);
35
+ const handleResendMessage = () => retrySendMessage(message);
37
36
 
38
37
  const handleQuotedReplyMessage = () => {
39
38
  setQuotedMessageState(message);
@@ -339,7 +339,7 @@ export const useMessageActions = <
339
339
  setOverlay('none');
340
340
  const messageWithoutReservedFields = removeReservedFields(message);
341
341
  if (handleRetry) {
342
- handleRetry(messageWithoutReservedFields);
342
+ handleRetry(messageWithoutReservedFields as MessageType<StreamChatGenerics>);
343
343
  }
344
344
 
345
345
  await handleResendMessage();
@@ -96,6 +96,7 @@ export * from './Message/hooks/useMessageActions';
96
96
  export * from './Message/hooks/useMessageActionHandlers';
97
97
  export * from './Message/Message';
98
98
  export * from './Message/MessageSimple/MessageAvatar';
99
+ export * from './Message/MessageSimple/MessageBounce';
99
100
  export * from './Message/MessageSimple/MessageContent';
100
101
  export * from './Message/MessageSimple/MessageDeleted';
101
102
  export * from './Message/MessageSimple/MessageError';
@@ -18,8 +18,9 @@ import {
18
18
  } from 'stream-chat';
19
19
 
20
20
  import { useCreateMessageInputContext } from './hooks/useCreateMessageInputContext';
21
- import { isEditingBoolean, useMessageDetailsForState } from './hooks/useMessageDetailsForState';
21
+ import { useMessageDetailsForState } from './hooks/useMessageDetailsForState';
22
22
 
23
+ import { parseLinksFromText } from '../../components/Message/MessageSimple/utils/parseLinks';
23
24
  import type { AttachButtonProps } from '../../components/MessageInput/AttachButton';
24
25
  import type { CommandsButtonProps } from '../../components/MessageInput/CommandsButton';
25
26
  import type { InputEditingStateHeaderProps } from '../../components/MessageInput/components/InputEditingStateHeader';
@@ -52,12 +53,13 @@ import {
52
53
  FileState,
53
54
  FileStateValue,
54
55
  generateRandomId,
56
+ isBouncedMessage,
55
57
  TriggerSettings,
56
- urlRegex,
57
58
  } from '../../utils/utils';
58
59
  import { useAttachmentPickerContext } from '../attachmentPickerContext/AttachmentPickerContext';
59
60
  import { ChannelContextValue, useChannelContext } from '../channelContext/ChannelContext';
60
61
  import { useChatContext } from '../chatContext/ChatContext';
62
+ import { useMessagesContext } from '../messagesContext/MessagesContext';
61
63
  import { useOwnCapabilitiesContext } from '../ownCapabilitiesContext/OwnCapabilitiesContext';
62
64
  import { useThreadContext } from '../threadContext/ThreadContext';
63
65
  import { useTranslationContext } from '../translationContext/TranslationContext';
@@ -226,7 +228,6 @@ export type InputMessageInputContextValue<
226
228
  * **default** [CooldownTimer](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/MessageInput/CooldownTimer.tsx)
227
229
  */
228
230
  CooldownTimer: React.ComponentType<CooldownTimerProps>;
229
- editing: boolean | MessageType<StreamChatGenerics>;
230
231
  editMessage: StreamChat<StreamChatGenerics>['updateMessage'];
231
232
 
232
233
  /**
@@ -331,6 +332,12 @@ export type InputMessageInputContextValue<
331
332
  channel: ChannelContextValue<StreamChatGenerics>['channel'],
332
333
  ) => Promise<SendFileAPIResponse>;
333
334
 
335
+ /**
336
+ * Variable that tracks the editing state.
337
+ * It is defined with message type if the editing state is true, else its undefined.
338
+ */
339
+ editing?: MessageType<StreamChatGenerics>;
340
+
334
341
  /** Initial value to set on input */
335
342
  initialValue?: string;
336
343
  /**
@@ -398,6 +405,7 @@ export const MessageInputProvider = <
398
405
  const { closePicker, openPicker, selectedPicker, setSelectedPicker } =
399
406
  useAttachmentPickerContext();
400
407
  const { appSettings, client, enableOfflineSupport } = useChatContext<StreamChatGenerics>();
408
+ const { removeMessage } = useMessagesContext();
401
409
 
402
410
  const getFileUploadConfig = () => {
403
411
  const fileConfig = appSettings?.app?.file_upload_config;
@@ -625,6 +633,9 @@ export const MessageInputProvider = <
625
633
  (prevNumberOfUploads) => prevNumberOfUploads - (pendingAttachments?.length || 0),
626
634
  );
627
635
  setText('');
636
+ if (value.editing) {
637
+ value.clearEditingState();
638
+ }
628
639
  };
629
640
 
630
641
  const mapImageUploadToAttachment = (image: ImageUpload): Attachment<StreamChatGenerics> => {
@@ -689,8 +700,9 @@ export const MessageInputProvider = <
689
700
  if (sending.current) {
690
701
  return;
691
702
  }
703
+ const linkInfos = parseLinksFromText(text);
692
704
 
693
- if (!channelCapabities.sendLinks && !!text.match(urlRegex)) {
705
+ if (!channelCapabities.sendLinks && linkInfos.length > 0) {
694
706
  Alert.alert(t('Links are disabled'), t('Sending links is not allowed in this conversation'));
695
707
 
696
708
  return;
@@ -770,9 +782,10 @@ export const MessageInputProvider = <
770
782
  return;
771
783
  }
772
784
 
773
- if (value.editing && !isEditingBoolean(value.editing)) {
785
+ const message = value.editing;
786
+ if (message && message.type !== 'error') {
774
787
  const updatedMessage = {
775
- ...value.editing,
788
+ ...message,
776
789
  attachments,
777
790
  mentioned_users: mentionedUsers,
778
791
  quoted_message: undefined,
@@ -794,6 +807,12 @@ export const MessageInputProvider = <
794
807
  sending.current = false;
795
808
  } else {
796
809
  try {
810
+ /**
811
+ * If the message is bounced by moderation, we firstly remove the message from message list and then send a new message.
812
+ */
813
+ if (message && isBouncedMessage(message as MessageType<StreamChatGenerics>)) {
814
+ removeMessage(message);
815
+ }
797
816
  value.sendMessage({
798
817
  attachments,
799
818
  mentioned_users: uniq(mentionedUsers),
@@ -889,7 +908,7 @@ export const MessageInputProvider = <
889
908
 
890
909
  const updateMessage = async () => {
891
910
  try {
892
- if (!isEditingBoolean(value.editing)) {
911
+ if (value.editing) {
893
912
  await client.updateMessage({
894
913
  ...value.editing,
895
914
  quoted_message: undefined,
@@ -897,8 +916,8 @@ export const MessageInputProvider = <
897
916
  } as Parameters<StreamChat<StreamChatGenerics>['updateMessage']>[0]);
898
917
  }
899
918
 
900
- resetInput();
901
919
  value.clearEditingState();
920
+ resetInput();
902
921
  } catch (error) {
903
922
  console.log(error);
904
923
  }
@@ -54,7 +54,7 @@ describe("MessageInputContext's sendMessage", () => {
54
54
  const images = generateImageUploadPreview({ state: FileState.UPLOAD_FAILED });
55
55
  const { result } = renderHook(() => useMessageInputContext(), {
56
56
  initialProps: {
57
- editing: true,
57
+ editing: undefined,
58
58
  },
59
59
  wrapper: Wrapper,
60
60
  });
@@ -76,7 +76,7 @@ describe("MessageInputContext's sendMessage", () => {
76
76
 
77
77
  const { rerender, result } = renderHook(() => useMessageInputContext(), {
78
78
  initialProps: {
79
- editing: true,
79
+ editing: message,
80
80
  sendImageAsync: true,
81
81
  },
82
82
  wrapper: Wrapper,
@@ -92,7 +92,7 @@ describe("MessageInputContext's sendMessage", () => {
92
92
  result.current.sendMessage();
93
93
  });
94
94
 
95
- rerender({ editing: false, sendImageAsync: true });
95
+ rerender({ editing: undefined, sendImageAsync: true });
96
96
 
97
97
  await expect(result.current.asyncIds).toHaveLength(1);
98
98
  await expect(result.current.sending.current).toBeFalsy();
@@ -103,7 +103,7 @@ describe("MessageInputContext's sendMessage", () => {
103
103
 
104
104
  const { result } = renderHook(() => useMessageInputContext(), {
105
105
  initialProps: {
106
- editing: true,
106
+ editing: message,
107
107
  },
108
108
  wrapper: Wrapper,
109
109
  });
@@ -125,7 +125,7 @@ describe("MessageInputContext's sendMessage", () => {
125
125
  const files = generateFileUploadPreview({ state: FileState.UPLOADING });
126
126
  const { result } = renderHook(() => useMessageInputContext(), {
127
127
  initialProps: {
128
- editing: true,
128
+ editing: message,
129
129
  },
130
130
  wrapper: Wrapper,
131
131
  });
@@ -153,7 +153,7 @@ describe("MessageInputContext's sendMessage", () => {
153
153
  const { result } = renderHook(() => useMessageInputContext(), {
154
154
  initialProps: {
155
155
  clearQuotedMessageState: clearQuotedMessageStateMock,
156
- editing: true,
156
+ editing: undefined,
157
157
  quotedMessage: false,
158
158
  sendMessage: sendMessageMock,
159
159
  },
@@ -189,7 +189,7 @@ describe("MessageInputContext's sendMessage", () => {
189
189
  const { result } = renderHook(() => useMessageInputContext(), {
190
190
  initialProps: {
191
191
  clearQuotedMessageState: clearQuotedMessageStateMock,
192
- editing: true,
192
+ editing: undefined,
193
193
  quotedMessage: generatedQuotedMessage,
194
194
  setQuotedMessageState: setQuotedMessageStateMock,
195
195
  },
@@ -259,7 +259,7 @@ describe("MessageInputContext's sendMessage", () => {
259
259
  const { result } = renderHook(() => useMessageInputContext(), {
260
260
  initialProps: {
261
261
  clearQuotedMessageState: clearQuotedMessageStateMock,
262
- editing: true,
262
+ editing: undefined,
263
263
  quotedMessage: false,
264
264
  sendMessage: sendMessageMock,
265
265
  },
@@ -87,6 +87,6 @@ describe("MessageInputContext's updateMessage", () => {
87
87
  await result.current.updateMessage();
88
88
  });
89
89
 
90
- expect(clearEditingStateMock).toHaveBeenCalledTimes(1);
90
+ expect(clearEditingStateMock).toHaveBeenCalledTimes(2);
91
91
  });
92
92
  });
@@ -26,7 +26,12 @@ describe('useMessageDetailsForState', () => {
26
26
  it('showMoreOptions is true when initialValue and text is same', () => {
27
27
  const { result } = renderHook(
28
28
  ({ initialValue, message }) => useMessageDetailsForState(message, initialValue),
29
- { initialProps: { initialValue: 'Dummy text', message: true } },
29
+ {
30
+ initialProps: {
31
+ initialValue: 'Dummy text',
32
+ message: generateMessage({ text: 'Dummy text' }) as MessageType,
33
+ },
34
+ },
30
35
  );
31
36
 
32
37
  expect(result.current.showMoreOptions).toBe(true);
@@ -5,12 +5,6 @@ import { generateRandomId } from '../../../utils/utils';
5
5
 
6
6
  import type { MessageInputContextValue } from '../MessageInputContext';
7
7
 
8
- export const isEditingBoolean = <
9
- StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
10
- >(
11
- editing: MessageInputContextValue<StreamChatGenerics>['editing'],
12
- ): editing is boolean => typeof editing === 'boolean';
13
-
14
8
  export const useMessageDetailsForState = <
15
9
  StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
16
10
  >(
@@ -32,17 +26,17 @@ export const useMessageDetailsForState = <
32
26
  }, [text]);
33
27
 
34
28
  const messageValue =
35
- typeof message === 'boolean' ? '' : `${message.id}${message.text}${message.updated_at}`;
29
+ message === undefined ? '' : `${message.id}${message.text}${message.updated_at}`;
36
30
 
37
31
  useEffect(() => {
38
- if (!isEditingBoolean<StreamChatGenerics>(message) && Array.isArray(message?.mentioned_users)) {
32
+ if (message && Array.isArray(message?.mentioned_users)) {
39
33
  const mentionedUsers = message.mentioned_users.map((user) => user.id);
40
34
  setMentionedUsers(mentionedUsers);
41
35
  }
42
36
  }, [messageValue]);
43
37
 
44
38
  useEffect(() => {
45
- if (message && !isEditingBoolean<StreamChatGenerics>(message)) {
39
+ if (message) {
46
40
  setText(message?.text || '');
47
41
  const newFileUploads: FileUpload[] = [];
48
42
  const newImageUploads: ImageUpload[] = [];
@@ -24,6 +24,7 @@ import type {
24
24
  MessageTouchableHandlerPayload,
25
25
  } from '../../components/Message/Message';
26
26
  import type { MessageAvatarProps } from '../../components/Message/MessageSimple/MessageAvatar';
27
+ import type { MessageBounceProps } from '../../components/Message/MessageSimple/MessageBounce';
27
28
  import type { MessageContentProps } from '../../components/Message/MessageSimple/MessageContent';
28
29
  import type { MessageDeletedProps } from '../../components/Message/MessageSimple/MessageDeleted';
29
30
  import type { MessageErrorProps } from '../../components/Message/MessageSimple/MessageError';
@@ -158,6 +159,10 @@ export type MessagesContextValue<
158
159
  * Defaults to: [MessageAvatar](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/MessageSimple/MessageAvatar.tsx)
159
160
  **/
160
161
  MessageAvatar: React.ComponentType<MessageAvatarProps<StreamChatGenerics>>;
162
+ /**
163
+ * UI Component for MessageBounce
164
+ */
165
+ MessageBounce: React.ComponentType<MessageBounceProps<StreamChatGenerics>>;
161
166
  /**
162
167
  * UI component for MessageContent
163
168
  * Defaults to: [MessageContent](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/components/Message/MessageSimple/MessageContent.tsx)
@@ -227,14 +232,14 @@ export type MessagesContextValue<
227
232
  /**
228
233
  * Override the api request for retry message functionality.
229
234
  */
230
- retrySendMessage: (message: MessageResponse<StreamChatGenerics>) => Promise<void>;
235
+ retrySendMessage: (message: MessageType<StreamChatGenerics>) => Promise<void>;
231
236
  /**
232
237
  * UI component for ScrollToBottomButton
233
238
  * Defaults to: [ScrollToBottomButton](https://getstream.io/chat/docs/sdk/reactnative/ui-components/scroll-to-bottom-button/)
234
239
  */
235
240
  ScrollToBottomButton: React.ComponentType<ScrollToBottomButtonProps>;
236
241
  sendReaction: (type: string, messageId: string) => Promise<void>;
237
- setEditingState: (message: MessageType<StreamChatGenerics> | boolean) => void;
242
+ setEditingState: (message?: MessageType<StreamChatGenerics>) => void;
238
243
  setQuotedMessageState: (message: MessageType<StreamChatGenerics> | boolean) => void;
239
244
  supportedReactions: ReactionData[];
240
245
  /**
package/src/i18n/en.json CHANGED
@@ -5,9 +5,11 @@
5
5
  "Allow camera access in device settings": "Allow camera access in device settings",
6
6
  "Also send to channel": "Also send to channel",
7
7
  "Are you sure you want to permanently delete this message?": "Are you sure you want to permanently delete this message?",
8
+ "Are you sure?": "Are you sure?",
8
9
  "Block User": "Block User",
9
10
  "Cancel": "Cancel",
10
11
  "Cannot Flag Message": "Cannot Flag Message",
12
+ "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Consider how your comment might make others feel and be sure to follow our Community Guidelines",
11
13
  "Copy Message": "Copy Message",
12
14
  "Delete": "Delete",
13
15
  "Delete Message": "Delete Message",
@@ -54,6 +56,7 @@
54
56
  "Resend": "Resend",
55
57
  "Search GIFs": "Search GIFs",
56
58
  "Select More Photos": "Select More Photos",
59
+ "Send Anyway": "Send Anyway",
57
60
  "Send a message": "Send a message",
58
61
  "Sending links is not allowed in this conversation": "Sending links is not allowed in this conversation",
59
62
  "Slow mode ON": "Slow mode ON",
package/src/i18n/es.json CHANGED
@@ -73,5 +73,8 @@
73
73
  "How about sending your first message to a friend?": "¿Qué tal enviar tu primer mensaje a un amigo?",
74
74
  "Allow camera access in device settings": "Permitir el acceso a la cámara en la configuración del dispositivo",
75
75
  "Device camera is used to take photos or videos.": "La cámara del dispositivo se utiliza para tomar fotografías o vídeos.",
76
- "Open Settings": "Configuración abierta"
76
+ "Open Settings": "Configuración abierta",
77
+ "Send Anyway": "Enviar de todos modos",
78
+ "Are you sure?": "¿Estás seguro?",
79
+ "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Considera cómo tu comentario podría hacer sentir a los demás y asegúrate de seguir nuestras Normas de la Comunidad"
77
80
  }
package/src/i18n/fr.json CHANGED
@@ -1,21 +1,23 @@
1
1
  {
2
- "1 Reply": "1 Réponse",
3
- "1 Thread Reply": "Réponse à 1 fil",
4
- "Allow access to your Gallery": "Autoriser l'accès à votre galerie",
5
- "Allow camera access in device settings": "Autoriser l'accès à la caméra dans les paramètres de l'appareil",
6
- "Also send to channel": "",
2
+ "1 Reply": "",
3
+ "1 Thread Reply": "",
4
+ "Allow access to your Gallery": "",
5
+ "Allow camera access in device settings": "",
6
+ "Also send to channel": "Envoyer également à la chaîne",
7
7
  "Are you sure you want to permanently delete this message?": "Êtes-vous sûr de vouloir supprimer définitivement ce message?",
8
+ "Are you sure?": "Es-tu sûr ?",
8
9
  "Block User": "Bloquer un utilisateur",
9
10
  "Cancel": "Annuler",
10
11
  "Cannot Flag Message": "Impossible de signaler le message",
12
+ "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "Considérez comment votre commentaire pourrait faire sentir les autres et assurez-vous de suivre nos directives communautaires",
11
13
  "Copy Message": "Copier le message",
12
14
  "Delete": "Supprimer",
13
15
  "Delete Message": "Supprimer un message",
14
- "Device camera is used to take photos or videos.": "L'appareil photo de l'appareil est utilisé pour prendre des photos ou des vidéos.",
16
+ "Device camera is used to take photos or videos.": "",
15
17
  "Do you want to send a copy of this message to a moderator for further investigation?": "Voulez-vous envoyer une copie de ce message à un modérateur pour une enquête plus approfondie?",
16
18
  "Edit Message": "Éditer un message",
17
- "Editing Message": "Édite un message",
18
- "Emoji matching": "Correspondance Emoji",
19
+ "Editing Message": "",
20
+ "Emoji matching": "",
19
21
  "Empty message...": "",
20
22
  "Error loading": "",
21
23
  "Error loading channel list...": "",
@@ -26,14 +28,14 @@
26
28
  "Flag Message": "Signaler le message",
27
29
  "Flag action failed either due to a network issue or the message is already flagged": "L'action de signalisation a échoué en raison d'un problème de réseau ou le message est déjà signalé.",
28
30
  "How about sending your first message to a friend?": "",
29
- "Instant Commands": "Commandes Instantanées",
31
+ "Instant Commands": "",
30
32
  "Let's start chatting!": "",
31
33
  "Links are disabled": "Links are disabled",
32
- "Loading channels...": "Chargement des canaux...",
33
- "Loading messages...": "Chargement des messages...",
34
- "Loading...": "Chargement...",
34
+ "Loading channels...": "",
35
+ "Loading messages...": "",
36
+ "Loading...": "",
35
37
  "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "Taille maximale de téléchargement de fichier atteinte. Veuillez télécharger un fichier inférieur à {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} Mo.",
36
- "Message Reactions": "Réactions aux messages",
38
+ "Message Reactions": "",
37
39
  "Message deleted": "",
38
40
  "Message flagged": "Message signalé",
39
41
  "Mute User": "Utilisateur muet",
@@ -41,36 +43,37 @@
41
43
  "Nothing yet...": "",
42
44
  "Ok": "Ok",
43
45
  "Only visible to you": "",
44
- "Open Settings": "Ouvrir les paramètres",
45
- "Photo": "Photo",
46
- "Photos and Videos": "Photos et vidéos",
46
+ "Open Settings": "",
47
+ "Photo": "",
48
+ "Photos and Videos": "",
47
49
  "Pin to Conversation": "Épingler à la conversation",
48
50
  "Pinned by": "",
49
- "Please enable access to your photos and videos so you can share them.": "Veuillez autoriser l'accès à vos photos et vidéos afin de pouvoir les partager.",
51
+ "Please enable access to your photos and videos so you can share them.": "",
50
52
  "Please select a channel first": "Veuillez d'abord selectionnez un canal",
51
53
  "Reconnecting...": "",
52
54
  "Reply": "Répondre",
53
55
  "Reply to Message": "",
54
56
  "Resend": "Renvoyer",
55
57
  "Search GIFs": "",
56
- "Select More Photos": "Sélectionner plus de photos",
58
+ "Select More Photos": "",
59
+ "Send Anyway": "Envoyer quand même",
57
60
  "Send a message": "",
58
61
  "Sending links is not allowed in this conversation": "Sending links is not allowed in this conversation",
59
62
  "Slow mode ON": "",
60
63
  "The message has been reported to a moderator.": "Le message a été signalé à un modérateur.",
61
64
  "Thread Reply": "Réponse à la discussion",
62
65
  "Unblock User": "Débloquer Utilisateur",
63
- "Unknown User": "Utilisateur inconnu",
66
+ "Unknown User": "",
64
67
  "Unmute User": "Activer le son de Utilisateur",
65
68
  "Unpin from Conversation": "Décrocher de la conversation",
66
- "Unread Messages": "",
67
- "Video": "Vidéo",
69
+ "Unread Messages": "Messages non lus",
70
+ "Video": "",
68
71
  "You": "",
69
- "You can't send messages in this channel": "",
72
+ "You can't send messages in this channel": "You can't send messages in this channel",
70
73
  "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
71
- "{{ index }} of {{ photoLength }}": "{{ index }} sur {{ photoLength }}",
72
- "{{ replyCount }} Replies": "{{ replyCount }} Réponses",
73
- "{{ replyCount }} Thread Replies": "{{replyCount}} Réponses à la discussion",
74
+ "{{ index }} of {{ photoLength }}": "",
75
+ "{{ replyCount }} Replies": "",
76
+ "{{ replyCount }} Thread Replies": "",
74
77
  "{{ user }} is typing": "",
75
78
  "🏙 Attachment...": ""
76
79
  }
package/src/i18n/he.json CHANGED
@@ -73,5 +73,8 @@
73
73
  "How about sending your first message to a friend?": "מה דעתך לשלוח את ההודעה הראשונה שלך לחבר?",
74
74
  "Allow camera access in device settings": "אפשר גישה למצלמה בהגדרות המכשיר",
75
75
  "Device camera is used to take photos or videos.": "מצלמת המכשיר משמשת לצילום תמונות או סרטונים.",
76
- "Open Settings": "פתח את ההגדרות"
76
+ "Open Settings": "פתח את ההגדרות",
77
+ "Send Anyway": "שלח בכל זאת",
78
+ "Are you sure?": "האם אתה בטוח?",
79
+ "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "שקול איך התגובה שלך עשויה להשפיע על אחרים ווודא שאתה עוקב אחר ההנחיות של הקהילה שלנו"
77
80
  }
package/src/i18n/hi.json CHANGED
@@ -1,21 +1,23 @@
1
1
  {
2
- "1 Reply": "1 रिप्लाई",
3
- "1 Thread Reply": "1 धागा उत्तर",
4
- "Allow access to your Gallery": "अपनी गैलरी तक पहुँचने की अनुमति दें",
5
- "Allow camera access in device settings": "डिवाइस सेटिंग्स में कैमरा एक्सेस की अनुमति दें",
6
- "Also send to channel": "",
2
+ "1 Reply": "",
3
+ "1 Thread Reply": "",
4
+ "Allow access to your Gallery": "",
5
+ "Allow camera access in device settings": "",
6
+ "Also send to channel": "चैनल को भी भेजें",
7
7
  "Are you sure you want to permanently delete this message?": "क्या आप वाकई इस संदेश को स्थायी रूप से हटाना चाहते हैं?",
8
+ "Are you sure?": "क्या आप सुनिश्चित हैं?",
8
9
  "Block User": "उपयोगकर्ता को रोक देना, ब्लॉक यूजर",
9
10
  "Cancel": "रद्द करें",
10
11
  "Cannot Flag Message": "मैसेज फ्लैग नहीं किया जा सकता है",
12
+ "Consider how your comment might make others feel and be sure to follow our Community Guidelines": "ध्यान दें कि आपका संदेश दूसरों को कैसा लगा सकता है और सुनिश्चित हों कि आप हमारी सामुदायिक अनुशासन का पालन कर रहे हैं",
11
13
  "Copy Message": "संदेश की प्रतिलिपि बनाएँ",
12
14
  "Delete": "हटाएं",
13
15
  "Delete Message": "मैसेज को डिलीट करे",
14
- "Device camera is used to take photos or videos.": "डिवाइस कैमरे का उपयोग फ़ोटो या वीडियो लेने के लिए किया जाता है।",
16
+ "Device camera is used to take photos or videos.": "",
15
17
  "Do you want to send a copy of this message to a moderator for further investigation?": "क्या आप इस संदेश की एक प्रति आगे की जाँच के लिए किसी मॉडरेटर को भेजना चाहते हैं?",
16
18
  "Edit Message": "मैसेज में बदलाव करे",
17
- "Editing Message": "मैसेज बदला जा रहा है",
18
- "Emoji matching": "इमोजी मिलान",
19
+ "Editing Message": "",
20
+ "Emoji matching": "",
19
21
  "Empty message...": "",
20
22
  "Error loading": "",
21
23
  "Error loading channel list...": "",
@@ -26,14 +28,14 @@
26
28
  "Flag Message": "झंडा संदेश",
27
29
  "Flag action failed either due to a network issue or the message is already flagged": "फ़्लैग कार्रवाई या तो नेटवर्क समस्या के कारण विफल हो गई या संदेश पहले से फ़्लैग किया गया है।",
28
30
  "How about sending your first message to a friend?": "",
29
- "Instant Commands": "त्वरित कमांड",
31
+ "Instant Commands": "",
30
32
  "Let's start chatting!": "",
31
33
  "Links are disabled": "लिंक अक्षम हैं",
32
- "Loading channels...": "चैनल लोड हो रहे हैं...",
33
- "Loading messages...": "मेसेजस लोड हो रहे हैं...",
34
- "Loading...": "लोड हो रहा है...",
34
+ "Loading channels...": "",
35
+ "Loading messages...": "",
36
+ "Loading...": "",
35
37
  "Maximum file size upload limit reached. Please upload a file below {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} MB.": "अधिकतम फ़ाइल आकार अपलोड सीमा पूरी हो गई। कृपया {{MAX_FILE_SIZE_TO_UPLOAD_IN_MB}} एमबी से नीचे की फ़ाइल अपलोड करें।",
36
- "Message Reactions": "संदेश प्रतिक्रियाएँ",
38
+ "Message Reactions": "",
37
39
  "Message deleted": "",
38
40
  "Message flagged": "संदेश को ध्वजांकित किया गया",
39
41
  "Mute User": "उपयोगकर्ता को म्यूट करें",
@@ -41,36 +43,37 @@
41
43
  "Nothing yet...": "",
42
44
  "Ok": "ठीक",
43
45
  "Only visible to you": "",
44
- "Open Settings": "सेटिंग्स खोलें",
45
- "Photo": "तस्वीर",
46
- "Photos and Videos": "तस्वीरें और वीडियों",
46
+ "Open Settings": "",
47
+ "Photo": "",
48
+ "Photos and Videos": "",
47
49
  "Pin to Conversation": "बातचीत में पिन करें",
48
50
  "Pinned by": "",
49
- "Please enable access to your photos and videos so you can share them.": "कृपया अपनी फ़ोटो और वीडियो तक पहुंच सक्षम करें ताकि आप उन्हें साझा कर सकें।",
51
+ "Please enable access to your photos and videos so you can share them.": "",
50
52
  "Please select a channel first": "कृपया पहले एक चैनल चुनें",
51
53
  "Reconnecting...": "",
52
54
  "Reply": "मैसेज को रिप्लाई करे",
53
55
  "Reply to Message": "",
54
56
  "Resend": "पुन: भेजें",
55
57
  "Search GIFs": "",
56
- "Select More Photos": "अधिक फ़ोटो चुनें",
58
+ "Select More Photos": "",
59
+ "Send Anyway": "फिर भी भेजें",
57
60
  "Send a message": "",
58
61
  "Sending links is not allowed in this conversation": "इस बातचीत में लिंक भेजने की अनुमति नहीं है",
59
62
  "Slow mode ON": "",
60
63
  "The message has been reported to a moderator.": "संदेश एक मॉडरेटर को सूचित किया गया है।",
61
64
  "Thread Reply": "धागा जवाब",
62
65
  "Unblock User": "उपयोगकर्ता को अनब्लॉक करें",
63
- "Unknown User": "अज्ञात उपयोगकर्ता",
66
+ "Unknown User": "",
64
67
  "Unmute User": "उपयोगकर्ता को अनम्यूट करें",
65
68
  "Unpin from Conversation": "बातचीत से अनपिन करें",
66
- "Unread Messages": "",
67
- "Video": "वीडियो",
69
+ "Unread Messages": "अपठित संदेश",
70
+ "Video": "",
68
71
  "You": "",
69
- "You can't send messages in this channel": "",
72
+ "You can't send messages in this channel": "आप इस चैनल में संदेश नहीं भेज सकते",
70
73
  "{{ firstUser }} and {{ nonSelfUserLength }} more are typing": "",
71
- "{{ index }} of {{ photoLength }}": "{{ index }} / {{ photoLength }}",
72
- "{{ replyCount }} Replies": "{{ replyCount }} रिप्लाई",
73
- "{{ replyCount }} Thread Replies": "{{ replyCount }}} थ्रेड उत्तर",
74
+ "{{ index }} of {{ photoLength }}": "",
75
+ "{{ replyCount }} Replies": "",
76
+ "{{ replyCount }} Thread Replies": "",
74
77
  "{{ user }} is typing": "",
75
78
  "🏙 Attachment...": ""
76
79
  }