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.
Files changed (79) hide show
  1. package/package.json +1 -1
  2. package/template/_package-lock.json +82 -0
  3. package/template/android/app/build.gradle +8 -0
  4. package/template/android/build.gradle +3 -0
  5. package/template/bridge/rtc/webNg/RtcEngine.ts +581 -31
  6. package/template/bridge/rtc/webNg/RtcSurfaceView.tsx +2 -1
  7. package/template/bridge/rtm/web/index.ts +2 -1
  8. package/template/customization-api/customize.ts +29 -10
  9. package/template/index.js +17 -1
  10. package/template/index.web.js +2 -2
  11. package/template/package.json +3 -0
  12. package/template/src/SDKAppWrapper.tsx +44 -2
  13. package/template/src/app-state/useNoiseSupression.native.tsx +6 -0
  14. package/template/src/app-state/useNoiseSupression.tsx +17 -0
  15. package/template/src/auth/AuthProvider.tsx +145 -8
  16. package/template/src/auth/IDPAuth.electron.tsx +2 -1
  17. package/template/src/auth/IDPAuth.tsx +8 -2
  18. package/template/src/auth/openIDPURL.native.tsx +14 -3
  19. package/template/src/auth/useTokenAuth.tsx +7 -1
  20. package/template/src/components/Controls.tsx +2 -1
  21. package/template/src/components/DeviceConfigure.tsx +67 -17
  22. package/template/src/components/Precall.tsx +21 -0
  23. package/template/src/components/RTMConfigure.tsx +188 -24
  24. package/template/src/components/SettingsView.tsx +2 -0
  25. package/template/src/components/Share.tsx +11 -0
  26. package/template/src/components/StorageContext.tsx +32 -2
  27. package/template/src/components/chat-messages/useChatMessages.tsx +65 -5
  28. package/template/src/components/contexts/WaitingRoomContext.tsx +5 -1
  29. package/template/src/components/precall/joinCallBtn.tsx +6 -0
  30. package/template/src/components/precall/usePreCall.tsx +18 -2
  31. package/template/src/components/room-info/useRoomInfo.tsx +28 -25
  32. package/template/src/components/useUserPreference.tsx +13 -2
  33. package/template/src/components/useWakeLock.tsx +18 -4
  34. package/template/src/components/virtual-background/VBCard.tsx +40 -1
  35. package/template/src/components/virtual-background/VButils.native.ts +24 -5
  36. package/template/src/components/virtual-background/VButils.ts +29 -5
  37. package/template/src/components/virtual-background/VideoPreview.tsx +11 -1
  38. package/template/src/components/virtual-background/useVB.native.tsx +19 -3
  39. package/template/src/components/whiteboard/WhiteboardConfigure.tsx +32 -5
  40. package/template/src/components/whiteboard/WhiteboardToolBox.tsx +38 -8
  41. package/template/src/components/whiteboard/WhiteboardView.native.tsx +37 -13
  42. package/template/src/language/useLanguage.tsx +10 -4
  43. package/template/src/logger/AppBuilderLogger.tsx +215 -0
  44. package/template/src/logger/constants.ts +18 -0
  45. package/template/src/logger/transports/agora-transport.native.ts +58 -0
  46. package/template/src/logger/transports/agora-transport.ts +28 -0
  47. package/template/src/logger/transports/customer-transport.ts +115 -0
  48. package/template/src/pages/Create.tsx +27 -2
  49. package/template/src/pages/Endcall.tsx +6 -1
  50. package/template/src/pages/Join.tsx +31 -4
  51. package/template/src/pages/VideoCall.tsx +20 -56
  52. package/template/src/pages/video-call/DefaultLayouts.ts +11 -3
  53. package/template/src/pages/video-call/SidePanelHeader.tsx +12 -2
  54. package/template/src/pages/video-call/VideoCallScreen.tsx +8 -0
  55. package/template/src/pages/video-call/VideoRenderer.tsx +6 -0
  56. package/template/src/rtm/RTMEngine.ts +5 -0
  57. package/template/src/rtm-events-api/Events.ts +70 -16
  58. package/template/src/subComponents/LayoutIconDropdown.tsx +6 -0
  59. package/template/src/subComponents/LocalAudioMute.tsx +13 -3
  60. package/template/src/subComponents/LocalEndCall.tsx +8 -3
  61. package/template/src/subComponents/LocalVideoMute.tsx +15 -1
  62. package/template/src/subComponents/SelectDevice.tsx +111 -3
  63. package/template/src/subComponents/caption/CaptionContainer.tsx +17 -2
  64. package/template/src/subComponents/caption/useSTTAPI.tsx +62 -20
  65. package/template/src/subComponents/caption/useTranscriptDownload.native.ts +35 -5
  66. package/template/src/subComponents/caption/useTranscriptDownload.ts +12 -2
  67. package/template/src/subComponents/chat/ChatParticipants.tsx +6 -0
  68. package/template/src/subComponents/recording/useRecording.tsx +102 -15
  69. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +33 -2
  70. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +18 -2
  71. package/template/src/subComponents/waiting-rooms/useWaitingRoomAPI.ts +26 -0
  72. package/template/src/utils/axiomLogger.ts +2 -1
  73. package/template/src/utils/useCreateRoom.ts +30 -0
  74. package/template/src/utils/useFindActiveSpeaker.ts +43 -0
  75. package/template/src/utils/useFocus.tsx +8 -3
  76. package/template/src/utils/useIsLocalUserSpeaking.ts +19 -3
  77. package/template/src/utils/useJoinRoom.ts +27 -0
  78. package/template/src/utils/useLayout.tsx +9 -3
  79. package/template/src/utils/useSidePanel.tsx +14 -3
@@ -47,6 +47,7 @@ import LocalEventEmitter, {
47
47
  } from '../rtm-events-api/LocalEvents';
48
48
  import {PSTNUserLabel} from '../language/default-labels/videoCallScreenLabels';
49
49
  import {controlMessageEnum} from '../components/ChatContext';
50
+ import {LogSource, logger} from '../logger/AppBuilderLogger';
50
51
  import {RECORDING_BOT_UID} from '../utils/constants';
51
52
 
52
53
  export enum UserType {
@@ -139,14 +140,19 @@ const RtmConfigure = (props: any) => {
139
140
 
140
141
  const doLoginAndSetupRTM = async () => {
141
142
  try {
143
+ logger.log(LogSource.AgoraSDK, 'API', 'RTM login starts');
142
144
  await engine.current.login({
143
145
  uid: localUid.toString(),
144
146
  token: rtcProps.rtm,
145
147
  });
148
+ logger.log(LogSource.AgoraSDK, 'API', 'RTM login done');
146
149
  RTMEngine.getInstance().setLocalUID(localUid.toString());
150
+ logger.log(LogSource.AgoraSDK, 'API', 'RTM local Uid set');
147
151
  timerValueRef.current = 5;
148
152
  await setAttribute();
153
+ logger.log(LogSource.AgoraSDK, 'Log', 'RTM setting attribute done');
149
154
  } catch (error) {
155
+ logger.error(LogSource.AgoraSDK, 'Log', 'RTM login failed..Trying again');
150
156
  setTimeout(async () => {
151
157
  timerValueRef.current = timerValueRef.current + timerValueRef.current;
152
158
  doLoginAndSetupRTM();
@@ -160,11 +166,35 @@ const RtmConfigure = (props: any) => {
160
166
  ];
161
167
  try {
162
168
  await engine.current.setLocalUserAttributes(rtmAttributes);
169
+ logger.log(
170
+ LogSource.AgoraSDK,
171
+ 'API',
172
+ 'RTM setting local user attributes',
173
+ {
174
+ attr: rtmAttributes,
175
+ },
176
+ );
163
177
  timerValueRef.current = 5;
164
178
  await joinChannel();
179
+ logger.log(LogSource.AgoraSDK, 'Log', 'RTM join channel done', {
180
+ data: rtmAttributes,
181
+ });
165
182
  setHasUserJoinedRTM(true);
166
183
  await runQueuedEvents();
184
+ logger.log(
185
+ LogSource.AgoraSDK,
186
+ 'Log',
187
+ 'RTM queued events finished running',
188
+ {
189
+ attr: rtmAttributes,
190
+ },
191
+ );
167
192
  } catch (error) {
193
+ logger.error(
194
+ LogSource.AgoraSDK,
195
+ 'Log',
196
+ 'RTM setAttribute failed..Trying again',
197
+ );
168
198
  setTimeout(async () => {
169
199
  timerValueRef.current = timerValueRef.current + timerValueRef.current;
170
200
  setAttribute();
@@ -176,15 +206,40 @@ const RtmConfigure = (props: any) => {
176
206
  try {
177
207
  if (RTMEngine.getInstance().channelUid !== rtcProps.channel) {
178
208
  await engine.current.joinChannel(rtcProps.channel);
209
+ logger.log(LogSource.AgoraSDK, 'API', 'RTM joinChannel', {
210
+ data: rtcProps.channel,
211
+ });
179
212
  RTMEngine.getInstance().setChannelId(rtcProps.channel);
180
- console.log('Emitting rtm joined');
213
+ logger.log(
214
+ LogSource.AgoraSDK,
215
+ 'API',
216
+ 'RTM setChannelId',
217
+ rtcProps.channel,
218
+ );
219
+ logger.debug(
220
+ LogSource.SDK,
221
+ 'Event',
222
+ 'Emitting rtm joined',
223
+ rtcProps.channel,
224
+ );
181
225
  SDKEvents.emit('_rtm-joined', rtcProps.channel);
182
226
  } else {
183
- console.log('RTM already joined channel skipping');
227
+ logger.debug(
228
+ LogSource.AgoraSDK,
229
+ 'Log',
230
+ 'RTM already joined channel skipping',
231
+ rtcProps.channel,
232
+ );
184
233
  }
185
234
  timerValueRef.current = 5;
186
235
  await getMembers();
236
+ logger.log(LogSource.AgoraSDK, 'Log', 'RTM getMembers done');
187
237
  } catch (error) {
238
+ logger.error(
239
+ LogSource.AgoraSDK,
240
+ 'Log',
241
+ 'RTM joinChannel failed..Trying again',
242
+ );
188
243
  setTimeout(async () => {
189
244
  timerValueRef.current = timerValueRef.current + timerValueRef.current;
190
245
  joinChannel();
@@ -201,19 +256,48 @@ const RtmConfigure = (props: any) => {
201
256
 
202
257
  const getMembers = async () => {
203
258
  try {
259
+ logger.log(
260
+ LogSource.AgoraSDK,
261
+ 'API',
262
+ 'RTM getChannelMembersByID(getMembers) start',
263
+ );
204
264
  await engine.current
205
265
  .getChannelMembersBychannelId(rtcProps.channel)
206
266
  .then(async data => {
267
+ logger.log(
268
+ LogSource.AgoraSDK,
269
+ 'API',
270
+ 'RTM getChannelMembersByID data received',
271
+ data,
272
+ );
207
273
  await Promise.all(
208
274
  data.members.map(async (member: any) => {
209
275
  const backoffAttributes = backOff(
210
276
  async () => {
277
+ logger.log(
278
+ LogSource.AgoraSDK,
279
+ 'API',
280
+ `RTM fetching getUserAttributesByUid for member ${member.uid}`,
281
+ );
211
282
  const attr = await engine.current.getUserAttributesByUid(
212
283
  member.uid,
213
284
  );
214
285
  if (!attr || !attr.attributes) {
286
+ logger.log(
287
+ LogSource.AgoraSDK,
288
+ 'API',
289
+ 'RTM attributes for member not found',
290
+ );
215
291
  throw attr;
216
292
  }
293
+ logger.log(
294
+ LogSource.AgoraSDK,
295
+ 'API',
296
+ `RTM getUserAttributesByUid for member ${member.uid} received`,
297
+ {
298
+ attr,
299
+ },
300
+ );
217
301
  for (const key in attr.attributes) {
218
302
  if (
219
303
  attr.attributes.hasOwnProperty(key) &&
@@ -227,7 +311,9 @@ const RtmConfigure = (props: any) => {
227
311
  },
228
312
  {
229
313
  retry: (e, idx) => {
230
- console.log(
314
+ logger.debug(
315
+ LogSource.AgoraSDK,
316
+ 'Log',
231
317
  `[retrying] Attempt ${idx}. Fetching ${member.uid}'s name`,
232
318
  e,
233
319
  );
@@ -279,12 +365,20 @@ const RtmConfigure = (props: any) => {
279
365
  }
280
366
  }
281
367
  } catch (e) {
282
- console.error(`Could not retrieve name of ${member.uid}`, e);
368
+ logger.error(
369
+ LogSource.AgoraSDK,
370
+ 'Log',
371
+ `Could not retrieve name of ${member.uid}`,
372
+ e,
373
+ );
283
374
  }
284
375
  }),
285
376
  );
286
-
287
- console.log('RTM init done');
377
+ logger.debug(
378
+ LogSource.AgoraSDK,
379
+ 'Log',
380
+ 'RTM fetched all data and user attr...RTM init done',
381
+ );
288
382
  });
289
383
  timerValueRef.current = 5;
290
384
  } catch (error) {
@@ -296,8 +390,10 @@ const RtmConfigure = (props: any) => {
296
390
  };
297
391
 
298
392
  const init = async () => {
393
+ logger.log(LogSource.AgoraSDK, 'Log', 'RTM creating engine...');
299
394
  engine.current = RTMEngine.getInstance().engine;
300
395
  RTMEngine.getInstance();
396
+ logger.log(LogSource.AgoraSDK, 'Log', 'RTM engine creation done');
301
397
 
302
398
  engine.current.on('connectionStateChanged', (evt: any) => {
303
399
  //console.log(evt);
@@ -306,12 +402,31 @@ const RtmConfigure = (props: any) => {
306
402
  // console.log(evt);
307
403
  });
308
404
  engine.current.on('channelMemberJoined', (data: any) => {
405
+ logger.log(LogSource.AgoraSDK, 'Event', 'channelMemberJoined', data);
309
406
  const backoffAttributes = backOff(
310
407
  async () => {
408
+ logger.log(
409
+ LogSource.AgoraSDK,
410
+ 'API',
411
+ `RTM fetching getUserAttributesByUid for member ${data.uid}`,
412
+ );
311
413
  const attr = await engine.current.getUserAttributesByUid(data.uid);
312
414
  if (!attr || !attr.attributes) {
415
+ logger.log(
416
+ LogSource.AgoraSDK,
417
+ 'API',
418
+ 'RTM attributes for member not found',
419
+ );
313
420
  throw attr;
314
421
  }
422
+ logger.log(
423
+ LogSource.AgoraSDK,
424
+ 'API',
425
+ `RTM getUserAttributesByUid for member ${data.uid} received`,
426
+ {
427
+ attr,
428
+ },
429
+ );
315
430
  for (const key in attr.attributes) {
316
431
  if (attr.attributes.hasOwnProperty(key) && attr.attributes[key]) {
317
432
  return attr;
@@ -322,7 +437,9 @@ const RtmConfigure = (props: any) => {
322
437
  },
323
438
  {
324
439
  retry: (e, idx) => {
325
- console.log(
440
+ logger.debug(
441
+ LogSource.AgoraSDK,
442
+ 'Log',
326
443
  `[retrying] Attempt ${idx}. Fetching ${data.uid}'s name`,
327
444
  e,
328
445
  );
@@ -356,14 +473,19 @@ const RtmConfigure = (props: any) => {
356
473
  updateRenderListState(screenUid, screenShareUser);
357
474
  //end - updating screenshare data in rtc
358
475
  } catch (e) {
359
- console.error(`Could not retrieve name of ${data.uid}`, e);
476
+ logger.error(
477
+ LogSource.AgoraSDK,
478
+ 'Event',
479
+ `Failed to retrive name of ${data.uid}`,
480
+ e,
481
+ );
360
482
  }
361
483
  }
362
484
  getname();
363
485
  });
364
486
 
365
487
  engine.current.on('channelMemberLeft', (data: any) => {
366
- console.log('user left', data);
488
+ logger.debug(LogSource.AgoraSDK, 'Event', 'channelMemberLeft', data);
367
489
  // Chat of left user becomes undefined. So don't cleanup
368
490
  const uid = data?.uid ? parseInt(data?.uid) : undefined;
369
491
  if (!uid) return;
@@ -374,12 +496,15 @@ const RtmConfigure = (props: any) => {
374
496
  });
375
497
 
376
498
  engine.current.on('messageReceived', (evt: any) => {
377
- console.log('CUSTOM_EVENT_API messageReceived: ', evt);
499
+ logger.debug(LogSource.Events, 'CUSTOM_EVENTS', 'messageReceived', evt);
378
500
  const {peerId, ts, text} = evt;
379
501
  const [err, msg] = safeJsonParse(text);
380
502
  if (err) {
381
- console.log(
382
- 'CUSTOM_EVENT_API: JSON payload incorrect, Error while parsing the payload',
503
+ logger.error(
504
+ LogSource.Events,
505
+ 'CUSTOM_EVENTS',
506
+ 'JSON payload incorrect, Error while parsing the payload',
507
+ err,
383
508
  );
384
509
  }
385
510
 
@@ -390,22 +515,36 @@ const RtmConfigure = (props: any) => {
390
515
  try {
391
516
  eventDispatcher(msg, sender, timestamp);
392
517
  } catch (error) {
393
- console.log('error while dispacthing', error);
518
+ logger.error(
519
+ LogSource.Events,
520
+ 'CUSTOM_EVENTS',
521
+ 'error while dispatching through eventDispatcher',
522
+ err,
523
+ );
394
524
  }
395
525
  });
396
526
 
397
527
  engine.current.on('channelMessageReceived', evt => {
398
- console.log('CUSTOM_EVENT_API channelMessageReceived: ', evt);
528
+ logger.debug(
529
+ LogSource.Events,
530
+ 'CUSTOM_EVENTS',
531
+ 'channelMessageReceived',
532
+ evt,
533
+ );
399
534
 
400
535
  const {uid, channelId, text, ts} = evt;
401
536
  //whiteboard upload
402
537
  if (uid == 1010101) {
403
538
  const [err, res] = safeJsonParse(text);
404
539
  if (err) {
405
- console.log(
406
- 'CUSTOM_EVENT_API: JSON payload incorrect, Error while parsing the payload',
540
+ logger.error(
541
+ LogSource.Events,
542
+ 'CUSTOM_EVENTS',
543
+ 'JSON payload incorrect, Error while parsing the payload',
544
+ err,
407
545
  );
408
546
  }
547
+
409
548
  if (res?.data?.data?.images) {
410
549
  LocalEventEmitter.emit(
411
550
  LocalEventsEnum.WHITEBOARD_FILE_UPLOAD,
@@ -415,8 +554,11 @@ const RtmConfigure = (props: any) => {
415
554
  } else {
416
555
  const [err, msg] = safeJsonParse(text);
417
556
  if (err) {
418
- console.log(
419
- 'CUSTOM_EVENT_API: JSON payload incorrect, Error while parsing the payload',
557
+ logger.error(
558
+ LogSource.Events,
559
+ 'CUSTOM_EVENTS',
560
+ 'JSON payload incorrect, Error while parsing the payload',
561
+ err,
420
562
  );
421
563
  }
422
564
 
@@ -428,7 +570,12 @@ const RtmConfigure = (props: any) => {
428
570
  try {
429
571
  eventDispatcher(msg, sender, timestamp);
430
572
  } catch (error) {
431
- console.log('error while dispacthing', error);
573
+ logger.error(
574
+ LogSource.Events,
575
+ 'CUSTOM_EVENTS',
576
+ 'error while dispatching through eventDispatcher',
577
+ error,
578
+ );
432
579
  }
433
580
  }
434
581
  }
@@ -443,7 +590,12 @@ const RtmConfigure = (props: any) => {
443
590
  await eventDispatcher(currEvt.data, currEvt.uid, currEvt.ts);
444
591
  }
445
592
  } catch (error) {
446
- console.log('CUSTOM_EVENT_API: error while running queue events', error);
593
+ logger.error(
594
+ LogSource.Events,
595
+ 'CUSTOM_EVENTS',
596
+ 'error while running queue events',
597
+ error,
598
+ );
447
599
  }
448
600
  };
449
601
 
@@ -455,7 +607,13 @@ const RtmConfigure = (props: any) => {
455
607
  sender: string,
456
608
  ts: number,
457
609
  ) => {
458
- console.log('CUSTOM_EVENT_API: inside eventDispatcher ', data);
610
+ logger.debug(
611
+ LogSource.Events,
612
+ 'CUSTOM_EVENTS',
613
+ 'inside eventDispatcher ',
614
+ data,
615
+ );
616
+
459
617
  let evt = '',
460
618
  value = {};
461
619
 
@@ -521,7 +679,7 @@ const RtmConfigure = (props: any) => {
521
679
  await engine.current.addOrUpdateLocalUserAttributes([rtmAttribute]);
522
680
  }
523
681
  // Step 2: Emit the event
524
- console.log('CUSTOM_EVENT_API: emiting event..: ');
682
+ logger.debug(LogSource.Events, 'CUSTOM_EVENTS', 'emiting event..: ');
525
683
  EventUtils.emitEvent(evt, source, {payload, persistLevel, sender, ts});
526
684
  // Because async gets evaluated in a different order when in an sdk
527
685
  if (evt === 'name') {
@@ -535,7 +693,12 @@ const RtmConfigure = (props: any) => {
535
693
  }, 200);
536
694
  }
537
695
  } catch (error) {
538
- console.log('CUSTOM_EVENT_API: error while emiting event: ', error);
696
+ logger.error(
697
+ LogSource.Events,
698
+ 'CUSTOM_EVENTS',
699
+ 'error while emiting event:',
700
+ error,
701
+ );
539
702
  }
540
703
  };
541
704
 
@@ -544,11 +707,12 @@ const RtmConfigure = (props: any) => {
544
707
  return;
545
708
  }
546
709
  await RTMEngine.getInstance().destroy();
710
+ logger.log(LogSource.AgoraSDK, 'API', 'RTM destroy done');
547
711
  if (isIOS() || isAndroid()) {
548
712
  EventUtils.clear();
549
713
  }
550
714
  setHasUserJoinedRTM(false);
551
- console.log('RTM cleanup done');
715
+ logger.debug(LogSource.AgoraSDK, 'Log', 'RTM cleanup done');
552
716
  };
553
717
 
554
718
  useAsyncEffect(async () => {
@@ -53,6 +53,7 @@ import {
53
53
  settingPanelNameCantbeChangedInfo,
54
54
  settingPanelNameInputLabel,
55
55
  } from '../../src/language/default-labels/videoCallScreenLabels';
56
+ import {LogSource, logger} from '../logger/AppBuilderLogger';
56
57
 
57
58
  interface EditNameProps {}
58
59
  const EditName: React.FC = (props?: EditNameProps) => {
@@ -100,6 +101,7 @@ const EditName: React.FC = (props?: EditNameProps) => {
100
101
  setSaved(false);
101
102
  }, 2000);
102
103
  setEditable(false);
104
+ logger.log(LogSource.Internals, 'NAME', `Name changed ${newName}`);
103
105
  saveName(trimmedText ? trimmedText : username);
104
106
  } else {
105
107
  setEditable(true);
@@ -51,6 +51,7 @@ import {
51
51
  shareRoomPSTNSubText,
52
52
  shareRoomStartBtnText,
53
53
  } from '../language/default-labels/shareLinkScreenLabels';
54
+ import {LogSource, logger} from '../logger/AppBuilderLogger';
54
55
 
55
56
  export interface CopyMeetingInfoProps {
56
57
  showSubLabel?: boolean;
@@ -342,7 +343,17 @@ const Share = () => {
342
343
  const copyInviteButton = useString(shareRoomCopyBtnText)();
343
344
  const history = useHistory();
344
345
  const enterMeeting = () => {
346
+ logger.log(
347
+ LogSource.Internals,
348
+ 'ENTER_MEETING_ROOM',
349
+ 'user clicked on button - Start meeting',
350
+ );
345
351
  if (roomId?.host) {
352
+ logger.log(
353
+ LogSource.Internals,
354
+ 'ENTER_MEETING_ROOM',
355
+ 'user is being navigated to meeting room',
356
+ );
346
357
  history.push(roomId.host);
347
358
  }
348
359
  };
@@ -13,6 +13,7 @@ import React, {createContext, ReactChildren, useEffect, useState} from 'react';
13
13
  import AsyncStorage from '@react-native-async-storage/async-storage';
14
14
  import useMount from './useMount';
15
15
  import {ENABLE_AUTH} from '../auth/config';
16
+ import {logger, LogSource} from '../logger/AppBuilderLogger';
16
17
 
17
18
  type rememberedDevicesListEntries = Record<
18
19
  string,
@@ -74,9 +75,16 @@ export const StorageProvider = (props: {children: React.ReactNode}) => {
74
75
  useMount(() => {
75
76
  const hydrateStore = async () => {
76
77
  try {
78
+ logger.log(LogSource.Internals, 'STORE', 'hydrating store');
77
79
  const storeString = await AsyncStorage.getItem('store');
78
80
  if (storeString === null) {
79
81
  await AsyncStorage.setItem('store', JSON.stringify(initStoreValue));
82
+ logger.log(
83
+ LogSource.Internals,
84
+ 'STORE',
85
+ 'hydrating store from initial values done',
86
+ initStoreValue,
87
+ );
80
88
  setReady(true);
81
89
  } else {
82
90
  const storeFromStorage = JSON.parse(storeString);
@@ -91,11 +99,22 @@ export const StorageProvider = (props: {children: React.ReactNode}) => {
91
99
  }
92
100
  storeFromStorage['whiteboardNativeInfoToast'] = false;
93
101
  setStore(storeFromStorage);
102
+ logger.log(
103
+ LogSource.Internals,
104
+ 'STORE',
105
+ 'hydrating store from already stored values done',
106
+ storeFromStorage,
107
+ );
94
108
  setReady(true);
95
109
  }
96
110
  setReady(true);
97
111
  } catch (e) {
98
- console.error('problem hydrating store', e);
112
+ logger.error(
113
+ LogSource.Internals,
114
+ 'STORE',
115
+ 'problem hydrating store',
116
+ e,
117
+ );
99
118
  }
100
119
  };
101
120
  hydrateStore();
@@ -115,8 +134,19 @@ export const StorageProvider = (props: {children: React.ReactNode}) => {
115
134
  tempStore['token'] = null;
116
135
  }
117
136
  await AsyncStorage.setItem('store', JSON.stringify(tempStore));
137
+ logger.log(
138
+ LogSource.Internals,
139
+ 'STORE',
140
+ 'syncing storage done',
141
+ tempStore,
142
+ );
118
143
  } catch (e) {
119
- console.log('problem syncing the store', e);
144
+ logger.error(
145
+ LogSource.Internals,
146
+ 'STORE',
147
+ 'problem syncing the store',
148
+ e,
149
+ );
120
150
  }
121
151
  };
122
152
  ready && syncStore();
@@ -38,6 +38,7 @@ import {
38
38
  multiplePublicAndPrivateChatToastSubHeading,
39
39
  multiplePublicChatToastSubHeading,
40
40
  } from '../../language/default-labels/videoCallScreenLabels';
41
+ import {LogSource, logger} from '../../logger/AppBuilderLogger';
41
42
 
42
43
  enum ChatMessageActionEnum {
43
44
  Create = 'Create_Chat_Message',
@@ -463,7 +464,12 @@ const ChatMessagesProvider = (props: ChatMessagesProviderProps) => {
463
464
  lastMessageTimeStamp: new Date().getTime(),
464
465
  });
465
466
  } catch (error) {
466
- console.log("ERROR : couldn't update the last message timestamp");
467
+ logger.error(
468
+ LogSource.Internals,
469
+ 'CHAT',
470
+ 'ERROR : couldnt update the last message timestamp',
471
+ error,
472
+ );
467
473
  }
468
474
  showMessageNotification(messageData.msg, `${data.sender}`, true);
469
475
  addMessageToPrivateStore(
@@ -605,6 +611,13 @@ const ChatMessagesProvider = (props: ChatMessagesProviderProps) => {
605
611
 
606
612
  const sendChatMessage = (msg: string, toUid?: UidType) => {
607
613
  if (typeof msg == 'string' && msg.trim() === '') return;
614
+ logger.log(
615
+ LogSource.Internals,
616
+ 'CHAT',
617
+ `sending ${toUid ? 'private' : 'public'} chat message -> ${msg} ${
618
+ toUid ? toUid : ''
619
+ }`,
620
+ );
608
621
  if (toUid) {
609
622
  const messageData = {
610
623
  msg,
@@ -643,6 +656,15 @@ const ChatMessagesProvider = (props: ChatMessagesProviderProps) => {
643
656
 
644
657
  const editChatMessage = (msgId: string, msg: string, toUid?: UidType) => {
645
658
  if (typeof msg == 'string' && msg.trim() === '') return;
659
+ logger.log(
660
+ LogSource.Internals,
661
+ 'CHAT',
662
+ `editing ${toUid ? 'private' : 'public'} chat message..`,
663
+ {
664
+ msgId,
665
+ msg,
666
+ },
667
+ );
646
668
  if (toUid) {
647
669
  const checkData = privateMessageStore[toUid].filter(
648
670
  item => item.msgId === msgId && item.uid === localUid,
@@ -671,7 +693,15 @@ const ChatMessagesProvider = (props: ChatMessagesProviderProps) => {
671
693
  return newState;
672
694
  });
673
695
  } else {
674
- console.log("You don't have permission to edit");
696
+ logger.debug(
697
+ LogSource.Internals,
698
+ 'CHAT',
699
+ "You don't have permission to edit",
700
+ {
701
+ msgId,
702
+ msg,
703
+ },
704
+ );
675
705
  }
676
706
  } else {
677
707
  //check if user has permission to edit
@@ -699,12 +729,28 @@ const ChatMessagesProvider = (props: ChatMessagesProviderProps) => {
699
729
  return newState;
700
730
  });
701
731
  } else {
702
- console.log("You don't have permission to edit");
732
+ logger.debug(
733
+ LogSource.Internals,
734
+ 'CHAT',
735
+ "You don't have permission to edit",
736
+ {
737
+ msgId,
738
+ msg,
739
+ },
740
+ );
703
741
  }
704
742
  }
705
743
  };
706
744
 
707
745
  const deleteChatMessage = (msgId: string, toUid?: UidType) => {
746
+ logger.log(
747
+ LogSource.Internals,
748
+ 'CHAT',
749
+ `deleting ${toUid ? 'private' : 'public'} chat message..`,
750
+ {
751
+ msgId,
752
+ },
753
+ );
708
754
  if (toUid) {
709
755
  const checkData = privateMessageStore[toUid].filter(
710
756
  item => item.msgId === msgId && item.uid === localUid,
@@ -733,7 +779,14 @@ const ChatMessagesProvider = (props: ChatMessagesProviderProps) => {
733
779
  return newState;
734
780
  });
735
781
  } else {
736
- console.log("You don't have permission to delete");
782
+ logger.debug(
783
+ LogSource.Internals,
784
+ 'CHAT',
785
+ "You don't have permission to delete",
786
+ {
787
+ msgId,
788
+ },
789
+ );
737
790
  }
738
791
  } else {
739
792
  //check if user has permission to delete
@@ -761,7 +814,14 @@ const ChatMessagesProvider = (props: ChatMessagesProviderProps) => {
761
814
  return newState;
762
815
  });
763
816
  } else {
764
- console.log("You don't have permission to delete");
817
+ logger.debug(
818
+ LogSource.Internals,
819
+ 'CHAT',
820
+ "You don't have permission to delete",
821
+ {
822
+ msgId,
823
+ },
824
+ );
765
825
  }
766
826
  }
767
827
  };
@@ -4,6 +4,7 @@ import {UidType} from '../../../agora-rn-uikit';
4
4
  import {useContent} from 'customization-api';
5
5
  import {createHook} from 'customization-implementation';
6
6
  import {filterObject} from '../../utils';
7
+ import {LogSource, logger} from '../../logger/AppBuilderLogger';
7
8
 
8
9
  export interface WaitingRoomContextInterface {
9
10
  waitingRoomUids: UidType[];
@@ -29,7 +30,10 @@ const WaitingRoomProvider = ({children}) => {
29
30
  v?.type === 'rtc' && !v.offline && v?.isInWaitingRoom === true,
30
31
  ),
31
32
  ).map(Number);
32
- console.log('in waiting - de', uids, defaultContent);
33
+ logger.debug(LogSource.Internals, 'WAITING_ROOM', 'users in waiting room', {
34
+ uids,
35
+ defaultContent,
36
+ });
33
37
 
34
38
  setwaitingRoomUids(uids);
35
39
  }, [defaultContent]);
@@ -26,6 +26,7 @@ import isMobileOrTablet from '../../utils/isMobileOrTablet';
26
26
  import {isWebInternal} from '../../utils/common';
27
27
  import useSetName from '../../utils/useSetName';
28
28
  import {useUserPreference} from '../useUserPreference';
29
+ import {LogSource, logger} from '../../logger/AppBuilderLogger';
29
30
 
30
31
  const audio = new Audio(
31
32
  'https://dl.dropboxusercontent.com/s/1cdwpm3gca9mlo0/kick.mp3',
@@ -59,6 +60,11 @@ const JoinCallBtn = (props: PreCallJoinCallBtnProps) => {
59
60
  );
60
61
 
61
62
  const onSubmit = () => {
63
+ logger.log(
64
+ LogSource.Internals,
65
+ 'PRECALL_SCREEN',
66
+ 'User clicked on join call button. setting call active to true',
67
+ );
62
68
  setUsername(username.trim());
63
69
  setCallActive(true);
64
70
  //updating name in the backend