stream-chat-react-native-core 5.34.0 → 5.34.1-beta.2
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 +0 -1
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +1 -3
- package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +1 -9
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +3 -10
- package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +0 -6
- package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +1 -3
- package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/commonjs/components/MessageInput/AttachButton.js +4 -17
- package/lib/commonjs/components/MessageInput/AttachButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/CommandsButton.js +3 -14
- package/lib/commonjs/components/MessageInput/CommandsButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MessageInput.js +5 -14
- package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/commonjs/components/MessageInput/MoreOptionsButton.js +2 -25
- package/lib/commonjs/components/MessageInput/MoreOptionsButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecorder.js +3 -16
- package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecorder.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +1 -12
- package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/InputEditingStateHeader.js +15 -26
- package/lib/commonjs/components/MessageInput/components/InputEditingStateHeader.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/InputGiphySearch.js +15 -28
- package/lib/commonjs/components/MessageInput/components/InputGiphySearch.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/InputReplyStateHeader.js +15 -26
- package/lib/commonjs/components/MessageInput/components/InputReplyStateHeader.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +2 -2
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +1 -3
- package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/commonjs/utils/utils.js +2 -1
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Channel/Channel.js +0 -1
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +1 -3
- package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
- package/lib/module/components/Message/Message.js +1 -9
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageContent.js +3 -10
- package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/MessageSimple.js +0 -6
- package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
- package/lib/module/components/Message/hooks/useCreateMessageContext.js +1 -3
- package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
- package/lib/module/components/MessageInput/AttachButton.js +4 -17
- package/lib/module/components/MessageInput/AttachButton.js.map +1 -1
- package/lib/module/components/MessageInput/CommandsButton.js +3 -14
- package/lib/module/components/MessageInput/CommandsButton.js.map +1 -1
- package/lib/module/components/MessageInput/MessageInput.js +5 -14
- package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
- package/lib/module/components/MessageInput/MoreOptionsButton.js +2 -25
- package/lib/module/components/MessageInput/MoreOptionsButton.js.map +1 -1
- package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecorder.js +3 -16
- package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecorder.js.map +1 -1
- package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +1 -12
- package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
- package/lib/module/components/MessageInput/components/InputEditingStateHeader.js +15 -26
- package/lib/module/components/MessageInput/components/InputEditingStateHeader.js.map +1 -1
- package/lib/module/components/MessageInput/components/InputGiphySearch.js +15 -28
- package/lib/module/components/MessageInput/components/InputGiphySearch.js.map +1 -1
- package/lib/module/components/MessageInput/components/InputReplyStateHeader.js +15 -26
- package/lib/module/components/MessageInput/components/InputReplyStateHeader.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +2 -2
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +1 -3
- package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
- package/lib/module/utils/utils.js +2 -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.map +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -74
- package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts.map +1 -1
- package/lib/typescript/components/Message/Message.d.ts +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/MessageSimple.d.ts +1 -1
- package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts.map +1 -1
- 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/MessageInput/AttachButton.d.ts +3 -5
- package/lib/typescript/components/MessageInput/AttachButton.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/CommandsButton.d.ts +1 -2
- package/lib/typescript/components/MessageInput/CommandsButton.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/MessageInput.d.ts +1 -1
- package/lib/typescript/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/MoreOptionsButton.d.ts +2 -9
- package/lib/typescript/components/MessageInput/MoreOptionsButton.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecorder.d.ts +1 -2
- package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecorder.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingButton.d.ts +1 -2
- package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingButton.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/InputEditingStateHeader.d.ts +2 -5
- package/lib/typescript/components/MessageInput/components/InputEditingStateHeader.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/InputGiphySearch.d.ts +4 -5
- package/lib/typescript/components/MessageInput/components/InputGiphySearch.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/InputReplyStateHeader.d.ts +2 -5
- package/lib/typescript/components/MessageInput/components/InputReplyStateHeader.d.ts.map +1 -1
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts +2 -2
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts.map +1 -1
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +4 -4
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
- package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
- package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts.map +1 -1
- package/lib/typescript/utils/utils.d.ts +1 -1
- package/lib/typescript/utils/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Channel/Channel.tsx +0 -1
- package/src/components/Channel/__tests__/ownCapabilities.test.js +0 -18
- package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +1 -11
- package/src/components/Message/Message.tsx +3 -15
- package/src/components/Message/MessageSimple/MessageContent.tsx +1 -10
- package/src/components/Message/MessageSimple/MessageSimple.tsx +2 -14
- package/src/components/Message/hooks/useCreateMessageContext.ts +0 -3
- package/src/components/MessageInput/AttachButton.tsx +12 -47
- package/src/components/MessageInput/CommandsButton.tsx +9 -23
- package/src/components/MessageInput/MessageInput.tsx +10 -22
- package/src/components/MessageInput/MoreOptionsButton.tsx +3 -53
- package/src/components/MessageInput/__tests__/__snapshots__/AttachButton.test.js.snap +2 -2
- package/src/components/MessageInput/components/AudioRecorder/AudioRecorder.tsx +36 -52
- package/src/components/MessageInput/components/AudioRecorder/AudioRecordingButton.tsx +27 -42
- package/src/components/MessageInput/components/InputEditingStateHeader.tsx +18 -44
- package/src/components/MessageInput/components/InputGiphySearch.tsx +27 -51
- package/src/components/MessageInput/components/InputReplyStateHeader.tsx +19 -44
- package/src/components/MessageList/MessageList.tsx +1 -1
- package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +2 -2
- package/src/contexts/messageContext/MessageContext.tsx +1 -1
- package/src/contexts/messageInputContext/MessageInputContext.tsx +3 -3
- package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +0 -3
- package/src/utils/utils.ts +2 -1
- package/src/version.json +1 -1
|
@@ -132,10 +132,7 @@ export type MessageActionHandlers<
|
|
|
132
132
|
|
|
133
133
|
export type MessagePropsWithContext<
|
|
134
134
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
135
|
-
> = Pick<
|
|
136
|
-
ChannelContextValue<StreamChatGenerics>,
|
|
137
|
-
'channel' | 'disabled' | 'enforceUniqueReaction' | 'members'
|
|
138
|
-
> &
|
|
135
|
+
> = Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction' | 'members'> &
|
|
139
136
|
Pick<KeyboardContextValue, 'dismissKeyboard'> &
|
|
140
137
|
Partial<Omit<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'>> &
|
|
141
138
|
Pick<MessageContextValue<StreamChatGenerics>, 'groupStyles' | 'message'> &
|
|
@@ -245,7 +242,6 @@ const MessageWithContext = <
|
|
|
245
242
|
chatContext,
|
|
246
243
|
deleteMessage: deleteMessageFromContext,
|
|
247
244
|
deleteReaction,
|
|
248
|
-
disabled,
|
|
249
245
|
dismissKeyboard,
|
|
250
246
|
dismissKeyboardOnMessageTouch,
|
|
251
247
|
enableLongPress = true,
|
|
@@ -627,7 +623,7 @@ const MessageWithContext = <
|
|
|
627
623
|
};
|
|
628
624
|
|
|
629
625
|
const onLongPressMessage =
|
|
630
|
-
|
|
626
|
+
hasAttachmentActions || isBlockedMessage(message)
|
|
631
627
|
? () => null
|
|
632
628
|
: onLongPressMessageProp
|
|
633
629
|
? (payload?: TouchableHandlerPayload) =>
|
|
@@ -662,7 +658,6 @@ const MessageWithContext = <
|
|
|
662
658
|
actionsEnabled,
|
|
663
659
|
alignment,
|
|
664
660
|
channel,
|
|
665
|
-
disabled,
|
|
666
661
|
files: attachments.files,
|
|
667
662
|
goToMessage,
|
|
668
663
|
groupStyles,
|
|
@@ -780,7 +775,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
780
775
|
) => {
|
|
781
776
|
const {
|
|
782
777
|
chatContext: { mutedUsers: prevMutedUsers },
|
|
783
|
-
disabled: prevDisabled,
|
|
784
778
|
goToMessage: prevGoToMessage,
|
|
785
779
|
groupStyles: prevGroupStyles,
|
|
786
780
|
isAttachmentEqual,
|
|
@@ -794,7 +788,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
794
788
|
} = prevProps;
|
|
795
789
|
const {
|
|
796
790
|
chatContext: { mutedUsers: nextMutedUsers },
|
|
797
|
-
disabled: nextDisabled,
|
|
798
791
|
goToMessage: nextGoToMessage,
|
|
799
792
|
groupStyles: nextGroupStyles,
|
|
800
793
|
isTargetedMessage: nextIsTargetedMessage,
|
|
@@ -806,9 +799,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
806
799
|
t: nextT,
|
|
807
800
|
} = nextProps;
|
|
808
801
|
|
|
809
|
-
const disabledEqual = prevDisabled === nextDisabled;
|
|
810
|
-
if (!disabledEqual) return false;
|
|
811
|
-
|
|
812
802
|
const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;
|
|
813
803
|
if (!membersEqual) return false;
|
|
814
804
|
|
|
@@ -935,8 +925,7 @@ export const Message = <
|
|
|
935
925
|
>(
|
|
936
926
|
props: MessageProps<StreamChatGenerics>,
|
|
937
927
|
) => {
|
|
938
|
-
const { channel,
|
|
939
|
-
useChannelContext<StreamChatGenerics>();
|
|
928
|
+
const { channel, enforceUniqueReaction, members } = useChannelContext<StreamChatGenerics>();
|
|
940
929
|
const chatContext = useChatContext<StreamChatGenerics>();
|
|
941
930
|
const { dismissKeyboard } = useKeyboardContext();
|
|
942
931
|
const { setData } = useMessageOverlayContext<StreamChatGenerics>();
|
|
@@ -951,7 +940,6 @@ export const Message = <
|
|
|
951
940
|
{...{
|
|
952
941
|
channel,
|
|
953
942
|
chatContext,
|
|
954
|
-
disabled,
|
|
955
943
|
dismissKeyboard,
|
|
956
944
|
enforceUniqueReaction,
|
|
957
945
|
members,
|
|
@@ -63,7 +63,6 @@ export type MessageContentPropsWithContext<
|
|
|
63
63
|
> = Pick<
|
|
64
64
|
MessageContextValue<StreamChatGenerics>,
|
|
65
65
|
| 'alignment'
|
|
66
|
-
| 'disabled'
|
|
67
66
|
| 'isEditedMessageOpen'
|
|
68
67
|
| 'goToMessage'
|
|
69
68
|
| 'groupStyles'
|
|
@@ -116,7 +115,6 @@ const MessageContentWithContext = <
|
|
|
116
115
|
additionalTouchableProps,
|
|
117
116
|
alignment,
|
|
118
117
|
Attachment,
|
|
119
|
-
disabled,
|
|
120
118
|
FileAttachmentGroup,
|
|
121
119
|
Gallery,
|
|
122
120
|
groupStyles,
|
|
@@ -272,7 +270,7 @@ const MessageContentWithContext = <
|
|
|
272
270
|
return (
|
|
273
271
|
<TouchableOpacity
|
|
274
272
|
activeOpacity={0.7}
|
|
275
|
-
disabled={
|
|
273
|
+
disabled={preventPress}
|
|
276
274
|
onLongPress={(event) => {
|
|
277
275
|
if (onLongPress) {
|
|
278
276
|
onLongPress({
|
|
@@ -402,7 +400,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
402
400
|
nextProps: MessageContentPropsWithContext<StreamChatGenerics>,
|
|
403
401
|
) => {
|
|
404
402
|
const {
|
|
405
|
-
disabled: prevDisabled,
|
|
406
403
|
goToMessage: prevGoToMessage,
|
|
407
404
|
groupStyles: prevGroupStyles,
|
|
408
405
|
hasReactions: prevHasReactions,
|
|
@@ -418,7 +415,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
418
415
|
t: prevT,
|
|
419
416
|
} = prevProps;
|
|
420
417
|
const {
|
|
421
|
-
disabled: nextDisabled,
|
|
422
418
|
goToMessage: nextGoToMessage,
|
|
423
419
|
groupStyles: nextGroupStyles,
|
|
424
420
|
hasReactions: nextHasReactions,
|
|
@@ -433,9 +429,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
433
429
|
t: nextT,
|
|
434
430
|
} = nextProps;
|
|
435
431
|
|
|
436
|
-
const disabledEqual = prevDisabled === nextDisabled;
|
|
437
|
-
if (!disabledEqual) return false;
|
|
438
|
-
|
|
439
432
|
const hasReactionsEqual = prevHasReactions === nextHasReactions;
|
|
440
433
|
if (!hasReactionsEqual) return false;
|
|
441
434
|
|
|
@@ -554,7 +547,6 @@ export const MessageContent = <
|
|
|
554
547
|
) => {
|
|
555
548
|
const {
|
|
556
549
|
alignment,
|
|
557
|
-
disabled,
|
|
558
550
|
goToMessage,
|
|
559
551
|
groupStyles,
|
|
560
552
|
hasReactions,
|
|
@@ -598,7 +590,6 @@ export const MessageContent = <
|
|
|
598
590
|
additionalTouchableProps,
|
|
599
591
|
alignment,
|
|
600
592
|
Attachment,
|
|
601
|
-
disabled,
|
|
602
593
|
FileAttachmentGroup,
|
|
603
594
|
Gallery,
|
|
604
595
|
goToMessage,
|
|
@@ -31,13 +31,7 @@ export type MessageSimplePropsWithContext<
|
|
|
31
31
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
32
32
|
> = Pick<
|
|
33
33
|
MessageContextValue<StreamChatGenerics>,
|
|
34
|
-
| '
|
|
35
|
-
| 'channel'
|
|
36
|
-
| 'disabled'
|
|
37
|
-
| 'isEditedMessageOpen'
|
|
38
|
-
| 'groupStyles'
|
|
39
|
-
| 'hasReactions'
|
|
40
|
-
| 'message'
|
|
34
|
+
'alignment' | 'channel' | 'isEditedMessageOpen' | 'groupStyles' | 'hasReactions' | 'message'
|
|
41
35
|
> &
|
|
42
36
|
Pick<
|
|
43
37
|
MessagesContextValue<StreamChatGenerics>,
|
|
@@ -125,7 +119,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
125
119
|
) => {
|
|
126
120
|
const {
|
|
127
121
|
channel: prevChannel,
|
|
128
|
-
disabled: prevDisabled,
|
|
129
122
|
groupStyles: prevGroupStyles,
|
|
130
123
|
hasReactions: prevHasReactions,
|
|
131
124
|
isEditedMessageOpen: prevIsEditedMessageOpen,
|
|
@@ -134,7 +127,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
134
127
|
} = prevProps;
|
|
135
128
|
const {
|
|
136
129
|
channel: nextChannel,
|
|
137
|
-
disabled: nextDisabled,
|
|
138
130
|
groupStyles: nextGroupStyles,
|
|
139
131
|
hasReactions: nextHasReactions,
|
|
140
132
|
isEditedMessageOpen: nextIsEditedMessageOpen,
|
|
@@ -142,9 +134,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
142
134
|
myMessageTheme: nextMyMessageTheme,
|
|
143
135
|
} = nextProps;
|
|
144
136
|
|
|
145
|
-
const disabledEqual = prevDisabled === nextDisabled;
|
|
146
|
-
if (!disabledEqual) return false;
|
|
147
|
-
|
|
148
137
|
const hasReactionsEqual = prevHasReactions === nextHasReactions;
|
|
149
138
|
if (!hasReactionsEqual) return false;
|
|
150
139
|
|
|
@@ -231,7 +220,7 @@ export const MessageSimple = <
|
|
|
231
220
|
>(
|
|
232
221
|
props: MessageSimpleProps<StreamChatGenerics>,
|
|
233
222
|
) => {
|
|
234
|
-
const { alignment, channel,
|
|
223
|
+
const { alignment, channel, groupStyles, hasReactions, isEditedMessageOpen, message } =
|
|
235
224
|
useMessageContext<StreamChatGenerics>();
|
|
236
225
|
const {
|
|
237
226
|
enableMessageGroupingByUser,
|
|
@@ -246,7 +235,6 @@ export const MessageSimple = <
|
|
|
246
235
|
{...{
|
|
247
236
|
alignment,
|
|
248
237
|
channel,
|
|
249
|
-
disabled,
|
|
250
238
|
enableMessageGroupingByUser,
|
|
251
239
|
groupStyles,
|
|
252
240
|
hasReactions,
|
|
@@ -10,7 +10,6 @@ export const useCreateMessageContext = <
|
|
|
10
10
|
actionsEnabled,
|
|
11
11
|
alignment,
|
|
12
12
|
channel,
|
|
13
|
-
disabled,
|
|
14
13
|
files,
|
|
15
14
|
goToMessage,
|
|
16
15
|
groupStyles,
|
|
@@ -63,7 +62,6 @@ export const useCreateMessageContext = <
|
|
|
63
62
|
actionsEnabled,
|
|
64
63
|
alignment,
|
|
65
64
|
channel,
|
|
66
|
-
disabled,
|
|
67
65
|
files,
|
|
68
66
|
goToMessage,
|
|
69
67
|
groupStyles,
|
|
@@ -106,7 +104,6 @@ export const useCreateMessageContext = <
|
|
|
106
104
|
actionsEnabled,
|
|
107
105
|
quotedMessageDeletedValue,
|
|
108
106
|
alignment,
|
|
109
|
-
disabled,
|
|
110
107
|
goToMessage,
|
|
111
108
|
groupStylesLength,
|
|
112
109
|
hasReactions,
|
|
@@ -3,29 +3,17 @@ import type { GestureResponderEvent } from 'react-native';
|
|
|
3
3
|
import { Pressable } from 'react-native';
|
|
4
4
|
|
|
5
5
|
import { useAttachmentPickerContext } from '../../contexts/attachmentPickerContext/AttachmentPickerContext';
|
|
6
|
-
import {
|
|
7
|
-
ChannelContextValue,
|
|
8
|
-
useChannelContext,
|
|
9
|
-
} from '../../contexts/channelContext/ChannelContext';
|
|
10
6
|
import { useTheme } from '../../contexts/themeContext/ThemeContext';
|
|
11
7
|
import { Attach } from '../../icons/Attach';
|
|
12
8
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
type AttachButtonPropsWithContext<
|
|
16
|
-
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
17
|
-
> = Pick<ChannelContextValue<StreamChatGenerics>, 'disabled'> & {
|
|
9
|
+
type AttachButtonPropsWithContext = {
|
|
18
10
|
/** Function that opens attachment options bottom sheet */
|
|
19
11
|
handleOnPress?: ((event: GestureResponderEvent) => void) & (() => void);
|
|
20
12
|
selectedPicker?: 'images';
|
|
21
13
|
};
|
|
22
14
|
|
|
23
|
-
const AttachButtonWithContext =
|
|
24
|
-
|
|
25
|
-
>(
|
|
26
|
-
props: AttachButtonPropsWithContext<StreamChatGenerics>,
|
|
27
|
-
) => {
|
|
28
|
-
const { disabled, handleOnPress, selectedPicker } = props;
|
|
15
|
+
const AttachButtonWithContext = (props: AttachButtonPropsWithContext) => {
|
|
16
|
+
const { handleOnPress, selectedPicker } = props;
|
|
29
17
|
const {
|
|
30
18
|
theme: {
|
|
31
19
|
colors: { accent_blue, grey },
|
|
@@ -34,34 +22,18 @@ const AttachButtonWithContext = <
|
|
|
34
22
|
} = useTheme();
|
|
35
23
|
|
|
36
24
|
return (
|
|
37
|
-
<Pressable
|
|
38
|
-
disabled={disabled}
|
|
39
|
-
onPress={disabled ? () => null : handleOnPress}
|
|
40
|
-
style={[attachButton]}
|
|
41
|
-
testID='attach-button'
|
|
42
|
-
>
|
|
25
|
+
<Pressable onPress={handleOnPress} style={[attachButton]} testID='attach-button'>
|
|
43
26
|
<Attach pathFill={selectedPicker === 'images' ? accent_blue : grey} />
|
|
44
27
|
</Pressable>
|
|
45
28
|
);
|
|
46
29
|
};
|
|
47
30
|
|
|
48
|
-
const areEqual =
|
|
49
|
-
prevProps: AttachButtonPropsWithContext
|
|
50
|
-
nextProps: AttachButtonPropsWithContext
|
|
31
|
+
const areEqual = (
|
|
32
|
+
prevProps: AttachButtonPropsWithContext,
|
|
33
|
+
nextProps: AttachButtonPropsWithContext,
|
|
51
34
|
) => {
|
|
52
|
-
const {
|
|
53
|
-
|
|
54
|
-
handleOnPress: prevHandleOnPress,
|
|
55
|
-
selectedPicker: prevSelectedPicker,
|
|
56
|
-
} = prevProps;
|
|
57
|
-
const {
|
|
58
|
-
disabled: nextDisabled,
|
|
59
|
-
handleOnPress: nextHandleOnPress,
|
|
60
|
-
selectedPicker: nextSelectedPicker,
|
|
61
|
-
} = nextProps;
|
|
62
|
-
|
|
63
|
-
const disabledEqual = prevDisabled === nextDisabled;
|
|
64
|
-
if (!disabledEqual) return false;
|
|
35
|
+
const { handleOnPress: prevHandleOnPress, selectedPicker: prevSelectedPicker } = prevProps;
|
|
36
|
+
const { handleOnPress: nextHandleOnPress, selectedPicker: nextSelectedPicker } = nextProps;
|
|
65
37
|
|
|
66
38
|
const handleOnPressEqual = prevHandleOnPress === nextHandleOnPress;
|
|
67
39
|
if (!handleOnPressEqual) return false;
|
|
@@ -77,22 +49,15 @@ const MemoizedAttachButton = React.memo(
|
|
|
77
49
|
areEqual,
|
|
78
50
|
) as typeof AttachButtonWithContext;
|
|
79
51
|
|
|
80
|
-
export type AttachButtonProps<
|
|
81
|
-
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
82
|
-
> = Partial<AttachButtonPropsWithContext<StreamChatGenerics>>;
|
|
52
|
+
export type AttachButtonProps = Partial<AttachButtonPropsWithContext>;
|
|
83
53
|
|
|
84
54
|
/**
|
|
85
55
|
* UI Component for attach button in MessageInput component.
|
|
86
56
|
*/
|
|
87
|
-
export const AttachButton =
|
|
88
|
-
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
89
|
-
>(
|
|
90
|
-
props: AttachButtonProps<StreamChatGenerics>,
|
|
91
|
-
) => {
|
|
92
|
-
const { disabled = false } = useChannelContext<StreamChatGenerics>();
|
|
57
|
+
export const AttachButton = (props: AttachButtonProps) => {
|
|
93
58
|
const { selectedPicker } = useAttachmentPickerContext();
|
|
94
59
|
|
|
95
|
-
return <MemoizedAttachButton {...{
|
|
60
|
+
return <MemoizedAttachButton {...{ selectedPicker }} {...props} />;
|
|
96
61
|
};
|
|
97
62
|
|
|
98
63
|
AttachButton.displayName = 'AttachButton{messageInput}';
|
|
@@ -2,10 +2,6 @@ import React from 'react';
|
|
|
2
2
|
import type { GestureResponderEvent } from 'react-native';
|
|
3
3
|
import { Pressable } from 'react-native';
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
ChannelContextValue,
|
|
7
|
-
useChannelContext,
|
|
8
|
-
} from '../../contexts/channelContext/ChannelContext';
|
|
9
5
|
import {
|
|
10
6
|
isSuggestionCommand,
|
|
11
7
|
SuggestionsContextValue,
|
|
@@ -18,18 +14,17 @@ import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
|
18
14
|
|
|
19
15
|
type CommandsButtonPropsWithContext<
|
|
20
16
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
21
|
-
> = Pick<
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
};
|
|
17
|
+
> = Pick<SuggestionsContextValue<StreamChatGenerics>, 'suggestions'> & {
|
|
18
|
+
/** Function that opens commands selector */
|
|
19
|
+
handleOnPress?: ((event: GestureResponderEvent) => void) & (() => void);
|
|
20
|
+
};
|
|
26
21
|
|
|
27
22
|
const CommandsButtonWithContext = <
|
|
28
23
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
29
24
|
>(
|
|
30
25
|
props: CommandsButtonPropsWithContext<StreamChatGenerics>,
|
|
31
26
|
) => {
|
|
32
|
-
const {
|
|
27
|
+
const { handleOnPress, suggestions } = props;
|
|
33
28
|
|
|
34
29
|
const {
|
|
35
30
|
theme: {
|
|
@@ -39,12 +34,7 @@ const CommandsButtonWithContext = <
|
|
|
39
34
|
} = useTheme();
|
|
40
35
|
|
|
41
36
|
return (
|
|
42
|
-
<Pressable
|
|
43
|
-
disabled={disabled}
|
|
44
|
-
onPress={handleOnPress}
|
|
45
|
-
style={[commandsButton]}
|
|
46
|
-
testID='commands-button'
|
|
47
|
-
>
|
|
37
|
+
<Pressable onPress={handleOnPress} style={[commandsButton]} testID='commands-button'>
|
|
48
38
|
<Lightning
|
|
49
39
|
pathFill={
|
|
50
40
|
suggestions && suggestions.data.some((suggestion) => isSuggestionCommand(suggestion))
|
|
@@ -60,11 +50,8 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
60
50
|
prevProps: CommandsButtonPropsWithContext<StreamChatGenerics>,
|
|
61
51
|
nextProps: CommandsButtonPropsWithContext<StreamChatGenerics>,
|
|
62
52
|
) => {
|
|
63
|
-
const {
|
|
64
|
-
const {
|
|
65
|
-
|
|
66
|
-
const disabledEqual = prevDisabled === nextDisabled;
|
|
67
|
-
if (!disabledEqual) return false;
|
|
53
|
+
const { suggestions: prevSuggestions } = prevProps;
|
|
54
|
+
const { suggestions: nextSuggestions } = nextProps;
|
|
68
55
|
|
|
69
56
|
const suggestionsEqual = !!prevSuggestions === !!nextSuggestions;
|
|
70
57
|
if (!suggestionsEqual) return false;
|
|
@@ -89,10 +76,9 @@ export const CommandsButton = <
|
|
|
89
76
|
>(
|
|
90
77
|
props: CommandsButtonProps<StreamChatGenerics>,
|
|
91
78
|
) => {
|
|
92
|
-
const { disabled = false } = useChannelContext<StreamChatGenerics>();
|
|
93
79
|
const { suggestions } = useSuggestionsContext<StreamChatGenerics>();
|
|
94
80
|
|
|
95
|
-
return <MemoizedCommandsButton {...{
|
|
81
|
+
return <MemoizedCommandsButton {...{ suggestions }} {...props} />;
|
|
96
82
|
};
|
|
97
83
|
|
|
98
84
|
CommandsButton.displayName = 'CommandsButton{messageInput}';
|
|
@@ -21,7 +21,7 @@ import type { UserResponse } from 'stream-chat';
|
|
|
21
21
|
import { useAudioController } from './hooks/useAudioController';
|
|
22
22
|
import { useCountdown } from './hooks/useCountdown';
|
|
23
23
|
|
|
24
|
-
import { ChatContextValue, useChatContext } from '../../contexts';
|
|
24
|
+
import { ChatContextValue, useChatContext, useOwnCapabilitiesContext } from '../../contexts';
|
|
25
25
|
import {
|
|
26
26
|
AttachmentPickerContextValue,
|
|
27
27
|
useAttachmentPickerContext,
|
|
@@ -38,7 +38,6 @@ import {
|
|
|
38
38
|
MessagesContextValue,
|
|
39
39
|
useMessagesContext,
|
|
40
40
|
} from '../../contexts/messagesContext/MessagesContext';
|
|
41
|
-
import { useOwnCapabilitiesContext } from '../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';
|
|
42
41
|
import {
|
|
43
42
|
SuggestionsContextValue,
|
|
44
43
|
useSuggestionsContext,
|
|
@@ -96,10 +95,7 @@ type MessageInputPropsWithContext<
|
|
|
96
95
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
97
96
|
> = Pick<AttachmentPickerContextValue, 'AttachmentPickerSelectionBar'> &
|
|
98
97
|
Pick<ChatContextValue<StreamChatGenerics>, 'isOnline'> &
|
|
99
|
-
Pick<
|
|
100
|
-
ChannelContextValue<StreamChatGenerics>,
|
|
101
|
-
'disabled' | 'members' | 'threadList' | 'watchers'
|
|
102
|
-
> &
|
|
98
|
+
Pick<ChannelContextValue<StreamChatGenerics>, 'members' | 'threadList' | 'watchers'> &
|
|
103
99
|
Pick<
|
|
104
100
|
MessageInputContextValue<StreamChatGenerics>,
|
|
105
101
|
| 'additionalTextInputProps'
|
|
@@ -184,7 +180,6 @@ const MessageInputWithContext = <
|
|
|
184
180
|
closeAttachmentPicker,
|
|
185
181
|
cooldownEndsAt,
|
|
186
182
|
CooldownTimer,
|
|
187
|
-
disabled,
|
|
188
183
|
editing,
|
|
189
184
|
FileUploadPreview,
|
|
190
185
|
fileUploads,
|
|
@@ -457,7 +452,8 @@ const MessageInputWithContext = <
|
|
|
457
452
|
fileUploads.length > 0 ||
|
|
458
453
|
mentionedUsers.length > 0 ||
|
|
459
454
|
imageUploads.length > 0 ||
|
|
460
|
-
numberOfUploads > 0)
|
|
455
|
+
numberOfUploads > 0) &&
|
|
456
|
+
resetInput
|
|
461
457
|
) {
|
|
462
458
|
resetInput();
|
|
463
459
|
}
|
|
@@ -517,7 +513,6 @@ const MessageInputWithContext = <
|
|
|
517
513
|
};
|
|
518
514
|
|
|
519
515
|
const additionalTextInputContainerProps = {
|
|
520
|
-
editable: disabled ? false : undefined,
|
|
521
516
|
...additionalTextInputProps,
|
|
522
517
|
};
|
|
523
518
|
|
|
@@ -771,12 +766,7 @@ const MessageInputWithContext = <
|
|
|
771
766
|
) : (
|
|
772
767
|
<View style={[styles.sendButtonContainer, sendButtonContainer]}>
|
|
773
768
|
<SendButton
|
|
774
|
-
disabled={
|
|
775
|
-
disabled ||
|
|
776
|
-
sending.current ||
|
|
777
|
-
!isValidMessage() ||
|
|
778
|
-
(giphyActive && !isOnline)
|
|
779
|
-
}
|
|
769
|
+
disabled={sending.current || !isValidMessage() || (giphyActive && !isOnline)}
|
|
780
770
|
/>
|
|
781
771
|
</View>
|
|
782
772
|
))}
|
|
@@ -849,7 +839,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
849
839
|
asyncMessagesSlideToCancelDistance: prevAsyncMessagesSlideToCancelDistance,
|
|
850
840
|
asyncUploads: prevAsyncUploads,
|
|
851
841
|
audioRecordingEnabled: prevAsyncMessagesEnabled,
|
|
852
|
-
disabled: prevDisabled,
|
|
853
842
|
editing: prevEditing,
|
|
854
843
|
fileUploads: prevFileUploads,
|
|
855
844
|
giphyActive: prevGiphyActive,
|
|
@@ -872,7 +861,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
872
861
|
asyncMessagesSlideToCancelDistance: nextAsyncMessagesSlideToCancelDistance,
|
|
873
862
|
asyncUploads: nextAsyncUploads,
|
|
874
863
|
audioRecordingEnabled: nextAsyncMessagesEnabled,
|
|
875
|
-
disabled: nextDisabled,
|
|
876
864
|
editing: nextEditing,
|
|
877
865
|
fileUploads: nextFileUploads,
|
|
878
866
|
giphyActive: nextGiphyActive,
|
|
@@ -911,9 +899,6 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
|
|
|
911
899
|
prevAsyncMessagesSlideToCancelDistance === nextAsyncMessagesSlideToCancelDistance;
|
|
912
900
|
if (!asyncMessagesSlideToCancelDistanceEqual) return false;
|
|
913
901
|
|
|
914
|
-
const disabledEqual = prevDisabled === nextDisabled;
|
|
915
|
-
if (!disabledEqual) return false;
|
|
916
|
-
|
|
917
902
|
const editingEqual = !!prevEditing === !!nextEditing;
|
|
918
903
|
if (!editingEqual) return false;
|
|
919
904
|
|
|
@@ -1071,7 +1056,11 @@ export const MessageInput = <
|
|
|
1071
1056
|
|
|
1072
1057
|
const { t } = useTranslationContext();
|
|
1073
1058
|
|
|
1074
|
-
|
|
1059
|
+
/**
|
|
1060
|
+
* Disable the message input if the channel is frozen, or the user doesn't have the capability to send a message.
|
|
1061
|
+
* Enable it in frozen mode, if it the input has editing state.
|
|
1062
|
+
*/
|
|
1063
|
+
if (!editing && disabled && !ownCapabilities.sendMessage && SendMessageDisallowedIndicator) {
|
|
1075
1064
|
return <SendMessageDisallowedIndicator />;
|
|
1076
1065
|
}
|
|
1077
1066
|
|
|
@@ -1099,7 +1088,6 @@ export const MessageInput = <
|
|
|
1099
1088
|
closeAttachmentPicker,
|
|
1100
1089
|
cooldownEndsAt,
|
|
1101
1090
|
CooldownTimer,
|
|
1102
|
-
disabled,
|
|
1103
1091
|
editing,
|
|
1104
1092
|
FileUploadPreview,
|
|
1105
1093
|
fileUploads,
|
|
@@ -2,28 +2,16 @@ import React from 'react';
|
|
|
2
2
|
import type { GestureResponderEvent } from 'react-native';
|
|
3
3
|
import { TouchableOpacity } from 'react-native-gesture-handler';
|
|
4
4
|
|
|
5
|
-
import {
|
|
6
|
-
ChannelContextValue,
|
|
7
|
-
useChannelContext,
|
|
8
|
-
} from '../../contexts/channelContext/ChannelContext';
|
|
9
5
|
import { useTheme } from '../../contexts/themeContext/ThemeContext';
|
|
10
6
|
import { CircleRight } from '../../icons/CircleRight';
|
|
11
7
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
type MoreOptionsButtonPropsWithContext<
|
|
15
|
-
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
16
|
-
> = Pick<ChannelContextValue<StreamChatGenerics>, 'disabled'> & {
|
|
8
|
+
export type MoreOptionsButtonProps = {
|
|
17
9
|
/** Function that opens attachment options bottom sheet */
|
|
18
10
|
handleOnPress?: ((event: GestureResponderEvent) => void) & (() => void);
|
|
19
11
|
};
|
|
20
12
|
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
>(
|
|
24
|
-
props: MoreOptionsButtonPropsWithContext<StreamChatGenerics>,
|
|
25
|
-
) => {
|
|
26
|
-
const { disabled, handleOnPress } = props;
|
|
13
|
+
export const MoreOptionsButton = (props: MoreOptionsButtonProps) => {
|
|
14
|
+
const { handleOnPress } = props;
|
|
27
15
|
|
|
28
16
|
const {
|
|
29
17
|
theme: {
|
|
@@ -34,7 +22,6 @@ const MoreOptionsButtonWithContext = <
|
|
|
34
22
|
|
|
35
23
|
return (
|
|
36
24
|
<TouchableOpacity
|
|
37
|
-
disabled={disabled}
|
|
38
25
|
hitSlop={{ bottom: 15, left: 15, right: 15, top: 15 }}
|
|
39
26
|
onPress={handleOnPress}
|
|
40
27
|
style={[moreOptionsButton]}
|
|
@@ -45,41 +32,4 @@ const MoreOptionsButtonWithContext = <
|
|
|
45
32
|
);
|
|
46
33
|
};
|
|
47
34
|
|
|
48
|
-
const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(
|
|
49
|
-
prevProps: MoreOptionsButtonPropsWithContext<StreamChatGenerics>,
|
|
50
|
-
nextProps: MoreOptionsButtonPropsWithContext<StreamChatGenerics>,
|
|
51
|
-
) => {
|
|
52
|
-
const { disabled: prevDisabled, handleOnPress: prevHandleOnPress } = prevProps;
|
|
53
|
-
const { disabled: nextDisabled, handleOnPress: nextHandleOnPress } = nextProps;
|
|
54
|
-
const disabledEqual = prevDisabled === nextDisabled;
|
|
55
|
-
if (!disabledEqual) return false;
|
|
56
|
-
|
|
57
|
-
const handleOnPressEqual = prevHandleOnPress === nextHandleOnPress;
|
|
58
|
-
if (!handleOnPressEqual) return false;
|
|
59
|
-
|
|
60
|
-
return true;
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
const MemoizedMoreOptionsButton = React.memo(
|
|
64
|
-
MoreOptionsButtonWithContext,
|
|
65
|
-
areEqual,
|
|
66
|
-
) as typeof MoreOptionsButtonWithContext;
|
|
67
|
-
|
|
68
|
-
export type MoreOptionsButtonProps<
|
|
69
|
-
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
70
|
-
> = Partial<MoreOptionsButtonPropsWithContext<StreamChatGenerics>>;
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* UI Component for more options button in MessageInput component.
|
|
74
|
-
*/
|
|
75
|
-
export const MoreOptionsButton = <
|
|
76
|
-
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
77
|
-
>(
|
|
78
|
-
props: MoreOptionsButtonProps<StreamChatGenerics>,
|
|
79
|
-
) => {
|
|
80
|
-
const { disabled = false } = useChannelContext<StreamChatGenerics>();
|
|
81
|
-
|
|
82
|
-
return <MemoizedMoreOptionsButton {...{ disabled }} {...props} />;
|
|
83
|
-
};
|
|
84
|
-
|
|
85
35
|
MoreOptionsButton.displayName = 'MoreOptionsButton{messageInput}';
|
|
@@ -6,7 +6,7 @@ exports[`AttachButton should render a disabled AttachButton 1`] = `
|
|
|
6
6
|
{
|
|
7
7
|
"busy": undefined,
|
|
8
8
|
"checked": undefined,
|
|
9
|
-
"disabled":
|
|
9
|
+
"disabled": undefined,
|
|
10
10
|
"expanded": undefined,
|
|
11
11
|
"selected": undefined,
|
|
12
12
|
}
|
|
@@ -101,7 +101,7 @@ exports[`AttachButton should render an enabled AttachButton 1`] = `
|
|
|
101
101
|
{
|
|
102
102
|
"busy": undefined,
|
|
103
103
|
"checked": undefined,
|
|
104
|
-
"disabled":
|
|
104
|
+
"disabled": undefined,
|
|
105
105
|
"expanded": undefined,
|
|
106
106
|
"selected": undefined,
|
|
107
107
|
}
|