agora-appbuilder-core 3.0.10 → 3.0.11

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 (248) hide show
  1. package/Readme.md +0 -6
  2. package/package.json +2 -2
  3. package/template/_package-lock.json +4719 -5862
  4. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +0 -4
  5. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +0 -18
  6. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +0 -2
  7. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +26 -30
  8. package/template/agora-rn-uikit/src/Controls/Icons.ts +83 -30
  9. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +6 -6
  10. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +0 -1
  11. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +0 -1
  12. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +0 -1
  13. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +0 -1
  14. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +0 -1
  15. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +0 -2
  16. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +0 -1
  17. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +0 -1
  18. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +0 -1
  19. package/template/agora-rn-uikit/src/Reducer/index.ts +0 -3
  20. package/template/agora-rn-uikit/src/Rtc/Create.tsx +1 -89
  21. package/template/agora-rn-uikit/src/RtcConfigure.tsx +2 -39
  22. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +5 -15
  23. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +9 -15
  24. package/template/agora-rn-uikit/src/index.ts +1 -3
  25. package/template/android/app/build.gradle +0 -1
  26. package/template/android/app/src/main/AndroidManifest.xml +15 -22
  27. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +0 -50
  28. package/template/android/build.gradle +3 -3
  29. package/template/babel.config.js +0 -1
  30. package/template/bridge/rtc/webNg/RtcEngine.ts +17 -110
  31. package/template/customization-api/sub-components.ts +1 -1
  32. package/template/customization-api/typeDefinition.ts +1 -2
  33. package/template/electron/index.html +27 -27
  34. package/template/electron/renderer/index.js +0 -1
  35. package/template/global.d.ts +4 -25
  36. package/template/index.rsdk.tsx +0 -1
  37. package/template/index.web.js +1 -2
  38. package/template/index.wsdk.tsx +1 -1
  39. package/template/ios/HelloWorld/Info.plist +1 -14
  40. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +0 -17
  41. package/template/metro.config.js +1 -1
  42. package/template/package.json +7 -18
  43. package/template/react-native-toast-message/index.d.ts +43 -43
  44. package/template/react-native-toast-message/src/colors/index.js +2 -3
  45. package/template/react-native-toast-message/src/components/base/index.js +59 -46
  46. package/template/react-native-toast-message/src/components/base/styles.js +32 -16
  47. package/template/react-native-toast-message/src/components/error.js +2 -3
  48. package/template/react-native-toast-message/src/components/info.js +2 -3
  49. package/template/react-native-toast-message/src/components/success.js +2 -3
  50. package/template/react-native-toast-message/src/index.js +31 -122
  51. package/template/react-native-toast-message/src/index.sdk.tsx +35 -125
  52. package/template/react-native-toast-message/src/styles.js +4 -3
  53. package/template/react-native-toast-message/src/styles.sdk.ts +4 -3
  54. package/template/src/App.tsx +0 -6
  55. package/template/src/AppWrapper.tsx +28 -63
  56. package/template/src/assets/icons.ts +102 -0
  57. package/template/src/atoms/HorizontalRule.tsx +1 -3
  58. package/template/src/atoms/PrimaryButton.tsx +26 -51
  59. package/template/src/atoms/SecondaryButton.tsx +5 -8
  60. package/template/src/atoms/TextInput.tsx +14 -12
  61. package/template/src/components/Chat.tsx +214 -86
  62. package/template/src/components/ChatContext.ts +1 -8
  63. package/template/src/components/ColorConfigure.tsx +1 -1
  64. package/template/src/components/ColorContext.ts +1 -1
  65. package/template/src/components/{Controls1.native.tsx → Controls.native.tsx} +4 -6
  66. package/template/src/components/Controls.tsx +42 -342
  67. package/template/src/components/DeviceConfigure.tsx +101 -461
  68. package/template/src/components/DeviceContext.tsx +4 -8
  69. package/template/src/components/EventsConfigure.tsx +7 -144
  70. package/template/src/components/GraphQLProvider.tsx +1 -1
  71. package/template/src/components/GridVideo.tsx +44 -59
  72. package/template/src/components/HostControlView.tsx +35 -114
  73. package/template/src/components/Navbar.tsx +398 -216
  74. package/template/src/components/NetworkQualityContext.tsx +20 -20
  75. package/template/src/components/ParticipantsView.tsx +154 -177
  76. package/template/src/components/PinnedVideo.tsx +120 -207
  77. package/template/src/components/Precall.native.tsx +119 -358
  78. package/template/src/components/Precall.tsx +135 -269
  79. package/template/src/components/RTMConfigure.tsx +4 -27
  80. package/template/src/components/Router.electron.ts +0 -1
  81. package/template/src/components/Router.native.ts +0 -1
  82. package/template/src/components/Router.sdk.ts +0 -1
  83. package/template/src/components/Router.ts +0 -1
  84. package/template/src/components/Settings.tsx +95 -26
  85. package/template/src/components/SettingsView.tsx +56 -251
  86. package/template/src/components/Share.tsx +273 -302
  87. package/template/src/components/StorageContext.tsx +3 -30
  88. package/template/src/components/chat-messages/useChatMessages.tsx +23 -69
  89. package/template/src/components/chat-ui/useChatUIControl.tsx +0 -7
  90. package/template/src/components/common/Error.tsx +6 -20
  91. package/template/src/components/common/Logo.tsx +15 -16
  92. package/template/src/components/contexts/LiveStreamDataContext.tsx +5 -10
  93. package/template/src/components/contexts/VideoMeetingDataContext.tsx +7 -37
  94. package/template/src/components/livestream/LiveStreamContext.tsx +36 -270
  95. package/template/src/components/livestream/Types.ts +14 -39
  96. package/template/src/components/livestream/index.ts +0 -1
  97. package/template/src/components/livestream/views/LiveStreamControls.tsx +4 -12
  98. package/template/src/components/participants/AllAudienceParticipants.tsx +30 -101
  99. package/template/src/components/participants/AllHostParticipants.tsx +34 -103
  100. package/template/src/components/participants/MeParticipant.tsx +38 -0
  101. package/template/src/components/participants/ParticipantName.tsx +7 -13
  102. package/template/src/components/participants/ParticipantSectionTitle.tsx +10 -35
  103. package/template/src/components/participants/RemoteParticipants.tsx +71 -0
  104. package/template/src/components/participants/ScreenshareParticipants.tsx +12 -144
  105. package/template/src/components/precall/{LocalMute1.native.tsx → LocalMute.native.tsx} +5 -21
  106. package/template/src/components/precall/LocalMute.tsx +14 -84
  107. package/template/src/components/precall/VideoPreview.native.tsx +3 -48
  108. package/template/src/components/precall/VideoPreview.tsx +7 -163
  109. package/template/src/components/precall/joinCallBtn.tsx +2 -15
  110. package/template/src/components/precall/meetingTitle.tsx +12 -15
  111. package/template/src/components/precall/selectDevice.tsx +21 -1
  112. package/template/src/components/precall/textInput.tsx +4 -32
  113. package/template/src/components/precall/usePreCall.tsx +0 -16
  114. package/template/src/components/styles.ts +21 -42
  115. package/template/src/components/useShareLink.tsx +14 -12
  116. package/template/src/language/default-labels/precallScreenLabels.ts +3 -3
  117. package/template/src/pages/Authenticate.tsx +15 -5
  118. package/template/src/pages/Create.tsx +165 -293
  119. package/template/src/pages/Join.tsx +67 -93
  120. package/template/src/pages/VideoCall.tsx +64 -89
  121. package/template/src/pages/video-call/DefaultLayouts.ts +4 -4
  122. package/template/src/pages/video-call/NameWithMicIcon.tsx +44 -120
  123. package/template/src/pages/video-call/RenderComponent.tsx +2 -3
  124. package/template/src/pages/video-call/VideoCallScreen.tsx +9 -45
  125. package/template/src/pages/video-call/VideoComponent.tsx +3 -18
  126. package/template/src/pages/video-call/VideoRenderer.tsx +60 -218
  127. package/template/src/rtm-events/constants.ts +0 -2
  128. package/template/src/subComponents/ChatBubble.tsx +83 -123
  129. package/template/src/subComponents/ChatContainer.tsx +84 -257
  130. package/template/src/subComponents/ChatInput.tsx +46 -61
  131. package/template/src/subComponents/Checkbox.native.tsx +5 -16
  132. package/template/src/subComponents/Checkbox.tsx +2 -2
  133. package/template/src/subComponents/CopyJoinInfo.tsx +58 -36
  134. package/template/src/subComponents/FallbackLogo.tsx +40 -122
  135. package/template/src/subComponents/LanguageSelector.tsx +1 -1
  136. package/template/src/subComponents/{LayoutIconDropdown1.native.tsx → LayoutIconDropdown.native.tsx} +18 -4
  137. package/template/src/subComponents/LayoutIconDropdown.tsx +134 -131
  138. package/template/src/subComponents/LocalAudioMute.tsx +27 -119
  139. package/template/src/subComponents/LocalEndCall.tsx +33 -71
  140. package/template/src/subComponents/LocalSwitchCamera.tsx +30 -17
  141. package/template/src/subComponents/LocalVideoMute.tsx +27 -117
  142. package/template/src/subComponents/Logo.tsx +4 -3
  143. package/template/src/subComponents/LogoutButton.tsx +1 -1
  144. package/template/src/subComponents/NetworkQualityPill.tsx +63 -60
  145. package/template/src/subComponents/OpenInNativeButton.tsx +3 -3
  146. package/template/src/subComponents/Recording.tsx +29 -28
  147. package/template/src/subComponents/RemoteAudioMute.tsx +29 -83
  148. package/template/src/subComponents/RemoteEndCall.tsx +5 -8
  149. package/template/src/subComponents/RemoteVideoMute.tsx +21 -74
  150. package/template/src/subComponents/ScreenShareNotice.tsx +8 -83
  151. package/template/src/subComponents/SelectDevice.tsx +61 -404
  152. package/template/src/subComponents/SelectOAuth.tsx +8 -9
  153. package/template/src/subComponents/ToastConfig.tsx +10 -150
  154. package/template/src/subComponents/chat/ChatParticipants.tsx +78 -187
  155. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -95
  156. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +33 -29
  157. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +6 -6
  158. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +11 -24
  159. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +10 -17
  160. package/template/src/subComponents/recording/useRecording.tsx +27 -79
  161. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +70 -52
  162. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +2 -11
  163. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +4 -26
  164. package/template/src/utils/common.tsx +1 -155
  165. package/template/src/utils/index.tsx +0 -19
  166. package/template/src/utils/isMobileOrTablet.ts +2 -7
  167. package/template/src/utils/useButtonTemplate.tsx +0 -1
  168. package/template/src/utils/useMuteToggleLocal.ts +3 -54
  169. package/template/web/index.html +0 -5
  170. package/template/webpack.commons.js +8 -13
  171. package/template/webpack.web.config.js +0 -1
  172. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +0 -11
  173. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +0 -24
  174. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +0 -11
  175. package/template/android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  176. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  177. package/template/android/app/src/main/res/values/colors.xml +0 -7
  178. package/template/react-native-toast-message/src/components/checkbox.js +0 -178
  179. package/template/react-native.config.js +0 -7
  180. package/template/src/assets/font-styles.css +0 -329
  181. package/template/src/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  182. package/template/src/assets/fonts/icomoon.ttf +0 -0
  183. package/template/src/assets/permission.png +0 -0
  184. package/template/src/assets/selection.json +0 -1
  185. package/template/src/atoms/ActionMenu.tsx +0 -236
  186. package/template/src/atoms/AnimatedActiveSpeaker.native.tsx +0 -71
  187. package/template/src/atoms/AnimatedActiveSpeaker.tsx +0 -84
  188. package/template/src/atoms/AnimatedRings.native.tsx +0 -68
  189. package/template/src/atoms/AnimatedRings.tsx +0 -70
  190. package/template/src/atoms/Card.tsx +0 -61
  191. package/template/src/atoms/CircularProgress.native.tsx +0 -121
  192. package/template/src/atoms/CircularProgress.tsx +0 -102
  193. package/template/src/atoms/CustomIcon.tsx +0 -88
  194. package/template/src/atoms/CustomSwitch.tsx +0 -287
  195. package/template/src/atoms/Dropdown.tsx +0 -306
  196. package/template/src/atoms/IconButton.tsx +0 -162
  197. package/template/src/atoms/ImageIcon.tsx +0 -98
  198. package/template/src/atoms/InfoBubble.tsx +0 -291
  199. package/template/src/atoms/Input.tsx +0 -87
  200. package/template/src/atoms/InviteInfo.tsx +0 -166
  201. package/template/src/atoms/LinkButton.tsx +0 -28
  202. package/template/src/atoms/OutlineButton.tsx +0 -61
  203. package/template/src/atoms/ParticipantsCount.tsx +0 -73
  204. package/template/src/atoms/Popup.tsx +0 -147
  205. package/template/src/atoms/RecordingInfo.tsx +0 -49
  206. package/template/src/atoms/Spacer.tsx +0 -22
  207. package/template/src/atoms/TertiaryButton.tsx +0 -78
  208. package/template/src/atoms/Toggle.tsx +0 -47
  209. package/template/src/atoms/Tooltip.native.tsx +0 -65
  210. package/template/src/atoms/Tooltip.tsx +0 -94
  211. package/template/src/atoms/UserAvatar.tsx +0 -60
  212. package/template/src/components/CommonStyles.ts +0 -44
  213. package/template/src/components/ToastComponent.tsx +0 -8
  214. package/template/src/components/participants/Participant.tsx +0 -302
  215. package/template/src/components/participants/UserActionMenuOptions.tsx +0 -398
  216. package/template/src/components/popups/InvitePopup.tsx +0 -115
  217. package/template/src/components/popups/StopRecordingPopup.tsx +0 -114
  218. package/template/src/components/precall/PermissionHelper.native.tsx +0 -5
  219. package/template/src/components/precall/PermissionHelper.tsx +0 -126
  220. package/template/src/components/precall/PreCallSettings.tsx +0 -52
  221. package/template/src/components/useToast.tsx +0 -41
  222. package/template/src/components/useVideoCall.tsx +0 -65
  223. package/template/src/pages/Endcall.tsx +0 -148
  224. package/template/src/pages/video-call/ActionSheet.native.tsx +0 -215
  225. package/template/src/pages/video-call/ActionSheet.tsx +0 -226
  226. package/template/src/pages/video-call/ActionSheetContent.tsx +0 -479
  227. package/template/src/pages/video-call/ActionSheetHandle.tsx +0 -38
  228. package/template/src/pages/video-call/ActionSheetStyles.css +0 -138
  229. package/template/src/pages/video-call/SidePanelHeader.tsx +0 -190
  230. package/template/src/pages/video-call/VideoCallMobileView.tsx +0 -139
  231. package/template/src/pages/video-call/VideoCallScreen.native.tsx +0 -37
  232. package/template/src/subComponents/ChatInput.ios.tsx +0 -237
  233. package/template/src/subComponents/EndcallPopup.tsx +0 -107
  234. package/template/src/subComponents/LayoutIconButton.tsx +0 -201
  235. package/template/src/subComponents/RemoteMutePopup.tsx +0 -193
  236. package/template/src/subComponents/RemoveMeetingPopup.tsx +0 -109
  237. package/template/src/subComponents/RemoveScreensharePopup.tsx +0 -109
  238. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +0 -207
  239. package/template/src/subComponents/SidePanelHeader.tsx +0 -112
  240. package/template/src/theme/index.ts +0 -46
  241. package/template/src/utils/PlatformWrapper.tsx +0 -21
  242. package/template/src/utils/hexadecimalTransparency.ts +0 -108
  243. package/template/src/utils/pendingStateUpdateHelper.ts +0 -19
  244. package/template/src/utils/useFocus.tsx +0 -46
  245. package/template/src/utils/useIsActiveSpeaker.ts +0 -27
  246. package/template/src/utils/useIsHandRaised.ts +0 -13
  247. package/template/src/utils/useRemoteEndScreenshare.ts +0 -26
  248. package/template/src/utils/useRemoteRequest.ts +0 -84
@@ -9,8 +9,8 @@
9
9
  information visit https://appbuilder.agora.io.
10
10
  *********************************************
11
11
  */
12
- import React, {useState, useContext, useEffect, useRef} from 'react';
13
- import {View, StyleSheet, Text, useWindowDimensions} from 'react-native';
12
+ import React, {useState, useContext} from 'react';
13
+ import {View, Dimensions, StyleSheet} from 'react-native';
14
14
  import {PropsContext} from '../../agora-rn-uikit';
15
15
  import LocalAudioMute, {
16
16
  LocalAudioMuteProps,
@@ -25,365 +25,83 @@ import LocalSwitchCamera, {
25
25
  import ScreenshareButton, {
26
26
  ScreenshareButtonProps,
27
27
  } from '../subComponents/screenshare/ScreenshareButton';
28
+ import {controlsHolder} from '../../theme.json';
28
29
  import isMobileOrTablet from '../utils/isMobileOrTablet';
29
30
  import {ClientRole} from '../../agora-rn-uikit';
30
31
  import LiveStreamControls, {
31
32
  LiveStreamControlsProps,
32
33
  } from './livestream/views/LiveStreamControls';
33
- import {
34
- BREAKPOINTS,
35
- calculatePosition,
36
- isWebInternal,
37
- useIsDesktop,
38
- } from '../utils/common';
34
+ import {isWebInternal} from '../utils/common';
39
35
  import {useMeetingInfo} from './meeting-info/useMeetingInfo';
40
36
  import LocalEndcall, {LocalEndcallProps} from '../subComponents/LocalEndCall';
41
- import Spacer from '../atoms/Spacer';
42
- import LayoutIconButton from '../subComponents/LayoutIconButton';
43
- import CopyJoinInfo from '../subComponents/CopyJoinInfo';
44
- import hexadecimalTransparency from '../utils/hexadecimalTransparency';
45
- import IconButton from '../atoms/IconButton';
46
- import ActionMenu, {ActionMenuItem} from '../atoms/ActionMenu';
47
- import useLayoutsData from '../pages/video-call/useLayoutsData';
48
- import {
49
- SidePanelType,
50
- useChatUIControl,
51
- useLayout,
52
- useRecording,
53
- useSidePanel,
54
- } from 'customization-api';
55
- import {useVideoCall} from './useVideoCall';
56
- import {useScreenshare} from '../subComponents/screenshare/useScreenshare';
57
- import LayoutIconDropdown from '../subComponents/LayoutIconDropdown';
58
37
 
59
- const MoreButton = () => {
60
- const {rtcProps} = useContext(PropsContext);
61
- const [actionMenuVisible, setActionMenuVisible] = React.useState(false);
62
- const [isHovered, setIsHovered] = useState(false);
63
- const [isHoveredOnModal, setIsHoveredOnModal] = useState(false);
64
- const moreBtnRef = useRef(null);
65
- const {width: globalWidth, height: globalHeight} = useWindowDimensions();
66
- const layouts = useLayoutsData();
67
- const {currentLayout, setLayout} = useLayout();
68
- const layout = layouts.findIndex((item) => item.name === currentLayout);
69
- const {setSidePanel, sidePanel} = useSidePanel();
70
- const {
71
- data: {isHost},
72
- } = useMeetingInfo();
73
- const {
74
- showLayoutOption,
75
- setShowInvitePopup,
76
- setShowStopRecordingPopup,
77
- setShowLayoutOption,
78
- } = useVideoCall();
79
- const {isScreenshareActive, startUserScreenshare, stopUserScreenShare} =
80
- useScreenshare();
81
- const {isRecordingActive, startRecording, inProgress} = useRecording();
82
- const {setGroupActive} = useChatUIControl();
83
- const actionMenuitems: ActionMenuItem[] = [];
84
-
85
- if (globalWidth <= BREAKPOINTS.sm) {
86
- actionMenuitems.push({
87
- icon: 'participants',
88
- iconColor: $config.SECONDARY_ACTION_COLOR,
89
- textColor: $config.FONT_COLOR,
90
- title: 'People',
91
- callback: () => {
92
- setActionMenuVisible(false);
93
- setSidePanel(SidePanelType.Participants);
94
- },
95
- });
96
- actionMenuitems.push({
97
- icon: 'chat-nav',
98
- iconColor: $config.SECONDARY_ACTION_COLOR,
99
- textColor: $config.FONT_COLOR,
100
- title: 'Chat',
101
- callback: () => {
102
- setActionMenuVisible(false);
103
- setGroupActive(true);
104
- setSidePanel(SidePanelType.Chat);
105
- },
106
- });
107
-
108
- if ($config.SCREEN_SHARING) {
109
- if (
110
- !(
111
- rtcProps.role == ClientRole.Audience &&
112
- $config.EVENT_MODE &&
113
- !$config.RAISE_HAND
114
- )
115
- ) {
116
- actionMenuitems.push({
117
- disabled:
118
- rtcProps.role == ClientRole.Audience &&
119
- $config.EVENT_MODE &&
120
- $config.RAISE_HAND &&
121
- !isHost,
122
- icon: isScreenshareActive ? 'stop-screen-share' : 'screen-share',
123
- iconColor: isScreenshareActive
124
- ? $config.SEMANTIC_ERROR
125
- : $config.SECONDARY_ACTION_COLOR,
126
- textColor: isScreenshareActive
127
- ? $config.SEMANTIC_ERROR
128
- : $config.FONT_COLOR,
129
- title: isScreenshareActive ? 'Stop Share' : 'Share',
130
- callback: () => {
131
- setActionMenuVisible(false);
132
- isScreenshareActive
133
- ? stopUserScreenShare()
134
- : startUserScreenshare();
135
- },
136
- });
137
- }
138
- }
139
- if (isHost && $config.CLOUD_RECORDING) {
140
- actionMenuitems.push({
141
- disabled: inProgress,
142
- icon: isRecordingActive ? 'stop-recording' : 'recording',
143
- iconColor: isRecordingActive
144
- ? $config.SEMANTIC_ERROR
145
- : $config.SECONDARY_ACTION_COLOR,
146
- textColor: isRecordingActive
147
- ? $config.SEMANTIC_ERROR
148
- : $config.FONT_COLOR,
149
- title: isRecordingActive ? 'Stop Recording' : 'Record',
150
- callback: () => {
151
- setActionMenuVisible(false);
152
- if (!isRecordingActive) {
153
- startRecording();
154
- } else {
155
- setShowStopRecordingPopup(true);
156
- }
157
- },
158
- });
159
- }
160
- }
161
-
162
- if (globalWidth <= BREAKPOINTS.md) {
163
- actionMenuitems.push({
164
- icon: layouts[layout]?.iconName,
165
- iconColor: $config.SECONDARY_ACTION_COLOR,
166
- textColor: $config.FONT_COLOR,
167
- title: 'Layout',
168
- callback: () => {
169
- //setShowLayoutOption(true);
170
- },
171
- onHoverCallback: (isHovered) => {
172
- setShowLayoutOption(isHovered);
173
- },
174
- onHoverContent: (
175
- <LayoutIconDropdown
176
- onHoverPlaceHolder="vertical"
177
- setShowDropdown={() => {}}
178
- showDropdown={true}
179
- modalPosition={
180
- globalWidth <= BREAKPOINTS.sm
181
- ? {bottom: 65, left: -150}
182
- : {bottom: 20, left: -150}
183
- }
184
- caretPosition={{bottom: 45, right: -10}}
185
- />
186
- ),
187
- });
188
- actionMenuitems.push({
189
- icon: 'share',
190
- iconColor: $config.SECONDARY_ACTION_COLOR,
191
- textColor: $config.FONT_COLOR,
192
- title: 'Invite',
193
- callback: () => {
194
- setActionMenuVisible(false);
195
- setShowInvitePopup(true);
196
- },
197
- });
198
- }
199
-
200
- if (globalWidth <= BREAKPOINTS.sm) {
201
- actionMenuitems.push({
202
- icon: 'settings',
203
- iconColor: $config.SECONDARY_ACTION_COLOR,
204
- textColor: $config.FONT_COLOR,
205
- title: 'Settings',
206
- callback: () => {
207
- setActionMenuVisible(false);
208
- setSidePanel(SidePanelType.Settings);
209
- },
210
- });
211
- }
212
-
213
- useEffect(() => {
214
- if (isHovered) {
215
- setActionMenuVisible(true);
216
- }
217
- }, [isHovered]);
218
-
219
- useEffect(() => {
220
- //hide action menu when user change layout
221
- setActionMenuVisible(false);
222
- }, [currentLayout]);
223
-
224
- return (
225
- <>
226
- <ActionMenu
227
- containerStyle={{width: 180}}
228
- hoverMode={true}
229
- onHover={(isVisible) => setIsHoveredOnModal(isVisible)}
230
- from={'control-bar'}
231
- actionMenuVisible={(isHovered || isHoveredOnModal) && actionMenuVisible}
232
- setActionMenuVisible={setActionMenuVisible}
233
- modalPosition={{
234
- bottom: 8,
235
- left: 0,
236
- }}
237
- items={actionMenuitems}
238
- />
239
- <div
240
- onMouseEnter={() => {
241
- setIsHovered(true);
242
- }}
243
- onMouseLeave={() => {
244
- setIsHovered(false);
245
- }}>
246
- {/** placeholder to hovering */}
247
- <View
248
- style={{
249
- position: 'absolute',
250
- top: -20,
251
- zIndex: -1,
252
- height: '50%',
253
- width: '100%',
254
- backgroundColor: 'transparent',
255
- }}
256
- />
257
- <IconButton
258
- setRef={(ref) => {
259
- moreBtnRef.current = ref;
260
- }}
261
- onPress={() => {
262
- //setActionMenuVisible(true);
263
- }}
264
- iconProps={{
265
- name: 'more-menu',
266
- tintColor: $config.SECONDARY_ACTION_COLOR,
267
- }}
268
- btnTextProps={{
269
- text: $config.ICON_TEXT ? 'More' : '',
270
- textColor: $config.FONT_COLOR,
271
- }}
272
- />
273
- </div>
274
- </>
275
- );
276
- };
277
38
  const Controls = () => {
278
39
  const {rtcProps} = useContext(PropsContext);
279
- const isDesktop = useIsDesktop();
40
+
41
+ let onLayout = (e: any) => {
42
+ setDim([e.nativeEvent.layout.width, e.nativeEvent.layout.height]);
43
+ };
44
+ const [dim, setDim] = useState([
45
+ Dimensions.get('window').width,
46
+ Dimensions.get('window').height,
47
+ Dimensions.get('window').width > Dimensions.get('window').height,
48
+ ]);
49
+ const isDesktop = dim[0] > 1224;
280
50
  const {
281
51
  data: {isHost},
282
52
  } = useMeetingInfo();
283
- const {width} = useWindowDimensions();
284
-
285
53
  return (
286
54
  <View
287
- testID="videocall-controls"
288
55
  style={[
289
- style.container,
56
+ style.controlsHolder,
290
57
  {
291
- paddingHorizontal: isDesktop('toolbar') ? 32 : 16,
58
+ paddingHorizontal: isDesktop ? '25%' : '1%',
59
+ backgroundColor: $config.SECONDARY_FONT_COLOR + 80,
292
60
  },
293
- ]}>
294
- {width >= BREAKPOINTS.md && (
295
- <View style={style.leftContent}>
296
- <View
297
- testID="layout-btn"
298
- style={{marginRight: 10}}
299
- collapsable={false}>
300
- {/**
301
- * .measure returns undefined on Android unless collapsable=false or onLayout are specified
302
- * so added collapsable property
303
- * https://github.com/facebook/react-native/issues/29712
304
- * */}
305
- <LayoutIconButton />
306
- </View>
307
- <View testID="invite-btn" style={{marginHorizontal: 10}}>
308
- <CopyJoinInfo />
309
- </View>
310
- </View>
311
- )}
312
- <View style={style.centerContent}>
313
- {$config.EVENT_MODE && rtcProps.role == ClientRole.Audience ? (
314
- <LiveStreamControls
315
- showControls={true}
316
- isDesktop={isDesktop('toolbar')}
317
- />
318
- ) : (
319
- <></>
320
- )}
61
+ ]}
62
+ onLayout={onLayout}>
63
+ {$config.EVENT_MODE && rtcProps.role == ClientRole.Audience ? (
64
+ <LiveStreamControls showControls={true} />
65
+ ) : (
321
66
  <>
322
67
  {/**
323
68
  * In event mode when raise hand feature is active
324
69
  * and audience is promoted to host, the audience can also
325
70
  * demote himself
326
71
  */}
327
- {$config.EVENT_MODE ? (
72
+ {$config.EVENT_MODE && (
328
73
  <LiveStreamControls
329
- isDesktop={isDesktop('toolbar')}
330
74
  showControls={rtcProps?.role == ClientRole.Broadcaster && !isHost}
331
75
  />
332
- ) : (
333
- <></>
334
76
  )}
335
- <View testID="localAudio-btn" style={{marginHorizontal: 10}}>
336
- <LocalAudioMute showToolTip={true} />
77
+ <View style={{alignSelf: 'center'}}>
78
+ <LocalAudioMute />
337
79
  </View>
338
80
  {!$config.AUDIO_ROOM && (
339
- <View
340
- testID="localVideo-btn"
341
- style={{
342
- marginHorizontal: 10,
343
- }}>
344
- <LocalVideoMute showToolTip={true} />
81
+ <View style={{alignSelf: 'center'}}>
82
+ <LocalVideoMute />
345
83
  </View>
346
84
  )}
347
85
  {!$config.AUDIO_ROOM && isMobileOrTablet() && (
348
- <View
349
- testID="switchCamera-btn"
350
- style={{
351
- marginHorizontal: 10,
352
- }}>
86
+ <View style={{alignSelf: 'center'}}>
353
87
  <LocalSwitchCamera />
354
88
  </View>
355
89
  )}
356
- {width > BREAKPOINTS.sm &&
357
- $config.SCREEN_SHARING &&
358
- !isMobileOrTablet() && (
359
- <View
360
- testID="screenShare-btn"
361
- style={{
362
- marginHorizontal: 10,
363
- }}>
364
- <ScreenshareButton />
365
- </View>
366
- )}
367
- {width > BREAKPOINTS.sm && isHost && $config.CLOUD_RECORDING && (
368
- <View
369
- testID="recording-btn"
370
- style={{
371
- marginHorizontal: 10,
372
- }}>
90
+ {$config.SCREEN_SHARING && !isMobileOrTablet() && (
91
+ <View style={{alignSelf: 'center'}}>
92
+ <ScreenshareButton />
93
+ </View>
94
+ )}
95
+ {isHost && $config.CLOUD_RECORDING && (
96
+ <View style={{alignSelf: 'center'}}>
373
97
  <Recording />
374
98
  </View>
375
99
  )}
376
100
  </>
377
- {width < BREAKPOINTS.md && (
378
- <View testID="more-btn" style={{marginHorizontal: 10}}>
379
- <MoreButton />
380
- </View>
381
- )}
382
- <View testID="endCall-btn" style={{marginHorizontal: 10}}>
383
- <LocalEndcall />
384
- </View>
101
+ )}
102
+ <View style={{alignSelf: 'center'}}>
103
+ <LocalEndcall />
385
104
  </View>
386
- {width >= BREAKPOINTS.md && <View style={style.rightContent}></View>}
387
105
  </View>
388
106
  );
389
107
  };
@@ -409,28 +127,10 @@ export const ControlsComponentsArray: ControlsComponentsArrayProps = [
409
127
  ];
410
128
 
411
129
  const style = StyleSheet.create({
412
- container: {
413
- flexDirection: 'row',
414
- justifyContent: 'space-between',
415
- paddingTop: 10,
416
- paddingBottom: 16,
417
- backgroundColor: $config.TOOLBAR_COLOR,
418
- },
419
- leftContent: {
420
- flex: 1,
421
- flexDirection: 'row',
422
- justifyContent: 'flex-start',
423
- alignItems: 'center',
424
- },
425
- centerContent: {
426
- zIndex: 2,
427
- flex: 1,
428
- flexDirection: 'row',
429
- justifyContent: 'center',
430
- alignItems: 'center',
431
- },
432
- rightContent: {
433
- flex: 1,
130
+ // @ts-ignore
131
+ controlsHolder: {
132
+ flex: isWebInternal() ? 1.3 : 1.6,
133
+ ...controlsHolder,
434
134
  },
435
135
  });
436
136