@ethora/chat-component-rn 26.5.4 → 26.5.5
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/CHANGELOG.md +22 -0
- package/README.md +25 -4
- package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js +1 -7
- package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js +1 -38
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +20 -28
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageEmoji.js +9 -6
- package/lib/commonjs/components/RoomComponents/styled/LastMessageEmoji.js.map +1 -1
- package/lib/commonjs/components/UsersList/Checkbox.js +68 -0
- package/lib/commonjs/components/UsersList/Checkbox.js.map +1 -0
- package/lib/commonjs/components/UsersList/StyledComponents.js +1 -7
- package/lib/commonjs/components/UsersList/StyledComponents.js.map +1 -1
- package/lib/commonjs/components/UsersList/UsersList.js +3 -1
- package/lib/commonjs/components/UsersList/UsersList.js.map +1 -1
- package/lib/module/components/ContextMenu/ContextMenuComponents.js +0 -6
- package/lib/module/components/ContextMenu/ContextMenuComponents.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageInteractions.js +3 -40
- package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +21 -29
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageEmoji.js +9 -6
- package/lib/module/components/RoomComponents/styled/LastMessageEmoji.js.map +1 -1
- package/lib/module/components/UsersList/Checkbox.js +63 -0
- package/lib/module/components/UsersList/Checkbox.js.map +1 -0
- package/lib/module/components/UsersList/StyledComponents.js +0 -6
- package/lib/module/components/UsersList/StyledComponents.js.map +1 -1
- package/lib/module/components/UsersList/UsersList.js +2 -1
- package/lib/module/components/UsersList/UsersList.js.map +1 -1
- package/lib/typescript/components/ContextMenu/ContextMenuComponents.d.ts +0 -1
- package/lib/typescript/components/ContextMenu/ContextMenuComponents.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageEmoji.d.ts +8 -0
- package/lib/typescript/components/RoomComponents/styled/LastMessageEmoji.d.ts.map +1 -1
- package/lib/typescript/components/UsersList/Checkbox.d.ts +16 -0
- package/lib/typescript/components/UsersList/Checkbox.d.ts.map +1 -0
- package/lib/typescript/components/UsersList/StyledComponents.d.ts +0 -1
- package/lib/typescript/components/UsersList/StyledComponents.d.ts.map +1 -1
- package/metro.js +17 -57
- package/package.json +1 -1
- package/src/components/ContextMenu/ContextMenuComponents.tsx +0 -7
- package/src/components/MessageBubble/MessageInteractions.tsx +2 -105
- package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +20 -41
- package/src/components/RoomComponents/styled/LastMessageEmoji.tsx +9 -7
- package/src/components/UsersList/Checkbox.tsx +68 -0
- package/src/components/UsersList/StyledComponents.ts +0 -8
- package/src/components/UsersList/UsersList.tsx +1 -1
- package/lib/commonjs/components/InputComponents/AudioInput.js +0 -23
- package/lib/commonjs/components/InputComponents/AudioInput.js.map +0 -1
- package/lib/commonjs/components/InputComponents/AudioRecorder.js +0 -101
- package/lib/commonjs/components/InputComponents/AudioRecorder.js.map +0 -1
- package/lib/commonjs/components/InputComponents/MediaInput.js +0 -98
- package/lib/commonjs/components/InputComponents/MediaInput.js.map +0 -1
- package/lib/commonjs/components/InputComponents/RecordingIndicator.js +0 -70
- package/lib/commonjs/components/InputComponents/RecordingIndicator.js.map +0 -1
- package/lib/commonjs/components/Modals/ModalSelectMedia/ModalSelectMedia.js +0 -207
- package/lib/commonjs/components/Modals/ModalSelectMedia/ModalSelectMedia.js.map +0 -1
- package/lib/commonjs/components/OperationalModal/OperationalModal.js +0 -83
- package/lib/commonjs/components/OperationalModal/OperationalModal.js.map +0 -1
- package/lib/module/components/InputComponents/AudioInput.js +0 -18
- package/lib/module/components/InputComponents/AudioInput.js.map +0 -1
- package/lib/module/components/InputComponents/AudioRecorder.js +0 -95
- package/lib/module/components/InputComponents/AudioRecorder.js.map +0 -1
- package/lib/module/components/InputComponents/MediaInput.js +0 -92
- package/lib/module/components/InputComponents/MediaInput.js.map +0 -1
- package/lib/module/components/InputComponents/RecordingIndicator.js +0 -65
- package/lib/module/components/InputComponents/RecordingIndicator.js.map +0 -1
- package/lib/module/components/Modals/ModalSelectMedia/ModalSelectMedia.js +0 -200
- package/lib/module/components/Modals/ModalSelectMedia/ModalSelectMedia.js.map +0 -1
- package/lib/module/components/OperationalModal/OperationalModal.js +0 -77
- package/lib/module/components/OperationalModal/OperationalModal.js.map +0 -1
- package/lib/typescript/components/InputComponents/AudioInput.d.ts +0 -9
- package/lib/typescript/components/InputComponents/AudioInput.d.ts.map +0 -1
- package/lib/typescript/components/InputComponents/AudioRecorder.d.ts +0 -9
- package/lib/typescript/components/InputComponents/AudioRecorder.d.ts.map +0 -1
- package/lib/typescript/components/InputComponents/MediaInput.d.ts +0 -16
- package/lib/typescript/components/InputComponents/MediaInput.d.ts.map +0 -1
- package/lib/typescript/components/InputComponents/RecordingIndicator.d.ts +0 -4
- package/lib/typescript/components/InputComponents/RecordingIndicator.d.ts.map +0 -1
- package/lib/typescript/components/Modals/ModalSelectMedia/ModalSelectMedia.d.ts +0 -9
- package/lib/typescript/components/Modals/ModalSelectMedia/ModalSelectMedia.d.ts.map +0 -1
- package/lib/typescript/components/OperationalModal/OperationalModal.d.ts +0 -9
- package/lib/typescript/components/OperationalModal/OperationalModal.d.ts.map +0 -1
- package/src/components/InputComponents/AudioInput.tsx +0 -24
- package/src/components/InputComponents/AudioRecorder.tsx +0 -100
- package/src/components/InputComponents/MediaInput.tsx +0 -113
- package/src/components/InputComponents/RecordingIndicator.tsx +0 -77
- package/src/components/Modals/ModalSelectMedia/ModalSelectMedia.tsx +0 -283
- package/src/components/OperationalModal/OperationalModal.tsx +0 -78
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import React, { useEffect, useRef } from 'react';
|
|
4
|
-
import { View, StyleSheet, Animated } from 'react-native';
|
|
5
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
-
const RecordingIndicator = () => {
|
|
7
|
-
const scaleAnim = useRef(new Animated.Value(1)).current; // For scaling the circle
|
|
8
|
-
const opacityAnim = useRef(new Animated.Value(1)).current; // For pulsating effect
|
|
9
|
-
|
|
10
|
-
useEffect(() => {
|
|
11
|
-
Animated.loop(Animated.sequence([Animated.parallel([Animated.timing(scaleAnim, {
|
|
12
|
-
toValue: 1.3,
|
|
13
|
-
duration: 750,
|
|
14
|
-
useNativeDriver: true
|
|
15
|
-
}), Animated.timing(opacityAnim, {
|
|
16
|
-
toValue: 0.6,
|
|
17
|
-
duration: 750,
|
|
18
|
-
useNativeDriver: true
|
|
19
|
-
})]), Animated.parallel([Animated.timing(scaleAnim, {
|
|
20
|
-
toValue: 1,
|
|
21
|
-
duration: 750,
|
|
22
|
-
useNativeDriver: true
|
|
23
|
-
}), Animated.timing(opacityAnim, {
|
|
24
|
-
toValue: 1,
|
|
25
|
-
duration: 750,
|
|
26
|
-
useNativeDriver: true
|
|
27
|
-
})])])).start();
|
|
28
|
-
}, [scaleAnim, opacityAnim]);
|
|
29
|
-
return /*#__PURE__*/_jsxs(View, {
|
|
30
|
-
style: styles.wrapper,
|
|
31
|
-
children: [/*#__PURE__*/_jsx(Animated.View, {
|
|
32
|
-
style: [styles.outerCircle, {
|
|
33
|
-
transform: [{
|
|
34
|
-
scale: scaleAnim
|
|
35
|
-
}],
|
|
36
|
-
opacity: opacityAnim
|
|
37
|
-
}]
|
|
38
|
-
}), /*#__PURE__*/_jsx(View, {
|
|
39
|
-
style: styles.innerCircle
|
|
40
|
-
})]
|
|
41
|
-
});
|
|
42
|
-
};
|
|
43
|
-
const styles = StyleSheet.create({
|
|
44
|
-
wrapper: {
|
|
45
|
-
justifyContent: 'center',
|
|
46
|
-
alignItems: 'center',
|
|
47
|
-
marginRight: 10
|
|
48
|
-
},
|
|
49
|
-
outerCircle: {
|
|
50
|
-
width: 18,
|
|
51
|
-
height: 18,
|
|
52
|
-
borderRadius: 9,
|
|
53
|
-
backgroundColor: 'rgba(255, 0, 0, 0.6)',
|
|
54
|
-
position: 'absolute'
|
|
55
|
-
},
|
|
56
|
-
innerCircle: {
|
|
57
|
-
width: 16,
|
|
58
|
-
height: 16,
|
|
59
|
-
borderRadius: 8,
|
|
60
|
-
backgroundColor: 'red',
|
|
61
|
-
position: 'relative'
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
export default RecordingIndicator;
|
|
65
|
-
//# sourceMappingURL=RecordingIndicator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","View","StyleSheet","Animated","jsx","_jsx","jsxs","_jsxs","RecordingIndicator","scaleAnim","Value","current","opacityAnim","loop","sequence","parallel","timing","toValue","duration","useNativeDriver","start","style","styles","wrapper","children","outerCircle","transform","scale","opacity","innerCircle","create","justifyContent","alignItems","marginRight","width","height","borderRadius","backgroundColor","position"],"sourceRoot":"../../../../src","sources":["components/InputComponents/RecordingIndicator.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAGC,SAAS,EAAEC,MAAM,QAAO,OAAO;AAC9C,SAAQC,IAAI,EAAEC,UAAU,EAAEC,QAAQ,QAAO,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAExD,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;EAC/B,MAAMC,SAAS,GAAGT,MAAM,CAAC,IAAIG,QAAQ,CAACO,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC;EACzD,MAAMC,WAAW,GAAGZ,MAAM,CAAC,IAAIG,QAAQ,CAACO,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC;;EAE3DZ,SAAS,CAAC,MAAM;IACdI,QAAQ,CAACU,IAAI,CACXV,QAAQ,CAACW,QAAQ,CAAC,CAChBX,QAAQ,CAACY,QAAQ,CAAC,CAChBZ,QAAQ,CAACa,MAAM,CAACP,SAAS,EAAE;MACzBQ,OAAO,EAAE,GAAG;MACZC,QAAQ,EAAE,GAAG;MACbC,eAAe,EAAE;IACnB,CAAC,CAAC,EACFhB,QAAQ,CAACa,MAAM,CAACJ,WAAW,EAAE;MAC3BK,OAAO,EAAE,GAAG;MACZC,QAAQ,EAAE,GAAG;MACbC,eAAe,EAAE;IACnB,CAAC,CAAC,CACH,CAAC,EACFhB,QAAQ,CAACY,QAAQ,CAAC,CAChBZ,QAAQ,CAACa,MAAM,CAACP,SAAS,EAAE;MACzBQ,OAAO,EAAE,CAAC;MACVC,QAAQ,EAAE,GAAG;MACbC,eAAe,EAAE;IACnB,CAAC,CAAC,EACFhB,QAAQ,CAACa,MAAM,CAACJ,WAAW,EAAE;MAC3BK,OAAO,EAAE,CAAC;MACVC,QAAQ,EAAE,GAAG;MACbC,eAAe,EAAE;IACnB,CAAC,CAAC,CACH,CAAC,CACH,CACH,CAAC,CAACC,KAAK,CAAC,CAAC;EACX,CAAC,EAAE,CAACX,SAAS,EAAEG,WAAW,CAAC,CAAC;EAE5B,oBACEL,KAAA,CAACN,IAAI;IAACoB,KAAK,EAAEC,MAAM,CAACC,OAAQ;IAAAC,QAAA,gBAC1BnB,IAAA,CAACF,QAAQ,CAACF,IAAI;MACZoB,KAAK,EAAE,CACLC,MAAM,CAACG,WAAW,EAClB;QACEC,SAAS,EAAE,CAAC;UAACC,KAAK,EAAElB;QAAS,CAAC,CAAC;QAC/BmB,OAAO,EAAEhB;MACX,CAAC;IACD,CACH,CAAC,eACFP,IAAA,CAACJ,IAAI;MAACoB,KAAK,EAAEC,MAAM,CAACO;IAAY,CAAE,CAAC;EAAA,CAC/B,CAAC;AAEX,CAAC;AAED,MAAMP,MAAM,GAAGpB,UAAU,CAAC4B,MAAM,CAAC;EAC/BP,OAAO,EAAE;IACPQ,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,WAAW,EAAE;EACf,CAAC;EACDR,WAAW,EAAE;IACXS,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,YAAY,EAAE,CAAC;IACfC,eAAe,EAAE,sBAAsB;IACvCC,QAAQ,EAAE;EACZ,CAAC;EACDT,WAAW,EAAE;IACXK,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,YAAY,EAAE,CAAC;IACfC,eAAe,EAAE,KAAK;IACtBC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAEF,eAAe9B,kBAAkB","ignoreList":[]}
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import React, { useMemo } from 'react';
|
|
4
|
-
import { Alert, Linking, Platform } from 'react-native';
|
|
5
|
-
import Button from '../../styled/Button';
|
|
6
|
-
import DropdownMenu from '../../DropdownMenu/DropdownMenu';
|
|
7
|
-
import DocumentPicker from 'react-native-document-picker';
|
|
8
|
-
import ImagePicker from 'react-native-image-crop-picker';
|
|
9
|
-
import { check, request, PERMISSIONS, RESULTS } from 'react-native-permissions';
|
|
10
|
-
import { AttachIcon, CameraIcon, DocumentIcon, MediaIcon } from '../../../assets/icons';
|
|
11
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
-
export const ModalSelectMedia = ({
|
|
13
|
-
onFileSelect,
|
|
14
|
-
config
|
|
15
|
-
}) => {
|
|
16
|
-
const checkPermission = async permission => {
|
|
17
|
-
const status = await check(permission);
|
|
18
|
-
if (status === RESULTS.GRANTED) {
|
|
19
|
-
return status;
|
|
20
|
-
} else if (status === RESULTS.DENIED) {
|
|
21
|
-
const requestStatus = await request(permission);
|
|
22
|
-
if (requestStatus === RESULTS.GRANTED) {
|
|
23
|
-
return requestStatus;
|
|
24
|
-
} else if (requestStatus === RESULTS.DENIED) {
|
|
25
|
-
return requestStatus;
|
|
26
|
-
}
|
|
27
|
-
} else if (status === RESULTS.UNAVAILABLE) {
|
|
28
|
-
return status;
|
|
29
|
-
} else {
|
|
30
|
-
return status;
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
const handleCameraSelection = async () => {
|
|
34
|
-
const permission = Platform.OS === 'ios' ? PERMISSIONS.IOS.CAMERA : PERMISSIONS.ANDROID.CAMERA;
|
|
35
|
-
const permissionStatus = await checkPermission(permission);
|
|
36
|
-
if (permissionStatus !== RESULTS.GRANTED) {
|
|
37
|
-
Alert.alert('Permission required', 'Camera permission is needed to take photos.', [{
|
|
38
|
-
text: 'Cancel',
|
|
39
|
-
onPress: () => console.log('Camera permission cancelled'),
|
|
40
|
-
style: 'cancel'
|
|
41
|
-
}, {
|
|
42
|
-
text: 'Open Settings',
|
|
43
|
-
onPress: () => Linking.openSettings()
|
|
44
|
-
}]);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
try {
|
|
48
|
-
const image = await ImagePicker.openCamera({
|
|
49
|
-
width: 300,
|
|
50
|
-
height: 400,
|
|
51
|
-
cropping: true
|
|
52
|
-
});
|
|
53
|
-
const originalName = image.path.split('/').pop();
|
|
54
|
-
const file = {
|
|
55
|
-
uri: image.path,
|
|
56
|
-
type: image.mime,
|
|
57
|
-
name: originalName || `camera_${Date.now()}.jpg`
|
|
58
|
-
};
|
|
59
|
-
onFileSelect([file]);
|
|
60
|
-
} catch (error) {
|
|
61
|
-
const errorMessage = error?.message || String(error);
|
|
62
|
-
const isSimulatorError = errorMessage.includes('simulator') || errorMessage.includes('Cannot run camera') || errorMessage.includes('Camera not available');
|
|
63
|
-
if (isSimulatorError) {
|
|
64
|
-
Alert.alert('Camera unavailable', 'Camera is not available on iOS Simulator. Please test on a real device.', [{
|
|
65
|
-
text: 'OK'
|
|
66
|
-
}]);
|
|
67
|
-
} else if (error?.code !== 'E_PICKER_CANCELLED') {
|
|
68
|
-
console.error('Camera error:', error);
|
|
69
|
-
Alert.alert('Camera error', errorMessage || 'Failed to open camera. Please try again.', [{
|
|
70
|
-
text: 'OK'
|
|
71
|
-
}]);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
const handleGallerySelection = async () => {
|
|
76
|
-
try {
|
|
77
|
-
let permission;
|
|
78
|
-
if (Platform.OS === 'ios') {
|
|
79
|
-
permission = PERMISSIONS.IOS.PHOTO_LIBRARY;
|
|
80
|
-
} else if (Number(Platform.Version) >= 33) {
|
|
81
|
-
permission = PERMISSIONS.ANDROID.READ_MEDIA_IMAGES;
|
|
82
|
-
} else {
|
|
83
|
-
permission = PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE;
|
|
84
|
-
}
|
|
85
|
-
console.log('handleGallerySelection - checking permission:', permission);
|
|
86
|
-
const permissionStatus = await checkPermission(permission);
|
|
87
|
-
console.log('handleGallerySelection - permission status:', permissionStatus);
|
|
88
|
-
if (permissionStatus !== RESULTS.GRANTED) {
|
|
89
|
-
console.log('handleGallerySelection - permission not granted, showing alert');
|
|
90
|
-
Alert.alert('Permission required', 'Gallery permission is needed to select photos.', [{
|
|
91
|
-
text: 'Cancel',
|
|
92
|
-
onPress: () => console.log('Gallery permission cancelled'),
|
|
93
|
-
style: 'cancel'
|
|
94
|
-
}, {
|
|
95
|
-
text: 'Open Settings',
|
|
96
|
-
onPress: () => Linking.openSettings()
|
|
97
|
-
}]);
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
await new Promise(resolve => setTimeout(resolve, 300));
|
|
101
|
-
const image = await ImagePicker.openPicker({
|
|
102
|
-
multiple: false,
|
|
103
|
-
mediaType: 'any'
|
|
104
|
-
});
|
|
105
|
-
console.log('handleGallerySelection - image selected:', image);
|
|
106
|
-
const originalName = image.path.split('/').pop();
|
|
107
|
-
const file = {
|
|
108
|
-
uri: image.path,
|
|
109
|
-
type: image.mime,
|
|
110
|
-
name: originalName || `gallery_${Date.now()}${image.mime.includes('video') ? '.mp4' : '.jpg'}`
|
|
111
|
-
};
|
|
112
|
-
onFileSelect([file]);
|
|
113
|
-
} catch (error) {
|
|
114
|
-
if (error?.code === 'E_PICKER_CANCELLED') {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
console.error('Gallery error:', error);
|
|
118
|
-
console.error('Gallery error code:', error?.code);
|
|
119
|
-
console.error('Gallery error message:', error?.message);
|
|
120
|
-
const errorMessage = error?.message || String(error);
|
|
121
|
-
Alert.alert('Gallery error', errorMessage || 'Failed to open gallery. Please try again.', [{
|
|
122
|
-
text: 'OK'
|
|
123
|
-
}]);
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
const handleFileSelection = async () => {
|
|
127
|
-
try {
|
|
128
|
-
const result = await DocumentPicker.pick({
|
|
129
|
-
type: [DocumentPicker.types.allFiles],
|
|
130
|
-
allowMultiSelection: false
|
|
131
|
-
});
|
|
132
|
-
const files = result.map(file => {
|
|
133
|
-
const originalName = file.name;
|
|
134
|
-
return {
|
|
135
|
-
uri: file.uri,
|
|
136
|
-
type: file.type || 'unknown',
|
|
137
|
-
name: originalName || `file_${Date.now()}`
|
|
138
|
-
};
|
|
139
|
-
});
|
|
140
|
-
onFileSelect(files);
|
|
141
|
-
} catch (err) {
|
|
142
|
-
if (DocumentPicker.isCancel(err)) {
|
|
143
|
-
console.log('User cancelled file picker');
|
|
144
|
-
} else {
|
|
145
|
-
console.error('DocumentPicker Error:', err);
|
|
146
|
-
const errorMessage = err?.message || String(err);
|
|
147
|
-
Alert.alert('File selection error', errorMessage || 'Failed to select file. Please try again.', [{
|
|
148
|
-
text: 'OK'
|
|
149
|
-
}]);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
const menuOptions = useMemo(() => [{
|
|
154
|
-
label: 'Camera',
|
|
155
|
-
icon: /*#__PURE__*/_jsx(CameraIcon, {}),
|
|
156
|
-
onClick: async () => {
|
|
157
|
-
setTimeout(async () => {
|
|
158
|
-
await handleCameraSelection();
|
|
159
|
-
}, 500);
|
|
160
|
-
}
|
|
161
|
-
}, {
|
|
162
|
-
label: 'Media File',
|
|
163
|
-
icon: /*#__PURE__*/_jsx(MediaIcon, {}),
|
|
164
|
-
onClick: async () => {
|
|
165
|
-
await handleGallerySelection();
|
|
166
|
-
}
|
|
167
|
-
}, {
|
|
168
|
-
label: 'Document',
|
|
169
|
-
icon: /*#__PURE__*/_jsx(DocumentIcon, {}),
|
|
170
|
-
onClick: async () => {
|
|
171
|
-
setTimeout(async () => {
|
|
172
|
-
await handleFileSelection();
|
|
173
|
-
}, 500);
|
|
174
|
-
}
|
|
175
|
-
}], []);
|
|
176
|
-
return /*#__PURE__*/_jsx(DropdownMenu, {
|
|
177
|
-
position: "leftBottom",
|
|
178
|
-
options: menuOptions,
|
|
179
|
-
openButton: onPress => {
|
|
180
|
-
return /*#__PURE__*/_jsx(Button, {
|
|
181
|
-
style: {
|
|
182
|
-
padding: 0,
|
|
183
|
-
height: 40,
|
|
184
|
-
width: 40,
|
|
185
|
-
justifyContent: 'center',
|
|
186
|
-
alignItems: 'center',
|
|
187
|
-
backgroundColor: 'transparent',
|
|
188
|
-
margin: 0
|
|
189
|
-
},
|
|
190
|
-
EndIcon: /*#__PURE__*/_jsx(AttachIcon, {
|
|
191
|
-
color: config?.colors?.primary || '#0052CD'
|
|
192
|
-
}),
|
|
193
|
-
onPress: () => {
|
|
194
|
-
onPress();
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
};
|
|
200
|
-
//# sourceMappingURL=ModalSelectMedia.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","useMemo","Alert","Linking","Platform","Button","DropdownMenu","DocumentPicker","ImagePicker","check","request","PERMISSIONS","RESULTS","AttachIcon","CameraIcon","DocumentIcon","MediaIcon","jsx","_jsx","ModalSelectMedia","onFileSelect","config","checkPermission","permission","status","GRANTED","DENIED","requestStatus","UNAVAILABLE","handleCameraSelection","OS","IOS","CAMERA","ANDROID","permissionStatus","alert","text","onPress","console","log","style","openSettings","image","openCamera","width","height","cropping","originalName","path","split","pop","file","uri","type","mime","name","Date","now","error","errorMessage","message","String","isSimulatorError","includes","code","handleGallerySelection","PHOTO_LIBRARY","Number","Version","READ_MEDIA_IMAGES","READ_EXTERNAL_STORAGE","Promise","resolve","setTimeout","openPicker","multiple","mediaType","handleFileSelection","result","pick","types","allFiles","allowMultiSelection","files","map","err","isCancel","menuOptions","label","icon","onClick","position","options","openButton","padding","justifyContent","alignItems","backgroundColor","margin","EndIcon","color","colors","primary"],"sourceRoot":"../../../../../src","sources":["components/Modals/ModalSelectMedia/ModalSelectMedia.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import React from 'react';
|
|
4
|
-
// import QRCode from 'react-qr-code';
|
|
5
|
-
import { CloseButton } from '../Modals/styledModalComponents';
|
|
6
|
-
import { Overlay, StyledModal } from '../styled/MediaModal';
|
|
7
|
-
import { StyledInput } from '../styled/StyledInputComponents/StyledInputComponents';
|
|
8
|
-
import Button from '../styled/Button';
|
|
9
|
-
import { Text, View } from 'react-native';
|
|
10
|
-
import { QRCODE_URL } from '../../helpers/constants/PLATFORM_CONSTANTS';
|
|
11
|
-
import Clipboard from '@react-native-clipboard/clipboard';
|
|
12
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
-
const OperationalModal = ({
|
|
14
|
-
isVisible,
|
|
15
|
-
chatJid,
|
|
16
|
-
setVisible
|
|
17
|
-
}) => {
|
|
18
|
-
const handleCopyClick = () => {
|
|
19
|
-
Clipboard.setString(`${QRCODE_URL}${chatJid}`);
|
|
20
|
-
};
|
|
21
|
-
return isVisible && /*#__PURE__*/_jsx(Overlay, {
|
|
22
|
-
style: {
|
|
23
|
-
position: 'absolute'
|
|
24
|
-
},
|
|
25
|
-
children: /*#__PURE__*/_jsxs(StyledModal, {
|
|
26
|
-
style: {
|
|
27
|
-
borderRadius: 16,
|
|
28
|
-
width: 'auto',
|
|
29
|
-
height: 'auto',
|
|
30
|
-
paddingHorizontal: 64,
|
|
31
|
-
paddingVertical: 32,
|
|
32
|
-
minWidth: 480
|
|
33
|
-
},
|
|
34
|
-
children: [/*#__PURE__*/_jsx(CloseButton, {
|
|
35
|
-
onPress: () => setVisible(false),
|
|
36
|
-
children: /*#__PURE__*/_jsx(Text, {
|
|
37
|
-
style: {
|
|
38
|
-
fontSize: 24
|
|
39
|
-
},
|
|
40
|
-
children: "\xD7"
|
|
41
|
-
})
|
|
42
|
-
}), /*#__PURE__*/_jsxs(View, {
|
|
43
|
-
style: {
|
|
44
|
-
display: 'flex',
|
|
45
|
-
flexDirection: 'column',
|
|
46
|
-
gap: 16,
|
|
47
|
-
alignItems: 'center'
|
|
48
|
-
},
|
|
49
|
-
children: [/*#__PURE__*/_jsx(View, {
|
|
50
|
-
style: {
|
|
51
|
-
width: '70%',
|
|
52
|
-
position: 'relative'
|
|
53
|
-
}
|
|
54
|
-
}), /*#__PURE__*/_jsxs(View, {
|
|
55
|
-
style: {
|
|
56
|
-
display: 'flex',
|
|
57
|
-
gap: 8,
|
|
58
|
-
alignItems: 'center',
|
|
59
|
-
minWidth: 400
|
|
60
|
-
},
|
|
61
|
-
children: [/*#__PURE__*/_jsx(StyledInput, {
|
|
62
|
-
value: chatJid,
|
|
63
|
-
editable: true,
|
|
64
|
-
style: {
|
|
65
|
-
width: '80%'
|
|
66
|
-
}
|
|
67
|
-
}), /*#__PURE__*/_jsx(Button, {
|
|
68
|
-
text: "Copy",
|
|
69
|
-
onPress: handleCopyClick
|
|
70
|
-
})]
|
|
71
|
-
})]
|
|
72
|
-
})]
|
|
73
|
-
})
|
|
74
|
-
});
|
|
75
|
-
};
|
|
76
|
-
export default OperationalModal;
|
|
77
|
-
//# sourceMappingURL=OperationalModal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","CloseButton","Overlay","StyledModal","StyledInput","Button","Text","View","QRCODE_URL","Clipboard","jsx","_jsx","jsxs","_jsxs","OperationalModal","isVisible","chatJid","setVisible","handleCopyClick","setString","style","position","children","borderRadius","width","height","paddingHorizontal","paddingVertical","minWidth","onPress","fontSize","display","flexDirection","gap","alignItems","value","editable","text"],"sourceRoot":"../../../../src","sources":["components/OperationalModal/OperationalModal.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAoB,OAAO;AACvC;AACA,SAASC,WAAW,QAAQ,iCAAiC;AAC7D,SAASC,OAAO,EAAEC,WAAW,QAAQ,sBAAsB;AAC3D,SAASC,WAAW,QAAQ,uDAAuD;AACnF,OAAOC,MAAM,MAAM,kBAAkB;AACrC,SAASC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACzC,SAASC,UAAU,QAAQ,4CAA4C;AACvE,OAAOC,SAAS,MAAM,mCAAmC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQ1D,MAAMC,gBAAiD,GAAGA,CAAC;EACzDC,SAAS;EACTC,OAAO;EACPC;AACF,CAAC,KAAK;EACJ,MAAMC,eAAe,GAAGA,CAAA,KAAM;IAC5BT,SAAS,CAACU,SAAS,CAAC,GAAGX,UAAU,GAAGQ,OAAO,EAAE,CAAC;EAChD,CAAC;EAED,OACED,SAAS,iBACPJ,IAAA,CAACT,OAAO;IACNkB,KAAK,EAAE;MACLC,QAAQ,EAAE;IACZ,CAAE;IAAAC,QAAA,eAEFT,KAAA,CAACV,WAAW;MACViB,KAAK,EAAE;QACLG,YAAY,EAAE,EAAE;QAChBC,KAAK,EAAE,MAAM;QACbC,MAAM,EAAE,MAAM;QACdC,iBAAiB,EAAE,EAAE;QACrBC,eAAe,EAAE,EAAE;QACnBC,QAAQ,EAAE;MACZ,CAAE;MAAAN,QAAA,gBAEFX,IAAA,CAACV,WAAW;QAAC4B,OAAO,EAAEA,CAAA,KAAMZ,UAAU,CAAC,KAAK,CAAE;QAAAK,QAAA,eAC5CX,IAAA,CAACL,IAAI;UAACc,KAAK,EAAE;YAAEU,QAAQ,EAAE;UAAG,CAAE;UAAAR,QAAA,EAAC;QAAO,CAAM;MAAC,CAClC,CAAC,eACdT,KAAA,CAACN,IAAI;QACHa,KAAK,EAAE;UACLW,OAAO,EAAE,MAAM;UACfC,aAAa,EAAE,QAAQ;UACvBC,GAAG,EAAE,EAAE;UACPC,UAAU,EAAE;QACd,CAAE;QAAAZ,QAAA,gBAEFX,IAAA,CAACJ,IAAI;UAACa,KAAK,EAAE;YAAEI,KAAK,EAAE,KAAK;YAAEH,QAAQ,EAAE;UAAW;QAAE,CAAE,CAAC,eAEvDR,KAAA,CAACN,IAAI;UACHa,KAAK,EAAE;YACLW,OAAO,EAAE,MAAM;YACfE,GAAG,EAAE,CAAC;YACNC,UAAU,EAAE,QAAQ;YACpBN,QAAQ,EAAE;UACZ,CAAE;UAAAN,QAAA,gBAEFX,IAAA,CAACP,WAAW;YACV+B,KAAK,EAAEnB,OAAQ;YACfoB,QAAQ,EAAE,IAAK;YACfhB,KAAK,EAAE;cAAEI,KAAK,EAAE;YAAM;UAAE,CACzB,CAAC,eACFb,IAAA,CAACN,MAAM;YAACgC,IAAI,EAAC,MAAM;YAACR,OAAO,EAAEX;UAAgB,CAAE,CAAC;QAAA,CAC5C,CAAC;MAAA,CACH,CAAC;IAAA,CACI;EAAC,CACP,CACV;AAEL,CAAC;AAED,eAAeJ,gBAAgB","ignoreList":[]}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface AudioInputProps {
|
|
3
|
-
isRecording: boolean;
|
|
4
|
-
setIsRecording: (value: boolean) => void;
|
|
5
|
-
handleSendClick: (audioUrl?: string) => void;
|
|
6
|
-
}
|
|
7
|
-
declare const AudioInput: React.FC<AudioInputProps>;
|
|
8
|
-
export default AudioInput;
|
|
9
|
-
//# sourceMappingURL=AudioInput.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AudioInput.d.ts","sourceRoot":"","sources":["../../../../src/components/InputComponents/AudioInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,eAAe;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,eAAe,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAYzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface AudioRecorderProps {
|
|
3
|
-
setIsRecording: (state: boolean) => void;
|
|
4
|
-
isRecording: boolean;
|
|
5
|
-
handleSendClick: (audioBlob?: any) => void;
|
|
6
|
-
}
|
|
7
|
-
declare const AudioRecorder: React.FC<AudioRecorderProps>;
|
|
8
|
-
export default AudioRecorder;
|
|
9
|
-
//# sourceMappingURL=AudioRecorder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AudioRecorder.d.ts","sourceRoot":"","sources":["../../../../src/components/InputComponents/AudioRecorder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAYxE,UAAU,kBAAkB;IAC1B,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAC5C;AAED,QAAA,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+E/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { IConfig } from '../../types/types';
|
|
3
|
-
interface FilePreview {
|
|
4
|
-
uri: string;
|
|
5
|
-
name: string;
|
|
6
|
-
type: string;
|
|
7
|
-
}
|
|
8
|
-
interface MediaInputProps {
|
|
9
|
-
filePreviews: FilePreview[];
|
|
10
|
-
setFilePreviews: (update: FilePreview[] | ((prev: FilePreview[]) => FilePreview[])) => void;
|
|
11
|
-
handleSendClick: () => void;
|
|
12
|
-
config?: IConfig;
|
|
13
|
-
}
|
|
14
|
-
declare const MediaInput: React.FC<MediaInputProps>;
|
|
15
|
-
export default MediaInput;
|
|
16
|
-
//# sourceMappingURL=MediaInput.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MediaInput.d.ts","sourceRoot":"","sources":["../../../../src/components/InputComponents/MediaInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAM3C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,eAAe;IACvB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,eAAe,EAAE,CACf,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,CAAC,KAC7D,IAAI,CAAC;IACV,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAuFzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RecordingIndicator.d.ts","sourceRoot":"","sources":["../../../../src/components/InputComponents/RecordingIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAG/C,QAAA,MAAM,kBAAkB,yBAiDvB,CAAC;AAwBF,eAAe,kBAAkB,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
2
|
-
import { MediaFile } from '../../../types/types';
|
|
3
|
-
interface ModalSelectMediaProps {
|
|
4
|
-
onFileSelect: (files: MediaFile[]) => void;
|
|
5
|
-
config?: any;
|
|
6
|
-
}
|
|
7
|
-
export declare const ModalSelectMedia: FC<ModalSelectMediaProps>;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=ModalSelectMedia.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModalSelectMedia.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modals/ModalSelectMedia/ModalSelectMedia.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AAmB3C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,UAAU,qBAAqB;IAC7B,YAAY,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAC3C,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAUD,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAwPtD,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
interface OperationalModalProps {
|
|
3
|
-
isVisible: boolean;
|
|
4
|
-
chatJid: string;
|
|
5
|
-
setVisible: React.Dispatch<React.SetStateAction<boolean>>;
|
|
6
|
-
}
|
|
7
|
-
declare const OperationalModal: React.FC<OperationalModalProps>;
|
|
8
|
-
export default OperationalModal;
|
|
9
|
-
//# sourceMappingURL=OperationalModal.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OperationalModal.d.ts","sourceRoot":"","sources":["../../../../src/components/OperationalModal/OperationalModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAUxC,UAAU,qBAAqB;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;CAC3D;AAED,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CA2DrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import AudioRecorder from '../InputComponents/AudioRecorder';
|
|
3
|
-
|
|
4
|
-
interface AudioInputProps {
|
|
5
|
-
isRecording: boolean;
|
|
6
|
-
setIsRecording: (value: boolean) => void;
|
|
7
|
-
handleSendClick: (audioUrl?: string) => void;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const AudioInput: React.FC<AudioInputProps> = ({
|
|
11
|
-
isRecording,
|
|
12
|
-
setIsRecording,
|
|
13
|
-
handleSendClick,
|
|
14
|
-
}) => {
|
|
15
|
-
return (
|
|
16
|
-
<AudioRecorder
|
|
17
|
-
setIsRecording={setIsRecording}
|
|
18
|
-
isRecording={isRecording}
|
|
19
|
-
handleSendClick={handleSendClick}
|
|
20
|
-
/>
|
|
21
|
-
);
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export default AudioInput;
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import React, { useState, useRef, useCallback, useEffect } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
RecordContainer,
|
|
4
|
-
Timer,
|
|
5
|
-
} from '../styled/StyledInputComponents/StyledInputComponents';
|
|
6
|
-
import { RecordIcon, RemoveIcon, SendIcon } from '../../assets/icons';
|
|
7
|
-
import Button from '../styled/Button';
|
|
8
|
-
import RecordingIndicator from './RecordingIndicator';
|
|
9
|
-
import { Platform, View } from 'react-native';
|
|
10
|
-
import AudioRecorderPlayer from 'react-native-audio-recorder-player';
|
|
11
|
-
import RNFS from 'react-native-fs';
|
|
12
|
-
|
|
13
|
-
interface AudioRecorderProps {
|
|
14
|
-
setIsRecording: (state: boolean) => void;
|
|
15
|
-
isRecording: boolean;
|
|
16
|
-
handleSendClick: (audioBlob?: any) => void;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const AudioRecorder: React.FC<AudioRecorderProps> = ({
|
|
20
|
-
setIsRecording,
|
|
21
|
-
isRecording,
|
|
22
|
-
handleSendClick,
|
|
23
|
-
}) => {
|
|
24
|
-
const audioRecorderPlayer = useRef(new AudioRecorderPlayer()).current;
|
|
25
|
-
const [timer, setTimer] = useState('00:00');
|
|
26
|
-
const [audioPath, setAudioPath] = useState<string | null>(null);
|
|
27
|
-
|
|
28
|
-
useEffect(() => {
|
|
29
|
-
return () => {
|
|
30
|
-
audioRecorderPlayer.stopRecorder();
|
|
31
|
-
audioRecorderPlayer.removeRecordBackListener();
|
|
32
|
-
};
|
|
33
|
-
}, [audioRecorderPlayer]);
|
|
34
|
-
|
|
35
|
-
const startRecording = async () => {
|
|
36
|
-
try {
|
|
37
|
-
const path = Platform.select({
|
|
38
|
-
ios: `${RNFS.DocumentDirectoryPath}/recording.m4a`,
|
|
39
|
-
android: `${RNFS.CachesDirectoryPath}/recording.mp4`,
|
|
40
|
-
});
|
|
41
|
-
const uri = await audioRecorderPlayer.startRecorder(path);
|
|
42
|
-
setAudioPath(uri);
|
|
43
|
-
|
|
44
|
-
audioRecorderPlayer.addRecordBackListener((e: any) => {
|
|
45
|
-
const minutes = Math.floor(e.currentPosition / 60000);
|
|
46
|
-
const seconds = Math.floor((e.currentPosition % 60000) / 1000);
|
|
47
|
-
setTimer(
|
|
48
|
-
`${minutes.toString().padStart(2, '0')}:${seconds
|
|
49
|
-
.toString()
|
|
50
|
-
.padStart(2, '0')}`
|
|
51
|
-
);
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
setIsRecording(true);
|
|
55
|
-
} catch (error) {
|
|
56
|
-
console.error('Error starting recording:', error);
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
const stopRecording = async () => {
|
|
61
|
-
try {
|
|
62
|
-
await audioRecorderPlayer.stopRecorder();
|
|
63
|
-
audioRecorderPlayer.removeRecordBackListener();
|
|
64
|
-
setIsRecording(false);
|
|
65
|
-
} catch (error) {
|
|
66
|
-
console.error('Error stopping recording:', error);
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
const sendAudio = () => {
|
|
71
|
-
if (audioPath) {
|
|
72
|
-
console.log('Audio sent:', audioPath);
|
|
73
|
-
handleSendClick(audioPath);
|
|
74
|
-
resetState();
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
const resetState = () => {
|
|
79
|
-
setAudioPath(null);
|
|
80
|
-
setTimer('00:00');
|
|
81
|
-
setIsRecording(false);
|
|
82
|
-
};
|
|
83
|
-
return isRecording ? (
|
|
84
|
-
<RecordContainer>
|
|
85
|
-
<View style={{ display: 'flex', alignItems: 'center' }}>
|
|
86
|
-
{isRecording && <RecordingIndicator />}
|
|
87
|
-
<Timer>{timer}</Timer>
|
|
88
|
-
</View>
|
|
89
|
-
|
|
90
|
-
<View style={{ display: 'flex', gap: 8 }}>
|
|
91
|
-
<Button onPress={stopRecording} EndIcon={<RemoveIcon />} unstyled />
|
|
92
|
-
<Button onPress={sendAudio} EndIcon={<SendIcon />} unstyled />
|
|
93
|
-
</View>
|
|
94
|
-
</RecordContainer>
|
|
95
|
-
) : (
|
|
96
|
-
<Button onPress={startRecording} EndIcon={<RecordIcon />} />
|
|
97
|
-
);
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
export default AudioRecorder;
|