Skip to content

Commit 9c832aa

Browse files
committed
chore: rename multisend prop for audio and default it to true
1 parent b5f27f1 commit 9c832aa

File tree

9 files changed

+44
-36
lines changed

9 files changed

+44
-36
lines changed

package/src/components/Channel/Channel.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -576,8 +576,8 @@ const ChannelWithContext = (props: PropsWithChildren<ChannelPropsWithContext>) =
576576
allowThreadMessagesInChannel = true,
577577
asyncMessagesLockDistance = 50,
578578
asyncMessagesMinimumPressDuration = 500,
579-
asyncMessagesMultiSendEnabled = true,
580579
asyncMessagesSlideToCancelDistance = 75,
580+
audioRecordingSendOnComplete = true,
581581
AttachButton = AttachButtonDefault,
582582
Attachment = AttachmentDefault,
583583
attachmentPickerBottomSheetHeight = disableAttachmentPicker ? 72 : 333,
@@ -1852,7 +1852,7 @@ const ChannelWithContext = (props: PropsWithChildren<ChannelPropsWithContext>) =
18521852
allowSendBeforeAttachmentsUpload,
18531853
asyncMessagesLockDistance,
18541854
asyncMessagesMinimumPressDuration,
1855-
asyncMessagesMultiSendEnabled,
1855+
audioRecordingSendOnComplete,
18561856
asyncMessagesSlideToCancelDistance,
18571857
AttachButton,
18581858
attachmentPickerBottomSheetHeight,

package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ export const useCreateInputMessageInputContext = ({
77
allowSendBeforeAttachmentsUpload,
88
asyncMessagesLockDistance,
99
asyncMessagesMinimumPressDuration,
10-
asyncMessagesMultiSendEnabled,
1110
asyncMessagesSlideToCancelDistance,
11+
audioRecordingSendOnComplete,
1212
AttachButton,
1313
attachmentPickerBottomSheetHeight,
1414
AttachmentPickerSelectionBar,
@@ -77,8 +77,8 @@ export const useCreateInputMessageInputContext = ({
7777
allowSendBeforeAttachmentsUpload,
7878
asyncMessagesLockDistance,
7979
asyncMessagesMinimumPressDuration,
80-
asyncMessagesMultiSendEnabled,
8180
asyncMessagesSlideToCancelDistance,
81+
audioRecordingSendOnComplete,
8282
AttachButton,
8383
attachmentPickerBottomSheetHeight,
8484
AttachmentPickerSelectionBar,

package/src/components/MessageInput/MessageComposer.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,11 @@ type MessageComposerPropsWithContext = Pick<ChatContextValue, 'isOnline'> &
155155
MessageInputContextValue,
156156
| 'audioRecorderManager'
157157
| 'additionalTextInputProps'
158+
| 'audioRecordingSendOnComplete'
158159
| 'audioRecordingEnabled'
159160
| 'asyncMessagesLockDistance'
160161
| 'asyncMessagesMinimumPressDuration'
161162
| 'asyncMessagesSlideToCancelDistance'
162-
| 'asyncMessagesMultiSendEnabled'
163163
| 'AttachmentUploadPreviewList'
164164
| 'AudioRecorder'
165165
| 'AudioRecordingInProgress'
@@ -515,6 +515,7 @@ const areEqual = (
515515
asyncMessagesLockDistance: prevAsyncMessagesLockDistance,
516516
asyncMessagesMinimumPressDuration: prevAsyncMessagesMinimumPressDuration,
517517
asyncMessagesSlideToCancelDistance: prevAsyncMessagesSlideToCancelDistance,
518+
audioRecordingSendOnComplete: prevAudioRecordingSendOnComplete,
518519
audioRecordingEnabled: prevAsyncMessagesEnabled,
519520
channel: prevChannel,
520521
closePollCreationDialog: prevClosePollCreationDialog,
@@ -534,6 +535,7 @@ const areEqual = (
534535
asyncMessagesLockDistance: nextAsyncMessagesLockDistance,
535536
asyncMessagesMinimumPressDuration: nextAsyncMessagesMinimumPressDuration,
536537
asyncMessagesSlideToCancelDistance: nextAsyncMessagesSlideToCancelDistance,
538+
audioRecordingSendOnComplete: nextAudioRecordingSendOnComplete,
537539
audioRecordingEnabled: nextAsyncMessagesEnabled,
538540
channel: nextChannel,
539541
closePollCreationDialog: nextClosePollCreationDialog,
@@ -597,6 +599,12 @@ const areEqual = (
597599
return false;
598600
}
599601

602+
const audioRecordingSendOnCompleteEqual =
603+
prevAudioRecordingSendOnComplete === nextAudioRecordingSendOnComplete;
604+
if (!audioRecordingSendOnCompleteEqual) {
605+
return false;
606+
}
607+
600608
const editingEqual = !!prevEditing === !!nextEditing;
601609
if (!editingEqual) {
602610
return false;
@@ -655,9 +663,9 @@ export const MessageComposer = (props: MessageComposerProps) => {
655663
const {
656664
audioRecorderManager,
657665
additionalTextInputProps,
666+
audioRecordingSendOnComplete,
658667
asyncMessagesLockDistance,
659668
asyncMessagesMinimumPressDuration,
660-
asyncMessagesMultiSendEnabled,
661669
asyncMessagesSlideToCancelDistance,
662670
AttachmentUploadPreviewList,
663671
AudioRecorder,
@@ -720,9 +728,9 @@ export const MessageComposer = (props: MessageComposerProps) => {
720728
recordingStatus,
721729
micLocked,
722730
additionalTextInputProps,
731+
audioRecordingSendOnComplete,
723732
asyncMessagesLockDistance,
724733
asyncMessagesMinimumPressDuration,
725-
asyncMessagesMultiSendEnabled,
726734
asyncMessagesSlideToCancelDistance,
727735
AttachmentUploadPreviewList,
728736
AudioRecorder,

package/src/components/MessageInput/components/AudioRecorder/AudioRecorder.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import { primitives } from '../../../../theme';
2727
type AudioRecorderPropsWithContext = Pick<
2828
MessageInputContextValue,
2929
| 'audioRecorderManager'
30-
| 'asyncMessagesMultiSendEnabled'
30+
| 'audioRecordingSendOnComplete'
3131
| 'stopVoiceRecording'
3232
| 'deleteVoiceRecording'
3333
| 'uploadVoiceRecording'
@@ -70,15 +70,15 @@ const StopRecording = ({
7070
};
7171

7272
const UploadRecording = ({
73-
asyncMessagesMultiSendEnabled,
73+
audioRecordingSendOnComplete,
7474
uploadVoiceRecordingHandler,
7575
}: {
76-
asyncMessagesMultiSendEnabled: boolean;
77-
uploadVoiceRecordingHandler: (multiSendEnabled: boolean) => Promise<void>;
76+
audioRecordingSendOnComplete: boolean;
77+
uploadVoiceRecordingHandler: (sendOnComplete: boolean) => Promise<void>;
7878
}) => {
7979
const onUploadVoiceRecording = () => {
8080
NativeHandlers.triggerHaptic('impactMedium');
81-
uploadVoiceRecordingHandler(asyncMessagesMultiSendEnabled);
81+
uploadVoiceRecordingHandler(audioRecordingSendOnComplete);
8282
};
8383

8484
return (
@@ -116,7 +116,7 @@ const DeleteRecording = ({
116116

117117
const AudioRecorderWithContext = (props: AudioRecorderPropsWithContext) => {
118118
const {
119-
asyncMessagesMultiSendEnabled,
119+
audioRecordingSendOnComplete,
120120
slideToCancelStyle,
121121
deleteVoiceRecording,
122122
stopVoiceRecording,
@@ -144,7 +144,7 @@ const AudioRecorderWithContext = (props: AudioRecorderPropsWithContext) => {
144144
<View style={styles.container}>
145145
<DeleteRecording deleteVoiceRecordingHandler={deleteVoiceRecording} />
146146
<UploadRecording
147-
asyncMessagesMultiSendEnabled={asyncMessagesMultiSendEnabled}
147+
audioRecordingSendOnComplete={audioRecordingSendOnComplete}
148148
uploadVoiceRecordingHandler={uploadVoiceRecording}
149149
/>
150150
</View>
@@ -155,7 +155,7 @@ const AudioRecorderWithContext = (props: AudioRecorderPropsWithContext) => {
155155
<DeleteRecording deleteVoiceRecordingHandler={deleteVoiceRecording} />
156156
<StopRecording stopVoiceRecordingHandler={stopVoiceRecording} />
157157
<UploadRecording
158-
asyncMessagesMultiSendEnabled={asyncMessagesMultiSendEnabled}
158+
audioRecordingSendOnComplete={audioRecordingSendOnComplete}
159159
uploadVoiceRecordingHandler={uploadVoiceRecording}
160160
/>
161161
</View>
@@ -201,7 +201,7 @@ const audioRecorderSelector = (state: AudioRecorderManagerState) => ({
201201
export const AudioRecorder = (props: AudioRecorderProps) => {
202202
const {
203203
audioRecorderManager,
204-
asyncMessagesMultiSendEnabled,
204+
audioRecordingSendOnComplete,
205205
stopVoiceRecording,
206206
deleteVoiceRecording,
207207
uploadVoiceRecording,
@@ -216,7 +216,7 @@ export const AudioRecorder = (props: AudioRecorderProps) => {
216216
<MemoizedAudioRecorder
217217
{...{
218218
audioRecorderManager,
219-
asyncMessagesMultiSendEnabled,
219+
audioRecordingSendOnComplete,
220220
stopVoiceRecording,
221221
deleteVoiceRecording,
222222
uploadVoiceRecording,

package/src/components/MessageInput/components/AudioRecorder/AudioRecordingButton.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export type AudioRecordingButtonPropsWithContext = Pick<
3131
| 'asyncMessagesMinimumPressDuration'
3232
| 'asyncMessagesSlideToCancelDistance'
3333
| 'asyncMessagesLockDistance'
34-
| 'asyncMessagesMultiSendEnabled'
34+
| 'audioRecordingSendOnComplete'
3535
| 'audioRecorderManager'
3636
| 'startVoiceRecording'
3737
| 'deleteVoiceRecording'
@@ -67,7 +67,7 @@ export const AudioRecordingButtonWithContext = (props: AudioRecordingButtonProps
6767
asyncMessagesMinimumPressDuration,
6868
asyncMessagesSlideToCancelDistance,
6969
asyncMessagesLockDistance,
70-
asyncMessagesMultiSendEnabled,
70+
audioRecordingSendOnComplete,
7171
startVoiceRecording,
7272
deleteVoiceRecording,
7373
uploadVoiceRecording,
@@ -156,7 +156,7 @@ export const AudioRecordingButtonWithContext = (props: AudioRecordingButtonProps
156156
return;
157157
}
158158
if (status === 'recording') {
159-
uploadVoiceRecording(asyncMessagesMultiSendEnabled);
159+
uploadVoiceRecording(audioRecordingSendOnComplete);
160160
} else {
161161
resetAudioRecording();
162162
}
@@ -263,7 +263,7 @@ export const AudioRecordingButton = (props: AudioRecordingButtonProps) => {
263263
asyncMessagesMinimumPressDuration,
264264
asyncMessagesSlideToCancelDistance,
265265
asyncMessagesLockDistance,
266-
asyncMessagesMultiSendEnabled,
266+
audioRecordingSendOnComplete,
267267
startVoiceRecording,
268268
deleteVoiceRecording,
269269
uploadVoiceRecording,
@@ -281,7 +281,7 @@ export const AudioRecordingButton = (props: AudioRecordingButtonProps) => {
281281
asyncMessagesMinimumPressDuration,
282282
asyncMessagesSlideToCancelDistance,
283283
asyncMessagesLockDistance,
284-
asyncMessagesMultiSendEnabled,
284+
audioRecordingSendOnComplete,
285285
startVoiceRecording,
286286
deleteVoiceRecording,
287287
uploadVoiceRecording,

package/src/components/MessageInput/components/OutputButtons/index.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export type OutputButtonsWithContextProps = Pick<ChatContextValue, 'isOnline'> &
3333
| 'asyncMessagesMinimumPressDuration'
3434
| 'asyncMessagesSlideToCancelDistance'
3535
| 'asyncMessagesLockDistance'
36-
| 'asyncMessagesMultiSendEnabled'
36+
| 'audioRecordingSendOnComplete'
3737
| 'audioRecordingEnabled'
3838
| 'CooldownTimer'
3939
| 'SendButton'
@@ -178,7 +178,7 @@ export const OutputButtons = (props: OutputButtonsProps) => {
178178
asyncMessagesMinimumPressDuration,
179179
asyncMessagesSlideToCancelDistance,
180180
asyncMessagesLockDistance,
181-
asyncMessagesMultiSendEnabled,
181+
audioRecordingSendOnComplete,
182182
CooldownTimer,
183183
SendButton,
184184
StopMessageStreamingButton,
@@ -192,7 +192,7 @@ export const OutputButtons = (props: OutputButtonsProps) => {
192192
{...{
193193
asyncMessagesLockDistance,
194194
asyncMessagesMinimumPressDuration,
195-
asyncMessagesMultiSendEnabled,
195+
audioRecordingSendOnComplete,
196196
asyncMessagesSlideToCancelDistance,
197197
audioRecordingEnabled,
198198
channel,

package/src/components/MessageInput/hooks/useAudioRecorder.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@ export const useAudioRecorder = ({
6868

6969
/**
7070
* Function to upload or send voice recording.
71-
* @param multiSendEnabled boolean
71+
* @param sendOnComplete boolean
7272
*/
7373
const uploadVoiceRecording = useCallback(
74-
async (multiSendEnabled: boolean) => {
74+
async (sendOnComplete: boolean) => {
7575
try {
7676
const { recording, duration, waveformData } = audioRecorderManager.state.getLatestValue();
7777
await stopVoiceRecording();
@@ -112,12 +112,11 @@ export const useAudioRecorder = ({
112112

113113
audioRecorderManager.reset();
114114

115-
if (multiSendEnabled) {
115+
if (sendOnComplete) {
116116
await attachmentManager.uploadAttachment(audioFile);
117+
setIsScheduleForSubmit(true);
117118
} else {
118-
// FIXME: cannot call handleSubmit() directly as the function has stale reference to file uploads
119119
await attachmentManager.uploadAttachment(audioFile);
120-
setIsScheduleForSubmit(true);
121120
}
122121
} catch (error) {
123122
console.log('Error uploading voice recording: ', error);

package/src/contexts/messageInputContext/MessageInputContext.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ export type LocalMessageInputContext = {
9898
audioRecorderManager: AudioRecorderManager;
9999
startVoiceRecording: () => Promise<boolean | undefined>;
100100
deleteVoiceRecording: () => Promise<void>;
101-
uploadVoiceRecording: (multiSendEnabled: boolean) => Promise<void>;
101+
uploadVoiceRecording: (sendOnComplete: boolean) => Promise<void>;
102102
stopVoiceRecording: () => Promise<void>;
103103
};
104104

@@ -114,10 +114,11 @@ export type InputMessageInputContextValue = {
114114
*/
115115
asyncMessagesMinimumPressDuration: number;
116116
/**
117-
* When it’s enabled, recorded messages won’t be sent immediately. Instead they will “stack up” in the composer
118-
* allowing the user to send multiple voice recording as part of the same message.
117+
* Controls whether a completed voice recording is sent immediately or added to the composer first.
118+
* When true, the recording is sent immediately on completion.
119+
* When false, the recording is added to the composer and only sent if the user decides to.
119120
*/
120-
asyncMessagesMultiSendEnabled: boolean;
121+
audioRecordingSendOnComplete: boolean;
121122
/**
122123
* Controls how many pixels to the leading side the user has to scroll in order to cancel the recording of a voice
123124
* message.

package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ export const useCreateMessageInputContext = ({
77
additionalTextInputProps,
88
asyncMessagesLockDistance,
99
asyncMessagesMinimumPressDuration,
10-
asyncMessagesMultiSendEnabled,
1110
asyncMessagesSlideToCancelDistance,
11+
audioRecordingSendOnComplete,
1212
AttachButton,
1313
attachmentPickerBottomSheetHeight,
1414
AttachmentPickerSelectionBar,
@@ -86,8 +86,8 @@ export const useCreateMessageInputContext = ({
8686
additionalTextInputProps,
8787
asyncMessagesLockDistance,
8888
asyncMessagesMinimumPressDuration,
89-
asyncMessagesMultiSendEnabled,
9089
asyncMessagesSlideToCancelDistance,
90+
audioRecordingSendOnComplete,
9191
AttachButton,
9292
attachmentPickerBottomSheetHeight,
9393
AttachmentPickerSelectionBar,

0 commit comments

Comments
 (0)