Skip to content

Commit 7fa917b

Browse files
authored
Merge pull request #263 from sendbird/feat/support-nitro-sound
[CLNP-7546] feat: add react-native-nitro-sound for React Native 0.81 support
2 parents 3c50737 + 7dcf0cc commit 7fa917b

File tree

16 files changed

+607
-320
lines changed

16 files changed

+607
-320
lines changed

docs-validation/1_introduction/NativeModules.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import * as ImagePicker from 'react-native-image-picker';
2727
import * as Permissions from 'react-native-permissions';
2828
import * as CreateThumbnail from 'react-native-create-thumbnail';
2929
import * as ImageResizer from '@bam.tech/react-native-image-resizer';
30-
import * as AudioRecorderPlayer from 'react-native-audio-recorder-player';
30+
import * as AudioRecorderPlayer from 'react-native-nitro-sound';
3131

3232
const nativePlatformServices = {
3333
clipboard: createNativeClipboardService(Clipboard),

docs-validation/1_introduction/SendYourFirstMessage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import * as ImagePicker from 'react-native-image-picker';
2424
import * as Permissions from 'react-native-permissions';
2525
import * as CreateThumbnail from 'react-native-create-thumbnail';
2626
import * as ImageResizer from '@bam.tech/react-native-image-resizer';
27-
import * as AudioRecorderPlayer from 'react-native-audio-recorder-player';
27+
import * as AudioRecorderPlayer from 'react-native-nitro-sound';
2828

2929

3030
export const platformServices: SendbirdUIKitContainerProps['platformServices'] = {

docs-validation/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919
"date-fns": "^4.1.0",
2020
"react": "18.2.0",
2121
"react-native": "0.74.3",
22-
"react-native-audio-recorder-player": "^3.6.10",
22+
"react-native-nitro-modules": "^0.29.4",
23+
"react-native-nitro-sound": "^0.2.0",
2324
"react-native-create-thumbnail": "^2.0.0",
2425
"react-native-file-access": "^3.1.0",
2526
"react-native-image-picker": "^7.1.2",

packages/uikit-react-native/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ npm install react-native-video \
150150
react-native-image-picker \
151151
react-native-document-picker \
152152
react-native-create-thumbnail \
153-
react-native-audio-recorder-player \
153+
react-native-nitro-sound \
154154
@react-native-clipboard/clipboard \
155155
@react-native-camera-roll/camera-roll \
156156
@react-native-firebase/app \
@@ -171,7 +171,7 @@ import * as ImagePicker from 'react-native-image-picker';
171171
import * as Permissions from 'react-native-permissions';
172172
import * as CreateThumbnail from 'react-native-create-thumbnail';
173173
import * as ImageResizer from '@bam.tech/react-native-image-resizer';
174-
import * as AudioRecorderPlayer from 'react-native-audio-recorder-player';
174+
import * as AudioRecorderPlayer from 'react-native-nitro-sound';
175175

176176
const nativePlatformServices = {
177177
clipboard: createNativeClipboardService(Clipboard),

packages/uikit-react-native/package.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@
9292
"react": "18.2.0",
9393
"react-native": "0.74.3",
9494
"react-native-audio-recorder-player": "^3.6.10",
95+
"react-native-nitro-modules": "^0.29.4",
96+
"react-native-nitro-sound": "^0.2.0",
9597
"react-native-builder-bob": "^0.18.0",
9698
"react-native-create-thumbnail": "^2.0.0",
9799
"react-native-document-picker": "^9.3.0",
@@ -127,6 +129,8 @@
127129
"react": ">=17.0.2",
128130
"react-native": ">=0.65.0",
129131
"react-native-audio-recorder-player": ">=3.6.0",
132+
"react-native-nitro-modules": "*",
133+
"react-native-nitro-sound": ">=0.2.0",
130134
"react-native-create-thumbnail": ">=1.5.1",
131135
"react-native-document-picker": ">=8.0.0",
132136
"react-native-file-access": ">=2.4.3",
@@ -202,6 +206,15 @@
202206
},
203207
"react-native-video": {
204208
"optional": true
209+
},
210+
"react-native-audio-recorder-player": {
211+
"optional": true
212+
},
213+
"react-native-nitro-modules": {
214+
"optional": true
215+
},
216+
"react-native-nitro-sound": {
217+
"optional": true
205218
}
206219
},
207220
"react-native-builder-bob": {

packages/uikit-react-native/src/components/ChannelInput/VoiceMessageInput.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ const VoiceMessageInput = ({ onClose, onSend }: VoiceMessageInputProps) => {
7575
break;
7676
}
7777
} catch (error) {
78-
Logger.warn('Failed to run voice message action.', state);
78+
Logger.warn('Failed to run voice message action.', state, error);
7979
}
8080
};
8181
const renderActionIcon = () => {

packages/uikit-react-native/src/hooks/useVoiceMessageInput.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,10 @@ const useVoiceMessageInput = ({ onSend, onClose }: Props): VoiceMessageInputResu
161161
setVoiceMessageRecordingPath({ recordFilePath: recorderService.uri, uri: recorderService.uri });
162162
}
163163
} else {
164-
setVoiceMessageRecordingPath(fileService.createRecordFilePath(recorderService.options.extension));
165-
await recorderService.record(getVoiceMessageRecordingPath().recordFilePath);
164+
const recordFilePath = fileService.createRecordFilePath(recorderService.options.extension);
165+
const convertedRecordPath = recorderService.convertRecordPath(recordFilePath.recordFilePath);
166+
setVoiceMessageRecordingPath({ ...recordFilePath, recordFilePath: convertedRecordPath });
167+
await recorderService.record(convertedRecordPath);
166168
}
167169
}
168170
},
@@ -225,6 +227,9 @@ const useVoiceMessageInput = ({ onSend, onClose }: Props): VoiceMessageInputResu
225227
matchesOneOf(status, ['recording', 'recording_completed', 'playing', 'playing_paused']) &&
226228
recordingPath.current
227229
) {
230+
if (status === 'recording') {
231+
await recorderService.stop();
232+
}
228233
const voiceFile = getVoiceMessageFileObject(recordingPath.current.uri, recorderService.options.extension);
229234
onSend(voiceFile, Math.floor(recordingTime.currentTime));
230235
await clear();

packages/uikit-react-native/src/platform/createFileService.native.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ const createNativeFileService = ({
242242
return Platform.select({
243243
ios: {
244244
uri: path,
245-
recordFilePath: filename,
245+
recordFilePath: path,
246246
},
247247
android: {
248248
uri: path.startsWith('file://') ? path : 'file://' + path,

0 commit comments

Comments
 (0)