agora-appbuilder-core 4.1.10-beta.1 → 4.1.11-beta.2

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 (132) hide show
  1. package/package.json +2 -2
  2. package/template/agora-rn-uikit/src/Utils/isBotUser.ts +1 -1
  3. package/template/android/app/build.gradle +0 -7
  4. package/template/bridge/rtc/webNg/RtcEngine.ts +2 -2
  5. package/template/bridge/rtm/web/Types.ts +0 -183
  6. package/template/bridge/rtm/web/index.ts +488 -450
  7. package/template/customization-api/typeDefinition.ts +0 -1
  8. package/template/defaultConfig.js +3 -4
  9. package/template/global.d.ts +0 -1
  10. package/template/ios/Podfile +0 -41
  11. package/template/package.json +5 -5
  12. package/template/src/AppRoutes.tsx +3 -3
  13. package/template/src/ai-agent/components/ControlButtons.tsx +1 -1
  14. package/template/src/assets/font-styles.css +1 -33
  15. package/template/src/assets/fonts/icomoon.ttf +0 -0
  16. package/template/src/assets/selection.json +1 -1
  17. package/template/src/atoms/ActionMenu.tsx +93 -13
  18. package/template/src/atoms/CustomIcon.tsx +1 -8
  19. package/template/src/atoms/DropDownMulti.tsx +80 -29
  20. package/template/src/atoms/Dropdown.tsx +0 -5
  21. package/template/src/atoms/Input.tsx +2 -1
  22. package/template/src/atoms/TertiaryButton.tsx +1 -1
  23. package/template/src/atoms/UserAvatar.tsx +1 -1
  24. package/template/src/components/ChatContext.ts +3 -5
  25. package/template/src/components/Controls.tsx +167 -208
  26. package/template/src/components/DeviceConfigure.tsx +1 -1
  27. package/template/src/components/EventsConfigure.tsx +168 -118
  28. package/template/src/components/Navbar.tsx +11 -14
  29. package/template/src/components/RTMConfigure.tsx +819 -32
  30. package/template/src/components/beauty-effect/useBeautyEffects.tsx +13 -50
  31. package/template/src/components/chat/chatConfigure.tsx +1 -7
  32. package/template/src/components/chat-messages/useChatMessages.tsx +11 -43
  33. package/template/src/components/controls/useControlPermissionMatrix.tsx +4 -32
  34. package/template/src/components/participants/AllHostParticipants.tsx +2 -10
  35. package/template/src/components/participants/Participant.tsx +1 -7
  36. package/template/src/components/participants/UserActionMenuOptions.tsx +2 -12
  37. package/template/src/components/precall/joinCallBtn.native.tsx +7 -2
  38. package/template/src/components/precall/joinCallBtn.tsx +7 -2
  39. package/template/src/components/precall/joinWaitingRoomBtn.native.tsx +16 -15
  40. package/template/src/components/precall/joinWaitingRoomBtn.tsx +31 -17
  41. package/template/src/components/precall/textInput.tsx +45 -22
  42. package/template/src/components/precall/usePreCall.tsx +7 -0
  43. package/template/src/components/recordings/RecordingsDateTable.tsx +2 -3
  44. package/template/src/components/room-info/useRoomInfo.tsx +5 -0
  45. package/template/src/components/useUserPreference.tsx +12 -39
  46. package/template/src/components/virtual-background/useVB.tsx +0 -18
  47. package/template/src/components/whiteboard/WhiteboardConfigure.tsx +0 -27
  48. package/template/src/language/default-labels/videoCallScreenLabels.ts +27 -11
  49. package/template/src/logger/AppBuilderLogger.tsx +3 -11
  50. package/template/src/pages/VideoCall.tsx +518 -171
  51. package/template/src/pages/video-call/ActionSheetContent.tsx +77 -77
  52. package/template/src/pages/video-call/SidePanelHeader.tsx +81 -53
  53. package/template/src/pages/video-call/VideoCallScreen.tsx +0 -18
  54. package/template/src/pages/video-call/VideoCallScreenWrapper.tsx +1 -0
  55. package/template/src/rtm/RTMEngine.ts +37 -262
  56. package/template/src/rtm/utils.ts +1 -68
  57. package/template/src/rtm-events/constants.ts +7 -40
  58. package/template/src/rtm-events-api/Events.ts +39 -158
  59. package/template/src/subComponents/ChatBubble.tsx +3 -3
  60. package/template/src/subComponents/ChatContainer.tsx +9 -19
  61. package/template/src/subComponents/LocalAudioMute.tsx +2 -2
  62. package/template/src/subComponents/LocalVideoMute.tsx +2 -2
  63. package/template/src/subComponents/SidePanelEnum.tsx +0 -1
  64. package/template/src/subComponents/caption/Caption.tsx +48 -7
  65. package/template/src/subComponents/caption/CaptionContainer.tsx +324 -51
  66. package/template/src/subComponents/caption/CaptionIcon.tsx +35 -34
  67. package/template/src/subComponents/caption/CaptionText.tsx +103 -2
  68. package/template/src/subComponents/caption/LanguageSelectorPopup.tsx +179 -69
  69. package/template/src/subComponents/caption/Transcript.tsx +46 -11
  70. package/template/src/subComponents/caption/TranscriptIcon.tsx +27 -35
  71. package/template/src/subComponents/caption/TranscriptText.tsx +78 -3
  72. package/template/src/subComponents/caption/proto/ptoto.js +38 -4
  73. package/template/src/subComponents/caption/proto/test.proto +34 -19
  74. package/template/src/subComponents/caption/useCaption.tsx +754 -11
  75. package/template/src/subComponents/caption/useSTTAPI.tsx +118 -205
  76. package/template/src/subComponents/caption/useStreamMessageUtils.native.ts +152 -33
  77. package/template/src/subComponents/caption/useStreamMessageUtils.ts +165 -34
  78. package/template/src/subComponents/caption/utils.ts +171 -3
  79. package/template/src/subComponents/chat/ChatSendButton.tsx +0 -1
  80. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +0 -16
  81. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +1 -1
  82. package/template/src/subComponents/waiting-rooms/WaitingRoomControls.tsx +4 -7
  83. package/template/src/utils/SdkEvents.ts +3 -0
  84. package/template/src/utils/useEndCall.ts +4 -4
  85. package/template/src/utils/useMuteToggleLocal.ts +10 -14
  86. package/template/src/utils/useSpeechToText.ts +31 -20
  87. package/template/bridge/rtm/web/index-legacy.ts +0 -540
  88. package/template/src/components/RTMConfigure-legacy.tsx +0 -848
  89. package/template/src/components/UserGlobalPreferenceProvider.tsx +0 -227
  90. package/template/src/components/breakout-room/BreakoutRoomPanel.tsx +0 -58
  91. package/template/src/components/breakout-room/context/BreakoutRoomContext.tsx +0 -2508
  92. package/template/src/components/breakout-room/events/BreakoutRoomEventsConfigure.tsx +0 -272
  93. package/template/src/components/breakout-room/events/constants.ts +0 -17
  94. package/template/src/components/breakout-room/hoc/BreakoutRoomNameRenderer.tsx +0 -68
  95. package/template/src/components/breakout-room/hooks/useBreakoutRoomExit.ts +0 -49
  96. package/template/src/components/breakout-room/state/reducer.ts +0 -522
  97. package/template/src/components/breakout-room/state/types.ts +0 -54
  98. package/template/src/components/breakout-room/ui/BreakoutMeetingTitle.tsx +0 -60
  99. package/template/src/components/breakout-room/ui/BreakoutRoomActionMenu.tsx +0 -136
  100. package/template/src/components/breakout-room/ui/BreakoutRoomAnnouncementModal.tsx +0 -135
  101. package/template/src/components/breakout-room/ui/BreakoutRoomGroupSettings.tsx +0 -588
  102. package/template/src/components/breakout-room/ui/BreakoutRoomMainRoomUsers.tsx +0 -142
  103. package/template/src/components/breakout-room/ui/BreakoutRoomMemberActionMenu.tsx +0 -122
  104. package/template/src/components/breakout-room/ui/BreakoutRoomParticipants.tsx +0 -124
  105. package/template/src/components/breakout-room/ui/BreakoutRoomRaiseHand.tsx +0 -65
  106. package/template/src/components/breakout-room/ui/BreakoutRoomRenameModal.tsx +0 -227
  107. package/template/src/components/breakout-room/ui/BreakoutRoomSettings.tsx +0 -140
  108. package/template/src/components/breakout-room/ui/BreakoutRoomTransition.tsx +0 -52
  109. package/template/src/components/breakout-room/ui/BreakoutRoomView.tsx +0 -193
  110. package/template/src/components/breakout-room/ui/ExitBreakoutRoomIconButton.tsx +0 -79
  111. package/template/src/components/breakout-room/ui/ParticipantManualAssignmentModal.tsx +0 -638
  112. package/template/src/components/breakout-room/ui/SelectParticipantAssignmentStrategy.tsx +0 -57
  113. package/template/src/components/common/Dividers.tsx +0 -53
  114. package/template/src/components/controls/toolbar-items/ExitBreakoutRoomToolbarItem.tsx +0 -13
  115. package/template/src/components/raise-hand/RaiseHandButton.tsx +0 -50
  116. package/template/src/components/raise-hand/RaiseHandProvider.tsx +0 -308
  117. package/template/src/components/raise-hand/index.ts +0 -14
  118. package/template/src/components/room-info/useCurrentRoomInfo.tsx +0 -42
  119. package/template/src/components/room-info/useSetBreakoutRoomInfo.tsx +0 -64
  120. package/template/src/pages/video-call/BreakoutVideoCall.tsx +0 -213
  121. package/template/src/pages/video-call/VideoCallContent.tsx +0 -211
  122. package/template/src/pages/video-call/VideoCallStateWrapper.tsx +0 -495
  123. package/template/src/rtm/RTMConfigureBreakoutRoomProvider.tsx +0 -882
  124. package/template/src/rtm/RTMConfigureMainRoomProvider.tsx +0 -757
  125. package/template/src/rtm/RTMCoreProvider.tsx +0 -419
  126. package/template/src/rtm/RTMGlobalStateProvider.tsx +0 -706
  127. package/template/src/rtm/RTMStatusBanner.tsx +0 -99
  128. package/template/src/rtm/constants.ts +0 -12
  129. package/template/src/rtm/hooks/useMainRoomUserDisplayName.ts +0 -45
  130. package/template/src/rtm/rtm-presence-utils.ts +0 -344
  131. package/template/src/subComponents/chat/ChatAnnouncementView.tsx +0 -65
  132. package/template/src/utils/useDebouncedCallback.tsx +0 -20
@@ -268,66 +268,65 @@ const EventsConfigure: React.FC<Props> = ({
268
268
  permissionStatusRef.current = permissionStatus;
269
269
  }, [permissionStatus]);
270
270
 
271
- const {hasUserJoinedRTM, isInitialQueueCompleted, syncUserState} =
272
- useContext(ChatContext);
273
- const {startSpeechToText, addStreamMessageListener} = useSpeechToText();
274
-
275
- //auto start stt
276
- useEffect(() => {
277
- if (
278
- !isRecordingBot &&
279
- $config.ENABLE_CAPTION &&
280
- $config.STT_AUTO_START &&
281
- callActive &&
282
- hasUserJoinedRTM &&
283
- isInitialQueueCompleted &&
284
- !sttAutoStarted
285
- ) {
286
- //host will start the caption
287
- if (isHost && roomId?.host && !isSTTAlreadyActiveRef.current) {
288
- logger.log(LogSource.Internals, 'STT', 'STT_AUTO_START triggered', {
289
- uidWhoTriggered: localUid,
290
- });
291
-
292
- // add stream message callback listener
293
- addStreamMessageListener();
294
-
295
- //start with default language
296
- startSpeechToText(['en-US'])
297
- .then(() => {
298
- logger.log(LogSource.Internals, 'STT', 'STT_AUTO_START success');
299
- setSttAutoStarted(true);
300
- })
301
- .catch(err => {
302
- logger.log(
303
- LogSource.Internals,
304
- 'STT',
305
- 'STT_AUTO_START failed',
306
- err,
307
- );
308
- setSttAutoStarted(false);
309
- });
310
- }
311
-
312
- if (isHost && roomId?.host && isSTTAlreadyActiveRef.current) {
313
- logger.log(
314
- LogSource.Internals,
315
- 'STT',
316
- 'STT_AUTO_START already triggered by some other host',
317
- );
318
- setSttAutoStarted(true);
319
- }
320
- }
321
- }, [
322
- isRecordingBot,
323
- callActive,
324
- isHost,
325
- hasUserJoinedRTM,
326
- roomId,
327
- sttAutoStarted,
328
- isInitialQueueCompleted,
329
- isSTTAlreadyActiveRef.current,
330
- ]);
271
+ // const {hasUserJoinedRTM, isInitialQueueCompleted} = useContext(ChatContext);
272
+ // const {startSpeechToText, addStreamMessageListener} = useSpeechToText();
273
+
274
+ // auto start stt
275
+ // useEffect(() => {
276
+ // if (
277
+ // !isRecordingBot &&
278
+ // $config.ENABLE_CAPTION &&
279
+ // $config.STT_AUTO_START &&
280
+ // callActive &&
281
+ // hasUserJoinedRTM &&
282
+ // isInitialQueueCompleted &&
283
+ // !sttAutoStarted
284
+ // ) {
285
+ // //host will start the caption
286
+ // if (isHost && roomId?.host && !isSTTAlreadyActiveRef.current) {
287
+ // logger.log(LogSource.Internals, 'STT', 'STT_AUTO_START triggered', {
288
+ // uidWhoTriggered: localUid,
289
+ // });
290
+
291
+ // // add stream message callback listener
292
+ // addStreamMessageListener();
293
+
294
+ // //start with default language
295
+ // startSpeechToText(['en-US'])
296
+ // .then(() => {
297
+ // logger.log(LogSource.Internals, 'STT', 'STT_AUTO_START success');
298
+ // setSttAutoStarted(true);
299
+ // })
300
+ // .catch(err => {
301
+ // logger.log(
302
+ // LogSource.Internals,
303
+ // 'STT',
304
+ // 'STT_AUTO_START failed',
305
+ // err,
306
+ // );
307
+ // setSttAutoStarted(false);
308
+ // });
309
+ // }
310
+
311
+ // if (isHost && roomId?.host && isSTTAlreadyActiveRef.current) {
312
+ // logger.log(
313
+ // LogSource.Internals,
314
+ // 'STT',
315
+ // 'STT_AUTO_START already triggered by some other host',
316
+ // );
317
+ // setSttAutoStarted(true);
318
+ // }
319
+ // }
320
+ // }, [
321
+ // isRecordingBot,
322
+ // callActive,
323
+ // isHost,
324
+ // hasUserJoinedRTM,
325
+ // roomId,
326
+ // sttAutoStarted,
327
+ // isInitialQueueCompleted,
328
+ // isSTTAlreadyActiveRef.current,
329
+ // ]);
331
330
 
332
331
  useEffect(() => {
333
332
  //user joined event listener
@@ -571,53 +570,106 @@ const EventsConfigure: React.FC<Props> = ({
571
570
  }
572
571
  });
573
572
 
574
- events.on(EventNames.STT_ACTIVE, data => {
575
- const payload = JSON.parse(data?.payload);
576
- if (payload.active) {
577
- isSTTAlreadyActiveRef.current = true;
578
- } else {
579
- isSTTAlreadyActiveRef.current = false;
580
- }
581
- setRoomInfo(prev => {
582
- return {
583
- ...prev,
584
- isSTTActive: payload.active,
585
- };
586
- });
587
- });
573
+ // events.on(EventNames.STT_ACTIVE, data => {
574
+ // const payload = JSON.parse(data?.payload);
575
+ // if (payload.active) {
576
+ // isSTTAlreadyActiveRef.current = true;
577
+ // } else {
578
+ // isSTTAlreadyActiveRef.current = false;
579
+ // }
580
+ // setRoomInfo(prev => {
581
+ // return {
582
+ // ...prev,
583
+ // isSTTActive: payload.active,
584
+ // };
585
+ // });
586
+ // });
588
587
 
589
- events.on(EventNames.STT_LANGUAGE, data => {
590
- const {
591
- username,
592
- prevLang,
593
- newLang,
594
- uid,
595
- }: RoomInfoContextInterface['sttLanguage'] = JSON.parse(data?.payload);
596
- // set this on roominfo then use it in Controls
597
- const sttLangObj = {
598
- username,
599
- prevLang,
600
- newLang,
601
- uid,
602
- langChanged: true,
603
- };
604
- setRoomInfo(prev => {
605
- return {
606
- ...prev,
607
- sttLanguage: sttLangObj,
608
- };
609
- });
610
- });
588
+ // events.on(EventNames.STT_LANGUAGE, data => {
589
+ // const {
590
+ // username,
591
+ // prevLang,
592
+ // newLang,
593
+ // uid,
594
+ // remoteLang,
595
+ // }: RoomInfoContextInterface['sttLanguage'] = JSON.parse(data?.payload);
596
+
597
+ // setRoomInfo(prev => {
598
+ // // Merge remoteLang with existing remoteLang to accumulate protected languages
599
+ // const existingRemoteLang = prev.sttLanguage?.remoteLang || [];
600
+ // const newRemoteLang = remoteLang || [];
601
+ // const mergedRemoteLang = [...new Set([...existingRemoteLang, ...newRemoteLang])];
602
+
603
+ // const sttLangObj = {
604
+ // username,
605
+ // prevLang,
606
+ // newLang, // All languages in the channel
607
+ // uid,
608
+ // langChanged: true,
609
+ // remoteLang: mergedRemoteLang, // Accumulated protected languages
610
+ // };
611
+
612
+ // return {
613
+ // ...prev,
614
+ // sttLanguage: sttLangObj,
615
+ // };
616
+ // });
617
+ // });
618
+
619
+ // events.on(EventNames.STT_TRANSLATE_LANGUAGE, data => {
620
+ // const {
621
+ // username,
622
+ // uid,
623
+ // translateConfig,
624
+ // } = JSON.parse(data?.payload);
625
+
626
+ // setRoomInfo(prev => {
627
+ // // Merge translate configs with existing configuration
628
+ // const existingTranslateConfig = prev.sttLanguage?.translateConfig || [];
629
+ // const newTranslateConfig = translateConfig || [];
630
+
631
+ // // Merge logic: for each new source language, merge with existing or add new
632
+ // const mergedTranslateConfig = [...existingTranslateConfig];
633
+
634
+ // newTranslateConfig.forEach(newConfig => {
635
+ // const existingIndex = mergedTranslateConfig.findIndex(
636
+ // existing => existing.source_lang === newConfig.source_lang
637
+ // );
638
+
639
+ // if (existingIndex !== -1) {
640
+ // // Same source language - merge target languages
641
+ // const existingTargets = mergedTranslateConfig[existingIndex].target_lang;
642
+ // const mergedTargets = [...new Set([...existingTargets, ...newConfig.target_lang])];
643
+ // mergedTranslateConfig[existingIndex] = {
644
+ // ...mergedTranslateConfig[existingIndex],
645
+ // target_lang: mergedTargets,
646
+ // };
647
+ // } else {
648
+ // // Different source language - add new config
649
+ // mergedTranslateConfig.push(newConfig);
650
+ // }
651
+ // });
652
+
653
+ // const sttLangObj = {
654
+ // ...prev.sttLanguage,
655
+ // translateConfig: mergedTranslateConfig,
656
+ // };
657
+
658
+ // return {
659
+ // ...prev,
660
+ // sttLanguage: sttLangObj,
661
+ // };
662
+ // });
663
+ // });
611
664
 
612
665
  events.on(EventNames.WAITING_ROOM_STATUS_UPDATE, data => {
613
666
  if (!isHostRef.current) return;
614
667
  const {attendee_uid, approved} = JSON.parse(data?.payload);
615
668
  // update waiting room status in other host's panel
616
- // dispatch({
617
- // type: 'UpdateRenderList',
618
- // value: [attendee_uid, {isInWaitingRoom: false}],
619
- // });
620
- syncUserState(attendee_uid, {isInWaitingRoom: false});
669
+ dispatch({
670
+ type: 'UpdateRenderList',
671
+ value: [attendee_uid, {isInWaitingRoom: false}],
672
+ });
621
673
 
622
674
  waitingRoomRef.current[attendee_uid] = approved ? 'APPROVED' : 'REJECTED';
623
675
  // hide toast in other host's screen
@@ -662,11 +714,10 @@ const EventsConfigure: React.FC<Props> = ({
662
714
  defaultContentRef.current.defaultContent[attendee_uid]?.name ||
663
715
  'Attendee';
664
716
  // put the attendee in waitingroom in renderlist
665
- // dispatch({
666
- // type: 'UpdateRenderList',
667
- // value: [attendee_uid, {isInWaitingRoom: true}],
668
- // });
669
- syncUserState(attendee_uid, {isInWaitingRoom: true});
717
+ dispatch({
718
+ type: 'UpdateRenderList',
719
+ value: [attendee_uid, {isInWaitingRoom: true}],
720
+ });
670
721
 
671
722
  waitingRoomRef.current[attendee_uid] = 'PENDING';
672
723
  // check if any other host has approved then dont show permission to join the room
@@ -679,11 +730,10 @@ const EventsConfigure: React.FC<Props> = ({
679
730
  attendee_screenshare_uid: attendee_screenshare_uid,
680
731
  approved: true,
681
732
  });
682
- // dispatch({
683
- // type: 'UpdateRenderList',
684
- // value: [attendee_uid, {isInWaitingRoom: false}],
685
- // });
686
- syncUserState(attendee_uid, {isInWaitingRoom: false});
733
+ dispatch({
734
+ type: 'UpdateRenderList',
735
+ value: [attendee_uid, {isInWaitingRoom: false}],
736
+ });
687
737
 
688
738
  waitingRoomRef.current[attendee_uid] = 'APPROVED';
689
739
 
@@ -728,11 +778,10 @@ const EventsConfigure: React.FC<Props> = ({
728
778
  attendee_screenshare_uid: attendee_screenshare_uid,
729
779
  approved: false,
730
780
  });
731
- // dispatch({
732
- // type: 'UpdateRenderList',
733
- // value: [attendee_uid, {isInWaitingRoom: false}],
734
- // });
735
- syncUserState(attendee_uid, {isInWaitingRoom: false});
781
+ dispatch({
782
+ type: 'UpdateRenderList',
783
+ value: [attendee_uid, {isInWaitingRoom: false}],
784
+ });
736
785
 
737
786
  waitingRoomRef.current[attendee_uid] = 'REJECTED';
738
787
 
@@ -876,8 +925,9 @@ const EventsConfigure: React.FC<Props> = ({
876
925
  events.off(EventNames.WHITEBOARD_ACTIVE);
877
926
  events.off(EventNames.WHITEBOARD_LAST_IMAGE_UPLOAD_POSITION);
878
927
  events.off(EventNames.BOARD_COLOR_CHANGED);
879
- events.off(EventNames.STT_ACTIVE);
880
- events.off(EventNames.STT_LANGUAGE);
928
+ // events.off(EventNames.STT_ACTIVE);
929
+ // events.off(EventNames.STT_LANGUAGE);
930
+ // events.off(EventNames.STT_TRANSLATE_LANGUAGE);
881
931
  };
882
932
  }, []);
883
933
 
@@ -70,7 +70,6 @@ import {
70
70
  SettingsToolbarItem,
71
71
  } from './controls/toolbar-items';
72
72
  import {useControlPermissionMatrix} from './controls/useControlPermissionMatrix';
73
- import BreakoutMeetingTitle from './breakout-room/ui/BreakoutMeetingTitle';
74
73
 
75
74
  export const ParticipantsCountView = ({
76
75
  isMobileView = false,
@@ -377,16 +376,13 @@ export const MeetingTitleToolbarItem = () => {
377
376
  } = useRoomInfo();
378
377
  return (
379
378
  <ToolbarItem>
380
- <View style={style.roomNameContainer}>
381
- <Text
382
- style={style.roomNameText}
383
- testID="videocall-meetingName"
384
- numberOfLines={1}
385
- ellipsizeMode="tail">
386
- {trimText(meetingTitle)}
387
- </Text>
388
- <BreakoutMeetingTitle />
389
- </View>
379
+ <Text
380
+ style={style.roomNameText}
381
+ testID="videocall-meetingName"
382
+ numberOfLines={1}
383
+ ellipsizeMode="tail">
384
+ {trimText(meetingTitle)}
385
+ </Text>
390
386
  </ToolbarItem>
391
387
  );
392
388
  };
@@ -636,11 +632,12 @@ const style = StyleSheet.create({
636
632
  roomNameContainer: {
637
633
  zIndex: 10,
638
634
  flex: 1,
639
- flexDirection: 'column',
640
- alignItems: 'flex-start',
641
- paddingLeft: 13,
635
+ flexDirection: 'row',
636
+ alignItems: 'center',
642
637
  },
638
+
643
639
  roomNameText: {
640
+ alignSelf: 'center',
644
641
  fontSize: ThemeConfig.FontSize.normal,
645
642
  color: $config.FONT_COLOR,
646
643
  fontWeight: '600',