agora-appbuilder-core 4.0.7 → 4.0.8
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/package.json +1 -1
- package/template/_package-lock.json +82 -0
- package/template/android/app/build.gradle +8 -0
- package/template/android/build.gradle +3 -0
- package/template/bridge/rtc/webNg/RtcEngine.ts +581 -31
- package/template/bridge/rtc/webNg/RtcSurfaceView.tsx +2 -1
- package/template/bridge/rtm/web/index.ts +2 -1
- package/template/customization-api/customize.ts +29 -10
- package/template/index.js +17 -1
- package/template/index.web.js +2 -2
- package/template/package.json +3 -0
- package/template/src/SDKAppWrapper.tsx +44 -2
- package/template/src/app-state/useNoiseSupression.native.tsx +6 -0
- package/template/src/app-state/useNoiseSupression.tsx +17 -0
- package/template/src/auth/AuthProvider.tsx +145 -8
- package/template/src/auth/IDPAuth.electron.tsx +2 -1
- package/template/src/auth/IDPAuth.tsx +8 -2
- package/template/src/auth/openIDPURL.native.tsx +14 -3
- package/template/src/auth/useTokenAuth.tsx +7 -1
- package/template/src/components/Controls.tsx +2 -1
- package/template/src/components/DeviceConfigure.tsx +67 -17
- package/template/src/components/Precall.tsx +21 -0
- package/template/src/components/RTMConfigure.tsx +188 -24
- package/template/src/components/SettingsView.tsx +2 -0
- package/template/src/components/Share.tsx +11 -0
- package/template/src/components/StorageContext.tsx +32 -2
- package/template/src/components/chat-messages/useChatMessages.tsx +65 -5
- package/template/src/components/contexts/WaitingRoomContext.tsx +5 -1
- package/template/src/components/precall/joinCallBtn.tsx +6 -0
- package/template/src/components/precall/usePreCall.tsx +18 -2
- package/template/src/components/room-info/useRoomInfo.tsx +28 -25
- package/template/src/components/useUserPreference.tsx +13 -2
- package/template/src/components/useWakeLock.tsx +18 -4
- package/template/src/components/virtual-background/VBCard.tsx +40 -1
- package/template/src/components/virtual-background/VButils.native.ts +24 -5
- package/template/src/components/virtual-background/VButils.ts +29 -5
- package/template/src/components/virtual-background/VideoPreview.tsx +11 -1
- package/template/src/components/virtual-background/useVB.native.tsx +19 -3
- package/template/src/components/whiteboard/WhiteboardConfigure.tsx +32 -5
- package/template/src/components/whiteboard/WhiteboardToolBox.tsx +38 -8
- package/template/src/components/whiteboard/WhiteboardView.native.tsx +37 -13
- package/template/src/language/useLanguage.tsx +10 -4
- package/template/src/logger/AppBuilderLogger.tsx +215 -0
- package/template/src/logger/constants.ts +18 -0
- package/template/src/logger/transports/agora-transport.native.ts +58 -0
- package/template/src/logger/transports/agora-transport.ts +28 -0
- package/template/src/logger/transports/customer-transport.ts +115 -0
- package/template/src/pages/Create.tsx +27 -2
- package/template/src/pages/Endcall.tsx +6 -1
- package/template/src/pages/Join.tsx +31 -4
- package/template/src/pages/VideoCall.tsx +20 -56
- package/template/src/pages/video-call/DefaultLayouts.ts +11 -3
- package/template/src/pages/video-call/SidePanelHeader.tsx +12 -2
- package/template/src/pages/video-call/VideoCallScreen.tsx +8 -0
- package/template/src/pages/video-call/VideoRenderer.tsx +6 -0
- package/template/src/rtm/RTMEngine.ts +5 -0
- package/template/src/rtm-events-api/Events.ts +70 -16
- package/template/src/subComponents/LayoutIconDropdown.tsx +6 -0
- package/template/src/subComponents/LocalAudioMute.tsx +13 -3
- package/template/src/subComponents/LocalEndCall.tsx +8 -3
- package/template/src/subComponents/LocalVideoMute.tsx +15 -1
- package/template/src/subComponents/SelectDevice.tsx +111 -3
- package/template/src/subComponents/caption/CaptionContainer.tsx +17 -2
- package/template/src/subComponents/caption/useSTTAPI.tsx +62 -20
- package/template/src/subComponents/caption/useTranscriptDownload.native.ts +35 -5
- package/template/src/subComponents/caption/useTranscriptDownload.ts +12 -2
- package/template/src/subComponents/chat/ChatParticipants.tsx +6 -0
- package/template/src/subComponents/recording/useRecording.tsx +102 -15
- package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +33 -2
- package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +18 -2
- package/template/src/subComponents/waiting-rooms/useWaitingRoomAPI.ts +26 -0
- package/template/src/utils/axiomLogger.ts +2 -1
- package/template/src/utils/useCreateRoom.ts +30 -0
- package/template/src/utils/useFindActiveSpeaker.ts +43 -0
- package/template/src/utils/useFocus.tsx +8 -3
- package/template/src/utils/useIsLocalUserSpeaking.ts +19 -3
- package/template/src/utils/useJoinRoom.ts +27 -0
- package/template/src/utils/useLayout.tsx +9 -3
- package/template/src/utils/useSidePanel.tsx +14 -3
|
@@ -41,6 +41,7 @@ import {
|
|
|
41
41
|
settingsPanelSystemDefaultSpeakerText,
|
|
42
42
|
settingsPanelUpdatingText,
|
|
43
43
|
} from '../language/default-labels/precallScreenLabels';
|
|
44
|
+
import {LogSource, logger} from '../logger/AppBuilderLogger';
|
|
44
45
|
// import {dropdown} from '../../theme.json';
|
|
45
46
|
|
|
46
47
|
/*
|
|
@@ -72,9 +73,19 @@ const useSelectDevice = (): [boolean, string] => {
|
|
|
72
73
|
$config.EVENT_MODE &&
|
|
73
74
|
rtcProps.role === ClientRoleType.ClientRoleAudience
|
|
74
75
|
) {
|
|
76
|
+
logger.log(
|
|
77
|
+
LogSource.Internals,
|
|
78
|
+
'DEVICE_CONFIGURE',
|
|
79
|
+
'User is AUDIENCE and in Live mode - device picker is disabled',
|
|
80
|
+
);
|
|
75
81
|
setPickerDisabled(true);
|
|
76
82
|
setBtnTheme('rgba(16, 16, 16, 0.3)');
|
|
77
83
|
} else {
|
|
84
|
+
logger.log(
|
|
85
|
+
LogSource.Internals,
|
|
86
|
+
'DEVICE_CONFIGURE',
|
|
87
|
+
'User is HOST - device picker is enabled',
|
|
88
|
+
);
|
|
78
89
|
setPickerDisabled(false);
|
|
79
90
|
setBtnTheme(primaryColor);
|
|
80
91
|
}
|
|
@@ -161,11 +172,30 @@ const SelectVideoDevice = (props: SelectVideoDeviceProps) => {
|
|
|
161
172
|
onSelect={({label, value}) => {
|
|
162
173
|
setIsFocussed(true);
|
|
163
174
|
try {
|
|
175
|
+
logger.log(
|
|
176
|
+
LogSource.Internals,
|
|
177
|
+
'DEVICE_CONFIGURE',
|
|
178
|
+
`Trying to set camera - ${label} - ${value}`,
|
|
179
|
+
);
|
|
164
180
|
pendingStateUpdateHelper(
|
|
165
181
|
async () => await setSelectedCam(value),
|
|
166
182
|
setIsPendingUpdate,
|
|
167
183
|
);
|
|
184
|
+
logger.log(
|
|
185
|
+
LogSource.Internals,
|
|
186
|
+
'DEVICE_CONFIGURE',
|
|
187
|
+
`Camera set - ${value}`,
|
|
188
|
+
);
|
|
168
189
|
} catch (e) {
|
|
190
|
+
logger.error(
|
|
191
|
+
LogSource.Internals,
|
|
192
|
+
'DEVICE_CONFIGURE',
|
|
193
|
+
`There was an error setting camera - ${value}`,
|
|
194
|
+
{
|
|
195
|
+
data: value,
|
|
196
|
+
error: e,
|
|
197
|
+
},
|
|
198
|
+
);
|
|
169
199
|
setIsPendingUpdate(false);
|
|
170
200
|
}
|
|
171
201
|
}}
|
|
@@ -258,11 +288,30 @@ const SelectAudioDevice = (props: SelectAudioDeviceProps) => {
|
|
|
258
288
|
onSelect={({label, value}) => {
|
|
259
289
|
setIsFocussed(true);
|
|
260
290
|
try {
|
|
291
|
+
logger.log(
|
|
292
|
+
LogSource.Internals,
|
|
293
|
+
'DEVICE_CONFIGURE',
|
|
294
|
+
`Trying to set mic - ${label} - ${value}`,
|
|
295
|
+
);
|
|
261
296
|
pendingStateUpdateHelper(
|
|
262
297
|
async () => await setSelectedMic(value),
|
|
263
298
|
setIsPendingUpdate,
|
|
264
299
|
);
|
|
300
|
+
logger.log(
|
|
301
|
+
LogSource.Internals,
|
|
302
|
+
'DEVICE_CONFIGURE',
|
|
303
|
+
`Mic set - ${value}`,
|
|
304
|
+
);
|
|
265
305
|
} catch (e) {
|
|
306
|
+
logger.error(
|
|
307
|
+
LogSource.Internals,
|
|
308
|
+
'DEVICE_CONFIGURE',
|
|
309
|
+
`There was an error setting mic - ${value}`,
|
|
310
|
+
{
|
|
311
|
+
data: value,
|
|
312
|
+
error: e,
|
|
313
|
+
},
|
|
314
|
+
);
|
|
266
315
|
setIsPendingUpdate(false);
|
|
267
316
|
}
|
|
268
317
|
}}
|
|
@@ -351,11 +400,30 @@ const SelectSpeakerDevice = (props: SelectSpeakerDeviceProps) => {
|
|
|
351
400
|
onSelect={({label, value}) => {
|
|
352
401
|
setIsFocussed(true);
|
|
353
402
|
try {
|
|
403
|
+
logger.log(
|
|
404
|
+
LogSource.Internals,
|
|
405
|
+
'DEVICE_CONFIGURE',
|
|
406
|
+
`Trying to set speaker - ${label} - ${value}`,
|
|
407
|
+
);
|
|
354
408
|
pendingStateUpdateHelper(
|
|
355
409
|
async () => await setSelectedSpeaker(value),
|
|
356
410
|
setIsPendingUpdate,
|
|
357
411
|
);
|
|
412
|
+
logger.log(
|
|
413
|
+
LogSource.Internals,
|
|
414
|
+
'DEVICE_CONFIGURE',
|
|
415
|
+
`Speaker set - ${value}`,
|
|
416
|
+
);
|
|
358
417
|
} catch (e) {
|
|
418
|
+
logger.error(
|
|
419
|
+
LogSource.Internals,
|
|
420
|
+
'DEVICE_CONFIGURE',
|
|
421
|
+
`There was an error setting speaker - ${value}`,
|
|
422
|
+
{
|
|
423
|
+
data: value,
|
|
424
|
+
error: e,
|
|
425
|
+
},
|
|
426
|
+
);
|
|
359
427
|
setIsPendingUpdate(false);
|
|
360
428
|
}
|
|
361
429
|
}}
|
|
@@ -439,19 +507,59 @@ const SelectDevice = (props: SelectDeviceProps) => {
|
|
|
439
507
|
// });
|
|
440
508
|
|
|
441
509
|
useEffect(() => {
|
|
442
|
-
|
|
510
|
+
const isDeviceAvailable = audioDevices && audioDevices.length;
|
|
511
|
+
logger.log(
|
|
512
|
+
LogSource.Internals,
|
|
513
|
+
'DEVICE_CONFIGURE',
|
|
514
|
+
'audio devices changed',
|
|
515
|
+
{
|
|
516
|
+
devices: [...audioDevices],
|
|
517
|
+
isDeviceAvailable: isDeviceAvailable
|
|
518
|
+
? 'Yes, setting mic'
|
|
519
|
+
: 'No audio devices available',
|
|
520
|
+
},
|
|
521
|
+
);
|
|
522
|
+
if (isDeviceAvailable) {
|
|
443
523
|
setMicAvailable(true);
|
|
444
524
|
}
|
|
445
525
|
}, [audioDevices]);
|
|
446
526
|
|
|
447
527
|
useEffect(() => {
|
|
448
|
-
|
|
528
|
+
const isDeviceAvailable = videoDevices && videoDevices.length;
|
|
529
|
+
logger.log(
|
|
530
|
+
LogSource.Internals,
|
|
531
|
+
'DEVICE_CONFIGURE',
|
|
532
|
+
'camera devices changed',
|
|
533
|
+
{
|
|
534
|
+
data: {
|
|
535
|
+
devices: [...videoDevices],
|
|
536
|
+
isDeviceAvailable: isDeviceAvailable
|
|
537
|
+
? 'Yes, setting camera'
|
|
538
|
+
: 'No video devices available',
|
|
539
|
+
},
|
|
540
|
+
},
|
|
541
|
+
);
|
|
542
|
+
if (isDeviceAvailable) {
|
|
449
543
|
setCameraAvailable(true);
|
|
450
544
|
}
|
|
451
545
|
}, [videoDevices]);
|
|
452
546
|
|
|
453
547
|
useEffect(() => {
|
|
454
|
-
|
|
548
|
+
const isDeviceAvailable = speakerDevices && speakerDevices.length;
|
|
549
|
+
logger.log(
|
|
550
|
+
LogSource.Internals,
|
|
551
|
+
'DEVICE_CONFIGURE',
|
|
552
|
+
'speaker devices changed',
|
|
553
|
+
{
|
|
554
|
+
data: {
|
|
555
|
+
devices: [...speakerDevices],
|
|
556
|
+
isDeviceAvailable: isDeviceAvailable
|
|
557
|
+
? 'Yes, setting speaker'
|
|
558
|
+
: 'No speaker devices available',
|
|
559
|
+
},
|
|
560
|
+
},
|
|
561
|
+
);
|
|
562
|
+
if (isDeviceAvailable) {
|
|
455
563
|
setSpeakerAvailable(true);
|
|
456
564
|
}
|
|
457
565
|
}, [speakerDevices]);
|
|
@@ -35,6 +35,7 @@ import {
|
|
|
35
35
|
sttChangeSpokenLanguageText,
|
|
36
36
|
toolbarItemCaptionText,
|
|
37
37
|
} from '../../language/default-labels/videoCallScreenLabels';
|
|
38
|
+
import {logger, LogSource} from '../../logger/AppBuilderLogger';
|
|
38
39
|
|
|
39
40
|
const CaptionContainer = () => {
|
|
40
41
|
const moreIconRef = React.useRef<View>(null);
|
|
@@ -223,12 +224,26 @@ const CaptionsActionMenu = (props: CaptionsActionMenuProps) => {
|
|
|
223
224
|
const onLanguageChange = (langChanged = false, language: LanguageType[]) => {
|
|
224
225
|
setLanguagePopup(false);
|
|
225
226
|
if (langChanged) {
|
|
227
|
+
logger.log(
|
|
228
|
+
LogSource.Internals,
|
|
229
|
+
'STT',
|
|
230
|
+
`Language changed to ${language}. Restarting STT`,
|
|
231
|
+
);
|
|
226
232
|
restart(language)
|
|
227
233
|
.then(() => {
|
|
228
|
-
|
|
234
|
+
logger.debug(
|
|
235
|
+
LogSource.Internals,
|
|
236
|
+
'STT',
|
|
237
|
+
'stt restarted successfully',
|
|
238
|
+
);
|
|
229
239
|
})
|
|
230
240
|
.catch(error => {
|
|
231
|
-
|
|
241
|
+
logger.error(
|
|
242
|
+
LogSource.Internals,
|
|
243
|
+
'STT',
|
|
244
|
+
'Error in restarting',
|
|
245
|
+
error,
|
|
246
|
+
);
|
|
232
247
|
// Handle the error case
|
|
233
248
|
});
|
|
234
249
|
}
|
|
@@ -8,6 +8,7 @@ import {getLanguageLabel, LanguageType} from './utils';
|
|
|
8
8
|
import useGetName from '../../utils/useGetName';
|
|
9
9
|
import {capitalizeFirstLetter} from '../../utils/common';
|
|
10
10
|
import {PropsContext, useLocalUid} from '../../../agora-rn-uikit';
|
|
11
|
+
import {logger, LogSource} from '../../logger/AppBuilderLogger';
|
|
11
12
|
|
|
12
13
|
interface IuseSTTAPI {
|
|
13
14
|
start: (lang: LanguageType[]) => Promise<{message: string} | null>;
|
|
@@ -42,23 +43,31 @@ const useSTTAPI = (): IuseSTTAPI => {
|
|
|
42
43
|
}, [language]);
|
|
43
44
|
|
|
44
45
|
const apiCall = async (method: string, lang: LanguageType[] = []) => {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
46
|
+
logger.log(
|
|
47
|
+
LogSource.NetworkRest,
|
|
48
|
+
'stt',
|
|
49
|
+
`Trying to ${method} stt for lang ${lang}`,
|
|
50
|
+
);
|
|
51
|
+
try {
|
|
52
|
+
const response = await fetch(`${STT_API_URL}/${method}`, {
|
|
53
|
+
method: 'POST',
|
|
54
|
+
headers: {
|
|
55
|
+
'Content-Type': 'application/json',
|
|
56
|
+
authorization: store.token ? `Bearer ${store.token}` : '',
|
|
57
|
+
},
|
|
58
|
+
body: JSON.stringify({
|
|
59
|
+
passphrase: roomId?.host || '',
|
|
60
|
+
lang: lang,
|
|
61
|
+
dataStream_uid: 111111, // bot ID
|
|
62
|
+
encryption_mode: $config.ENCRYPTION_ENABLED
|
|
63
|
+
? rtcProps.encryption.mode
|
|
64
|
+
: null,
|
|
65
|
+
}),
|
|
66
|
+
});
|
|
67
|
+
const res = await response.json();
|
|
68
|
+
|
|
69
|
+
return res;
|
|
70
|
+
} catch (error) {}
|
|
62
71
|
};
|
|
63
72
|
|
|
64
73
|
const startWithDelay = (lang: LanguageType[]): Promise<string> =>
|
|
@@ -81,7 +90,19 @@ const useSTTAPI = (): IuseSTTAPI => {
|
|
|
81
90
|
|
|
82
91
|
if (res?.error?.message) {
|
|
83
92
|
setIsSTTError(true);
|
|
93
|
+
logger.error(
|
|
94
|
+
LogSource.NetworkRest,
|
|
95
|
+
'stt',
|
|
96
|
+
`start stt for lang ${lang} failed`,
|
|
97
|
+
res?.error?.message,
|
|
98
|
+
);
|
|
84
99
|
} else {
|
|
100
|
+
logger.log(
|
|
101
|
+
LogSource.NetworkRest,
|
|
102
|
+
'stt',
|
|
103
|
+
`start stt for lang ${lang} succesfull`,
|
|
104
|
+
res,
|
|
105
|
+
);
|
|
85
106
|
setIsSTTError(false);
|
|
86
107
|
}
|
|
87
108
|
if (res === null || isSTTAlreadyActive) {
|
|
@@ -92,8 +113,11 @@ const useSTTAPI = (): IuseSTTAPI => {
|
|
|
92
113
|
PersistanceLevel.Sender,
|
|
93
114
|
);
|
|
94
115
|
setIsSTTActive(true);
|
|
95
|
-
|
|
96
|
-
|
|
116
|
+
logger.debug(
|
|
117
|
+
LogSource.NetworkRest,
|
|
118
|
+
'stt',
|
|
119
|
+
`stt lang update from: ${language} to ${lang}`,
|
|
120
|
+
);
|
|
97
121
|
// inform about the language set for stt
|
|
98
122
|
events.send(
|
|
99
123
|
EventNames.STT_LANGUAGE,
|
|
@@ -129,6 +153,12 @@ const useSTTAPI = (): IuseSTTAPI => {
|
|
|
129
153
|
}
|
|
130
154
|
return res;
|
|
131
155
|
} catch (errorMsg) {
|
|
156
|
+
logger.error(
|
|
157
|
+
LogSource.NetworkRest,
|
|
158
|
+
'stt',
|
|
159
|
+
'There was error in start stt',
|
|
160
|
+
errorMsg,
|
|
161
|
+
);
|
|
132
162
|
throw errorMsg;
|
|
133
163
|
} finally {
|
|
134
164
|
setIsLangChangeInProgress(false);
|
|
@@ -148,10 +178,17 @@ const useSTTAPI = (): IuseSTTAPI => {
|
|
|
148
178
|
if (res?.error?.message) {
|
|
149
179
|
setIsSTTError(true);
|
|
150
180
|
} else {
|
|
181
|
+
logger.log(LogSource.NetworkRest, 'stt', 'stop stt succesfull', res);
|
|
151
182
|
setIsSTTError(false);
|
|
152
183
|
}
|
|
153
184
|
return res;
|
|
154
185
|
} catch (error) {
|
|
186
|
+
logger.error(
|
|
187
|
+
LogSource.NetworkRest,
|
|
188
|
+
'stt',
|
|
189
|
+
'There was error in stop stt',
|
|
190
|
+
error,
|
|
191
|
+
);
|
|
155
192
|
throw error;
|
|
156
193
|
}
|
|
157
194
|
};
|
|
@@ -162,7 +199,12 @@ const useSTTAPI = (): IuseSTTAPI => {
|
|
|
162
199
|
await startWithDelay(lang);
|
|
163
200
|
return Promise.resolve();
|
|
164
201
|
} catch (error) {
|
|
165
|
-
|
|
202
|
+
logger.error(
|
|
203
|
+
LogSource.NetworkRest,
|
|
204
|
+
'stt',
|
|
205
|
+
'There was error error in re-starting STT',
|
|
206
|
+
error,
|
|
207
|
+
);
|
|
166
208
|
return Promise.reject(error);
|
|
167
209
|
} finally {
|
|
168
210
|
setIsLangChangeInProgress(false);
|
|
@@ -3,6 +3,7 @@ import {useCaption} from './useCaption';
|
|
|
3
3
|
import RNFetchBlob from 'rn-fetch-blob';
|
|
4
4
|
import {isAndroid, isIOS, useRoomInfo, useContent} from 'customization-api';
|
|
5
5
|
import Share from 'react-native-share';
|
|
6
|
+
import {LogSource, logger} from '../../logger/AppBuilderLogger';
|
|
6
7
|
|
|
7
8
|
const useTranscriptDownload = (): {
|
|
8
9
|
downloadTranscript: () => Promise<string | null>;
|
|
@@ -16,6 +17,11 @@ const useTranscriptDownload = (): {
|
|
|
16
17
|
const downloadTranscript = (): Promise<string | null> => {
|
|
17
18
|
return new Promise((resolve, reject) => {
|
|
18
19
|
try {
|
|
20
|
+
logger.log(
|
|
21
|
+
LogSource.Internals,
|
|
22
|
+
'TRANSCRIPT',
|
|
23
|
+
'Trying to download transcript',
|
|
24
|
+
);
|
|
19
25
|
const [finalContent, fileName] = formatTranscriptContent(
|
|
20
26
|
meetingTranscript,
|
|
21
27
|
meetingTitle,
|
|
@@ -32,26 +38,50 @@ const useTranscriptDownload = (): {
|
|
|
32
38
|
RNFetchBlob.fs
|
|
33
39
|
.writeFile(filePath, finalContent, 'utf8')
|
|
34
40
|
.then(() => {
|
|
35
|
-
|
|
41
|
+
logger.warn(
|
|
42
|
+
LogSource.Internals,
|
|
43
|
+
'TRANSCRIPT',
|
|
44
|
+
'Content downloaded successfully on native',
|
|
45
|
+
);
|
|
36
46
|
// need to show the preview of downloaded file
|
|
37
47
|
Share.open({url: `file://${filePath}`, type: 'text/plain'})
|
|
38
48
|
.then(res => {
|
|
39
|
-
|
|
49
|
+
logger.warn(
|
|
50
|
+
LogSource.Internals,
|
|
51
|
+
'TRANSCRIPT',
|
|
52
|
+
'File shared successfully:',
|
|
53
|
+
res,
|
|
54
|
+
);
|
|
40
55
|
resolve(filePath);
|
|
41
56
|
})
|
|
42
57
|
.catch(error => {
|
|
43
|
-
|
|
58
|
+
logger.error(
|
|
59
|
+
LogSource.Internals,
|
|
60
|
+
'TRANSCRIPT',
|
|
61
|
+
'Error sharing file:',
|
|
62
|
+
error,
|
|
63
|
+
);
|
|
44
64
|
reject(error);
|
|
45
65
|
});
|
|
46
66
|
|
|
47
67
|
resolve(filePath);
|
|
48
68
|
})
|
|
49
69
|
.catch(error => {
|
|
50
|
-
|
|
70
|
+
logger.error(
|
|
71
|
+
LogSource.Internals,
|
|
72
|
+
'TRANSCRIPT',
|
|
73
|
+
'Error downloading content:',
|
|
74
|
+
error,
|
|
75
|
+
);
|
|
51
76
|
reject(error);
|
|
52
77
|
});
|
|
53
78
|
} catch (error) {
|
|
54
|
-
|
|
79
|
+
logger.error(
|
|
80
|
+
LogSource.Internals,
|
|
81
|
+
'TRANSCRIPT',
|
|
82
|
+
'Error downloading content:',
|
|
83
|
+
error,
|
|
84
|
+
);
|
|
55
85
|
reject(error);
|
|
56
86
|
}
|
|
57
87
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {formatTranscriptContent} from './utils';
|
|
2
2
|
import {useCaption} from './useCaption';
|
|
3
3
|
import {useRoomInfo, useContent} from 'customization-api';
|
|
4
|
+
import {LogSource, logger} from '../../logger/AppBuilderLogger';
|
|
4
5
|
|
|
5
6
|
const useTranscriptDownload = (): {
|
|
6
7
|
downloadTranscript: () => Promise<string | null>;
|
|
@@ -37,10 +38,19 @@ const useTranscriptDownload = (): {
|
|
|
37
38
|
|
|
38
39
|
// revoke download url
|
|
39
40
|
URL.revokeObjectURL(downloadUrl);
|
|
40
|
-
|
|
41
|
+
logger.debug(
|
|
42
|
+
LogSource.Internals,
|
|
43
|
+
'TRANSCRIPT',
|
|
44
|
+
'content donwloaded successfully',
|
|
45
|
+
);
|
|
41
46
|
resolve(downloadUrl);
|
|
42
47
|
} catch (error) {
|
|
43
|
-
|
|
48
|
+
logger.error(
|
|
49
|
+
LogSource.Internals,
|
|
50
|
+
'TRANSCRIPT',
|
|
51
|
+
'failed to download content',
|
|
52
|
+
error,
|
|
53
|
+
);
|
|
44
54
|
reject(error);
|
|
45
55
|
}
|
|
46
56
|
});
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
inviteTileNoElseJoinedYetText,
|
|
26
26
|
videoRoomUserFallbackText,
|
|
27
27
|
} from '../../language/default-labels/videoCallScreenLabels';
|
|
28
|
+
import {LogSource, logger} from '../../logger/AppBuilderLogger';
|
|
28
29
|
|
|
29
30
|
const ChatIcon = () => (
|
|
30
31
|
<View style={{alignSelf: 'center', marginRight: 20}}>
|
|
@@ -124,6 +125,11 @@ const ChatParticipants = (props: any) => {
|
|
|
124
125
|
return (
|
|
125
126
|
<Pressable
|
|
126
127
|
onPress={() => {
|
|
128
|
+
logger.log(
|
|
129
|
+
LogSource.Internals,
|
|
130
|
+
'CHAT',
|
|
131
|
+
`Starting chat with ${name}`,
|
|
132
|
+
);
|
|
127
133
|
selectUser(uidAsNumber);
|
|
128
134
|
}}>
|
|
129
135
|
<View style={style.participantContainer}>
|