agora-appbuilder-core 3.0.9 → 3.0.10

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 +6 -0
  2. package/package.json +2 -2
  3. package/template/_package-lock.json +5871 -4728
  4. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +4 -0
  5. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +18 -0
  6. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +2 -0
  7. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +30 -26
  8. package/template/agora-rn-uikit/src/Controls/Icons.ts +30 -83
  9. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +6 -6
  10. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +11 -0
  11. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +1 -0
  12. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +1 -0
  13. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +24 -0
  14. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +1 -0
  15. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +1 -0
  16. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +1 -0
  17. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +2 -0
  18. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +1 -0
  19. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +1 -0
  20. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +1 -0
  21. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +11 -0
  22. package/template/agora-rn-uikit/src/Reducer/index.ts +3 -0
  23. package/template/agora-rn-uikit/src/Rtc/Create.tsx +89 -1
  24. package/template/agora-rn-uikit/src/RtcConfigure.tsx +39 -2
  25. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +15 -5
  26. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +15 -9
  27. package/template/agora-rn-uikit/src/index.ts +3 -1
  28. package/template/android/app/build.gradle +1 -0
  29. package/template/android/app/src/main/AndroidManifest.xml +22 -15
  30. package/template/android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  31. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  32. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +50 -0
  33. package/template/android/app/src/main/res/values/colors.xml +7 -0
  34. package/template/android/build.gradle +3 -3
  35. package/template/babel.config.js +1 -0
  36. package/template/bridge/rtc/webNg/RtcEngine.ts +110 -17
  37. package/template/customization-api/sub-components.ts +1 -1
  38. package/template/customization-api/typeDefinition.ts +2 -1
  39. package/template/electron/index.html +27 -27
  40. package/template/electron/renderer/index.js +1 -0
  41. package/template/global.d.ts +25 -4
  42. package/template/index.rsdk.tsx +1 -0
  43. package/template/index.web.js +2 -1
  44. package/template/index.wsdk.tsx +1 -1
  45. package/template/ios/HelloWorld/Info.plist +14 -1
  46. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +17 -0
  47. package/template/metro.config.js +1 -1
  48. package/template/package.json +18 -7
  49. package/template/react-native-toast-message/index.d.ts +43 -43
  50. package/template/react-native-toast-message/src/colors/index.js +3 -2
  51. package/template/react-native-toast-message/src/components/base/index.js +46 -59
  52. package/template/react-native-toast-message/src/components/base/styles.js +16 -32
  53. package/template/react-native-toast-message/src/components/checkbox.js +178 -0
  54. package/template/react-native-toast-message/src/components/error.js +3 -2
  55. package/template/react-native-toast-message/src/components/info.js +3 -2
  56. package/template/react-native-toast-message/src/components/success.js +3 -2
  57. package/template/react-native-toast-message/src/index.js +122 -31
  58. package/template/react-native-toast-message/src/index.sdk.tsx +125 -35
  59. package/template/react-native-toast-message/src/styles.js +3 -4
  60. package/template/react-native-toast-message/src/styles.sdk.ts +3 -4
  61. package/template/react-native.config.js +7 -0
  62. package/template/src/App.tsx +6 -0
  63. package/template/src/AppWrapper.tsx +63 -28
  64. package/template/src/assets/font-styles.css +329 -0
  65. package/template/src/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  66. package/template/src/assets/fonts/icomoon.ttf +0 -0
  67. package/template/src/assets/permission.png +0 -0
  68. package/template/src/assets/selection.json +1 -0
  69. package/template/src/atoms/ActionMenu.tsx +236 -0
  70. package/template/src/atoms/AnimatedActiveSpeaker.native.tsx +71 -0
  71. package/template/src/atoms/AnimatedActiveSpeaker.tsx +84 -0
  72. package/template/src/atoms/AnimatedRings.native.tsx +68 -0
  73. package/template/src/atoms/AnimatedRings.tsx +70 -0
  74. package/template/src/atoms/Card.tsx +61 -0
  75. package/template/src/atoms/CircularProgress.native.tsx +121 -0
  76. package/template/src/atoms/CircularProgress.tsx +102 -0
  77. package/template/src/atoms/CustomIcon.tsx +88 -0
  78. package/template/src/atoms/CustomSwitch.tsx +287 -0
  79. package/template/src/atoms/Dropdown.tsx +306 -0
  80. package/template/src/atoms/HorizontalRule.tsx +3 -1
  81. package/template/src/atoms/IconButton.tsx +162 -0
  82. package/template/src/atoms/ImageIcon.tsx +98 -0
  83. package/template/src/atoms/InfoBubble.tsx +291 -0
  84. package/template/src/atoms/Input.tsx +87 -0
  85. package/template/src/atoms/InviteInfo.tsx +166 -0
  86. package/template/src/atoms/LinkButton.tsx +28 -0
  87. package/template/src/atoms/OutlineButton.tsx +61 -0
  88. package/template/src/atoms/ParticipantsCount.tsx +73 -0
  89. package/template/src/atoms/Popup.tsx +147 -0
  90. package/template/src/atoms/PrimaryButton.tsx +51 -26
  91. package/template/src/atoms/RecordingInfo.tsx +49 -0
  92. package/template/src/atoms/SecondaryButton.tsx +8 -5
  93. package/template/src/atoms/Spacer.tsx +22 -0
  94. package/template/src/atoms/TertiaryButton.tsx +78 -0
  95. package/template/src/atoms/TextInput.tsx +12 -14
  96. package/template/src/atoms/Toggle.tsx +47 -0
  97. package/template/src/atoms/Tooltip.native.tsx +65 -0
  98. package/template/src/atoms/Tooltip.tsx +94 -0
  99. package/template/src/atoms/UserAvatar.tsx +60 -0
  100. package/template/src/components/Chat.tsx +86 -214
  101. package/template/src/components/ChatContext.ts +8 -1
  102. package/template/src/components/ColorConfigure.tsx +1 -1
  103. package/template/src/components/ColorContext.ts +1 -1
  104. package/template/src/components/CommonStyles.ts +44 -0
  105. package/template/src/components/Controls.tsx +342 -42
  106. package/template/src/components/{Controls.native.tsx → Controls1.native.tsx} +6 -4
  107. package/template/src/components/DeviceConfigure.tsx +461 -101
  108. package/template/src/components/DeviceContext.tsx +8 -4
  109. package/template/src/components/EventsConfigure.tsx +144 -7
  110. package/template/src/components/GraphQLProvider.tsx +1 -1
  111. package/template/src/components/GridVideo.tsx +59 -44
  112. package/template/src/components/HostControlView.tsx +114 -35
  113. package/template/src/components/Navbar.tsx +216 -398
  114. package/template/src/components/NetworkQualityContext.tsx +20 -20
  115. package/template/src/components/ParticipantsView.tsx +177 -154
  116. package/template/src/components/PinnedVideo.tsx +207 -120
  117. package/template/src/components/Precall.native.tsx +358 -119
  118. package/template/src/components/Precall.tsx +269 -135
  119. package/template/src/components/RTMConfigure.tsx +27 -4
  120. package/template/src/components/Router.electron.ts +1 -0
  121. package/template/src/components/Router.native.ts +1 -0
  122. package/template/src/components/Router.sdk.ts +1 -0
  123. package/template/src/components/Router.ts +1 -0
  124. package/template/src/components/Settings.tsx +26 -95
  125. package/template/src/components/SettingsView.tsx +251 -56
  126. package/template/src/components/Share.tsx +302 -273
  127. package/template/src/components/StorageContext.tsx +30 -3
  128. package/template/src/components/ToastComponent.tsx +8 -0
  129. package/template/src/components/chat-messages/useChatMessages.tsx +69 -23
  130. package/template/src/components/chat-ui/useChatUIControl.tsx +7 -0
  131. package/template/src/components/common/Error.tsx +20 -6
  132. package/template/src/components/common/Logo.tsx +16 -15
  133. package/template/src/components/contexts/LiveStreamDataContext.tsx +10 -5
  134. package/template/src/components/contexts/VideoMeetingDataContext.tsx +37 -7
  135. package/template/src/components/livestream/LiveStreamContext.tsx +270 -36
  136. package/template/src/components/livestream/Types.ts +39 -14
  137. package/template/src/components/livestream/index.ts +1 -0
  138. package/template/src/components/livestream/views/LiveStreamControls.tsx +12 -4
  139. package/template/src/components/participants/AllAudienceParticipants.tsx +101 -30
  140. package/template/src/components/participants/AllHostParticipants.tsx +103 -34
  141. package/template/src/components/participants/Participant.tsx +302 -0
  142. package/template/src/components/participants/ParticipantName.tsx +13 -7
  143. package/template/src/components/participants/ParticipantSectionTitle.tsx +35 -10
  144. package/template/src/components/participants/ScreenshareParticipants.tsx +144 -12
  145. package/template/src/components/participants/UserActionMenuOptions.tsx +398 -0
  146. package/template/src/components/popups/InvitePopup.tsx +115 -0
  147. package/template/src/components/popups/StopRecordingPopup.tsx +114 -0
  148. package/template/src/components/precall/LocalMute.tsx +84 -14
  149. package/template/src/components/precall/{LocalMute.native.tsx → LocalMute1.native.tsx} +21 -5
  150. package/template/src/components/precall/PermissionHelper.native.tsx +5 -0
  151. package/template/src/components/precall/PermissionHelper.tsx +126 -0
  152. package/template/src/components/precall/PreCallSettings.tsx +52 -0
  153. package/template/src/components/precall/VideoPreview.native.tsx +48 -3
  154. package/template/src/components/precall/VideoPreview.tsx +163 -7
  155. package/template/src/components/precall/joinCallBtn.tsx +15 -2
  156. package/template/src/components/precall/meetingTitle.tsx +15 -12
  157. package/template/src/components/precall/selectDevice.tsx +1 -21
  158. package/template/src/components/precall/textInput.tsx +32 -4
  159. package/template/src/components/precall/usePreCall.tsx +16 -0
  160. package/template/src/components/styles.ts +42 -21
  161. package/template/src/components/useShareLink.tsx +12 -14
  162. package/template/src/components/useToast.tsx +41 -0
  163. package/template/src/components/useVideoCall.tsx +65 -0
  164. package/template/src/language/default-labels/precallScreenLabels.ts +3 -3
  165. package/template/src/pages/Authenticate.tsx +5 -15
  166. package/template/src/pages/Create.tsx +293 -165
  167. package/template/src/pages/Endcall.tsx +148 -0
  168. package/template/src/pages/Join.tsx +93 -67
  169. package/template/src/pages/VideoCall.tsx +89 -64
  170. package/template/src/pages/video-call/ActionSheet.native.tsx +215 -0
  171. package/template/src/pages/video-call/ActionSheet.tsx +226 -0
  172. package/template/src/pages/video-call/ActionSheetContent.tsx +479 -0
  173. package/template/src/pages/video-call/ActionSheetHandle.tsx +38 -0
  174. package/template/src/pages/video-call/ActionSheetStyles.css +138 -0
  175. package/template/src/pages/video-call/DefaultLayouts.ts +4 -4
  176. package/template/src/pages/video-call/NameWithMicIcon.tsx +120 -44
  177. package/template/src/pages/video-call/RenderComponent.tsx +3 -2
  178. package/template/src/pages/video-call/SidePanelHeader.tsx +190 -0
  179. package/template/src/pages/video-call/VideoCallMobileView.tsx +139 -0
  180. package/template/src/pages/video-call/VideoCallScreen.native.tsx +37 -0
  181. package/template/src/pages/video-call/VideoCallScreen.tsx +45 -9
  182. package/template/src/pages/video-call/VideoComponent.tsx +18 -3
  183. package/template/src/pages/video-call/VideoRenderer.tsx +218 -60
  184. package/template/src/rtm-events/constants.ts +2 -0
  185. package/template/src/subComponents/ChatBubble.tsx +123 -83
  186. package/template/src/subComponents/ChatContainer.tsx +257 -84
  187. package/template/src/subComponents/ChatInput.ios.tsx +237 -0
  188. package/template/src/subComponents/ChatInput.tsx +61 -46
  189. package/template/src/subComponents/Checkbox.native.tsx +16 -5
  190. package/template/src/subComponents/Checkbox.tsx +2 -2
  191. package/template/src/subComponents/CopyJoinInfo.tsx +36 -58
  192. package/template/src/subComponents/EndcallPopup.tsx +107 -0
  193. package/template/src/subComponents/FallbackLogo.tsx +122 -40
  194. package/template/src/subComponents/LanguageSelector.tsx +1 -1
  195. package/template/src/subComponents/LayoutIconButton.tsx +201 -0
  196. package/template/src/subComponents/LayoutIconDropdown.tsx +131 -134
  197. package/template/src/subComponents/{LayoutIconDropdown.native.tsx → LayoutIconDropdown1.native.tsx} +4 -18
  198. package/template/src/subComponents/LocalAudioMute.tsx +119 -27
  199. package/template/src/subComponents/LocalEndCall.tsx +71 -33
  200. package/template/src/subComponents/LocalSwitchCamera.tsx +17 -30
  201. package/template/src/subComponents/LocalVideoMute.tsx +117 -27
  202. package/template/src/subComponents/Logo.tsx +3 -4
  203. package/template/src/subComponents/LogoutButton.tsx +1 -1
  204. package/template/src/subComponents/NetworkQualityPill.tsx +60 -63
  205. package/template/src/subComponents/OpenInNativeButton.tsx +3 -3
  206. package/template/src/subComponents/Recording.tsx +28 -29
  207. package/template/src/subComponents/RemoteAudioMute.tsx +83 -29
  208. package/template/src/subComponents/RemoteEndCall.tsx +8 -5
  209. package/template/src/subComponents/RemoteMutePopup.tsx +193 -0
  210. package/template/src/subComponents/RemoteVideoMute.tsx +74 -21
  211. package/template/src/subComponents/RemoveMeetingPopup.tsx +109 -0
  212. package/template/src/subComponents/RemoveScreensharePopup.tsx +109 -0
  213. package/template/src/subComponents/ScreenShareNotice.tsx +83 -8
  214. package/template/src/subComponents/SelectDevice.tsx +404 -61
  215. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +207 -0
  216. package/template/src/subComponents/SelectOAuth.tsx +9 -8
  217. package/template/src/subComponents/SidePanelHeader.tsx +112 -0
  218. package/template/src/subComponents/ToastConfig.tsx +150 -10
  219. package/template/src/subComponents/chat/ChatParticipants.tsx +187 -78
  220. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +95 -32
  221. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +29 -33
  222. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +6 -6
  223. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -11
  224. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +17 -10
  225. package/template/src/subComponents/recording/useRecording.tsx +79 -27
  226. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +52 -70
  227. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +11 -2
  228. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +26 -4
  229. package/template/src/theme/index.ts +46 -0
  230. package/template/src/utils/PlatformWrapper.tsx +21 -0
  231. package/template/src/utils/common.tsx +155 -1
  232. package/template/src/utils/hexadecimalTransparency.ts +108 -0
  233. package/template/src/utils/index.tsx +19 -0
  234. package/template/src/utils/isMobileOrTablet.ts +7 -2
  235. package/template/src/utils/pendingStateUpdateHelper.ts +19 -0
  236. package/template/src/utils/useButtonTemplate.tsx +1 -0
  237. package/template/src/utils/useFocus.tsx +46 -0
  238. package/template/src/utils/useIsActiveSpeaker.ts +27 -0
  239. package/template/src/utils/useIsHandRaised.ts +13 -0
  240. package/template/src/utils/useMuteToggleLocal.ts +54 -3
  241. package/template/src/utils/useRemoteEndScreenshare.ts +26 -0
  242. package/template/src/utils/useRemoteRequest.ts +84 -0
  243. package/template/web/index.html +5 -0
  244. package/template/webpack.commons.js +13 -8
  245. package/template/webpack.web.config.js +1 -0
  246. package/template/src/assets/icons.ts +0 -102
  247. package/template/src/components/participants/MeParticipant.tsx +0 -38
  248. package/template/src/components/participants/RemoteParticipants.tsx +0 -71
@@ -12,7 +12,7 @@
12
12
  import React, {createContext, useState} from 'react';
13
13
  import {UidType, useLocalUid} from '../../agora-rn-uikit';
14
14
  import useMount from './useMount';
15
- import icons from '../assets/icons';
15
+ import {IconsInterface} from '../atoms/CustomIcon';
16
16
  import {NetworkQualities} from '../language/default-labels/videoCallScreenLabels';
17
17
  import {useRtc} from 'customization-api';
18
18
 
@@ -30,54 +30,54 @@ import {useRtc} from 'customization-api';
30
30
  */
31
31
  export const networkIconsObject: {
32
32
  [key: number]: {
33
- icon: string;
33
+ icon: keyof IconsInterface;
34
34
  tint: string;
35
35
  text: NetworkQualities;
36
36
  };
37
37
  } = {
38
38
  0: {
39
- icon: icons.networkIcons['Unsupported'],
40
- tint: 'primary',
39
+ icon: 'connection-unsupported',
40
+ tint: $config.SEMANTIC_NEUTRAL,
41
41
  text: 'unknown',
42
42
  },
43
43
  1: {
44
- icon: icons.networkIcons['Excellent'],
45
- tint: '#2BD900',
44
+ icon: 'connection-good',
45
+ tint: $config.SEMANTIC_SUCCESS,
46
46
  text: 'excellent',
47
47
  },
48
48
  2: {
49
- icon: icons.networkIcons['Good'],
50
- tint: '#FFEE00',
49
+ icon: 'connection-good',
50
+ tint: $config.SEMANTIC_SUCCESS,
51
51
  text: 'good',
52
52
  },
53
53
  3: {
54
- icon: icons.networkIcons['Bad'],
55
- tint: '#F8AA00',
54
+ icon: 'connection-bad',
55
+ tint: $config.SEMANTIC_WARNING,
56
56
  text: 'bad',
57
57
  },
58
58
  4: {
59
- icon: icons.networkIcons['Bad'],
60
- tint: '#F8AA00',
59
+ icon: 'connection-bad',
60
+ tint: $config.SEMANTIC_WARNING,
61
61
  text: 'bad',
62
62
  },
63
63
  5: {
64
- icon: icons.networkIcons['VeryBad'],
65
- tint: 'red',
64
+ icon: 'connection-very-bad',
65
+ tint: $config.SEMANTIC_ERROR,
66
66
  text: 'veryBad',
67
67
  },
68
68
  6: {
69
- icon: icons.networkIcons['VeryBad'],
70
- tint: 'red',
69
+ icon: 'connection-very-bad',
70
+ tint: $config.SEMANTIC_ERROR,
71
71
  text: 'veryBad',
72
72
  },
73
73
  7: {
74
- icon: icons.networkIcons['Unsupported'],
75
- tint: 'primary',
74
+ icon: 'connection-unpublished',
75
+ tint: $config.SEMANTIC_NEUTRAL,
76
76
  text: 'unpublished',
77
77
  },
78
78
  8: {
79
- icon: icons.networkIcons['Loading'],
80
- tint: 'primary',
79
+ icon: 'connection-loading',
80
+ tint: $config.SEMANTIC_NEUTRAL,
81
81
  text: 'loading',
82
82
  },
83
83
  };
@@ -10,7 +10,7 @@
10
10
  *********************************************
11
11
  */
12
12
  import React, {useContext, useState} from 'react';
13
- import {View, Text, StyleSheet, ScrollView, Dimensions} from 'react-native';
13
+ import {View, Text, StyleSheet, ScrollView} from 'react-native';
14
14
  import {PropsContext, ClientRole} from '../../agora-rn-uikit';
15
15
  import CopyJoinInfo from '../subComponents/CopyJoinInfo';
16
16
  import ParticipantSectionTitle from './participants/ParticipantSectionTitle';
@@ -18,43 +18,77 @@ import AllHostParticipants from './participants/AllHostParticipants';
18
18
  import AllAudienceParticipants from './participants/AllAudienceParticipants';
19
19
  import CurrentLiveStreamRequestsView from '../subComponents/livestream/CurrentLiveStreamRequestsView';
20
20
  import {useString} from '../utils/useString';
21
- import {isWebInternal} from '../utils/common';
21
+ import {isMobileUA, isWebInternal, useIsSmall} from '../utils/common';
22
22
  import {useMeetingInfo} from './meeting-info/useMeetingInfo';
23
23
  import {useLiveStreamDataContext} from './contexts/LiveStreamDataContext';
24
- const ParticipantView = () => {
24
+ import {numFormatter} from '../utils';
25
+ import ChatContext from './ChatContext';
26
+ import {useSidePanel} from '../utils/useSidePanel';
27
+ import {SidePanelType} from '../subComponents/SidePanelEnum';
28
+ import TertiaryButton from '../atoms/TertiaryButton';
29
+ import HostControlView from './HostControlView';
30
+ import {ButtonTemplateName} from '../utils/useButtonTemplate';
31
+ import Spacer from '../atoms/Spacer';
32
+ import IconButton from '../atoms/IconButton';
33
+ import ThemeConfig from '../theme';
34
+ import hexadecimalTransparency from '../utils/hexadecimalTransparency';
35
+ import CommonStyles from './CommonStyles';
36
+ import SidePanelHeader, {
37
+ SidePanelStyles,
38
+ } from '../subComponents/SidePanelHeader';
39
+ import {useVideoMeetingData} from './contexts/VideoMeetingDataContext';
40
+ import {useLayout, useRender} from 'customization-api';
41
+ import {getGridLayoutName} from '../pages/video-call/DefaultLayouts';
42
+ import {PeopleHeader} from '../pages/video-call/SidePanelHeader';
43
+
44
+ const ParticipantView = (props) => {
45
+ const {activeUids} = useRender();
25
46
  const {liveStreamData, audienceUids, hostUids} = useLiveStreamDataContext();
47
+ const {
48
+ attendeeUids: attendeeUidsVideoMeeting,
49
+ hostUids: hostUidsVideoMeeting,
50
+ } = useVideoMeetingData();
51
+ const {onlineUsersCount} = useContext(ChatContext);
52
+ const {sidePanel, setSidePanel} = useSidePanel();
26
53
  const {rtcProps} = useContext(PropsContext);
54
+ const {showHeader = true} = props;
27
55
  //commented for v1 release
28
56
  // const hostLabel = useString('hostLabel')();
29
57
  // const audienceLabel = useString('audienceLabel')();
30
58
  // const participantsLabel = useString('participantsLabel')();
31
59
  const hostLabel = 'Host';
32
60
  const audienceLabel = 'Audience';
33
- const participantsLabel = 'Participants';
61
+ const attendeeLabel = 'Attendee';
62
+ const participantsLabel = `People (${numFormatter(onlineUsersCount)})`;
34
63
  const {
35
64
  data: {isHost},
36
65
  } = useMeetingInfo();
37
- const [dim, setDim] = useState([
38
- Dimensions.get('window').width,
39
- Dimensions.get('window').height,
40
- Dimensions.get('window').width > Dimensions.get('window').height,
41
- ]);
42
- const isSmall = dim[0] < 700;
66
+ const isSmall = useIsSmall();
67
+ //video meeting
68
+ const [showHostSection, setShowHostSection] = useState(true);
69
+ const [showParticipantSection, setShowParticipantSection] = useState(true);
70
+ //live streaming
71
+ const [showTempHostSection, setShowTempHostSection] = useState(true);
72
+ const [showAudienceSection, setShowAudienceSection] = useState(true);
73
+ const {currentLayout} = useLayout();
43
74
  return (
44
75
  <View
45
- style={
46
- isWebInternal()
47
- ? isSmall
48
- ? style.participantViewNative
49
- : style.participantView
50
- : style.participantViewNative
51
- }>
52
- <View style={[style.padding10]}>
53
- <View style={style.lineUnderHeading}>
54
- <Text style={style.mainHeading}>{participantsLabel}</Text>
55
- </View>
56
- </View>
57
- <ScrollView style={[style.bodyContainer, style.padding10]}>
76
+ testID="videocall-participants"
77
+ style={[
78
+ isMobileUA()
79
+ ? //mobile and mobile web
80
+ CommonStyles.sidePanelContainerNative
81
+ : isSmall()
82
+ ? // desktop minimized
83
+ CommonStyles.sidePanelContainerWebMinimzed
84
+ : // desktop maximized
85
+ CommonStyles.sidePanelContainerWeb,
86
+ isWebInternal() && !isSmall() && currentLayout === getGridLayoutName()
87
+ ? {marginVertical: 4}
88
+ : {},
89
+ ]}>
90
+ {showHeader && <PeopleHeader />}
91
+ <ScrollView style={[style.bodyContainer]}>
58
92
  {$config.EVENT_MODE ? (
59
93
  <>
60
94
  {
@@ -69,38 +103,51 @@ const ParticipantView = () => {
69
103
  */
70
104
  <>
71
105
  {/* a) Live streaming view */}
72
- <View style={style.participantsection}>
73
- <CurrentLiveStreamRequestsView
74
- p_style={style}
75
- userList={liveStreamData}
76
- />
77
- </View>
106
+ <CurrentLiveStreamRequestsView userList={liveStreamData} />
78
107
  {/* b) Host view with remote controls*/}
79
- <View style={style.participantsection}>
80
- <ParticipantSectionTitle
81
- title={hostLabel}
82
- count={hostUids.length}
108
+ <ParticipantSectionTitle
109
+ title={hostLabel}
110
+ count={hostUids.length}
111
+ isOpen={showHostSection}
112
+ onPress={() => setShowHostSection(!showHostSection)}
113
+ />
114
+ {showHostSection ? (
115
+ <AllHostParticipants
116
+ emptyMessage={'No Host has joined yet.'}
117
+ uids={hostUids}
118
+ isMobile={isSmall()}
119
+ updateActionSheet={props.updateActionSheet}
120
+ handleClose={props.handleClose}
83
121
  />
84
- <View style={style.participantContainer}>
85
- <AllHostParticipants p_style={style} isHost={isHost} />
86
- </View>
87
- </View>
122
+ ) : (
123
+ <Spacer size={1} />
124
+ )}
88
125
  </>
89
126
  ) : (
90
127
  /** New Host ( earlier was 'audience' and now is host )
91
128
  * a) Can view all hosts without remote controls
92
129
  */
93
- <View style={style.participantsection}>
130
+ <>
94
131
  <ParticipantSectionTitle
95
132
  title={hostLabel}
96
133
  count={hostUids.length}
134
+ isOpen={showTempHostSection}
135
+ onPress={() =>
136
+ setShowTempHostSection(!showTempHostSection)
137
+ }
97
138
  />
98
- <AllAudienceParticipants
99
- uids={hostUids}
100
- p_style={style}
101
- isHost={isHost}
102
- />
103
- </View>
139
+ {showTempHostSection ? (
140
+ <AllAudienceParticipants
141
+ emptyMessage={'No Host has joined yet.'}
142
+ uids={hostUids}
143
+ isMobile={isSmall()}
144
+ updateActionSheet={props.updateActionSheet}
145
+ handleClose={props.handleClose}
146
+ />
147
+ ) : (
148
+ <Spacer size={1} />
149
+ )}
150
+ </>
104
151
  ))
105
152
  }
106
153
  {
@@ -108,143 +155,119 @@ const ParticipantView = () => {
108
155
  * Audience views all hosts without remote controls
109
156
  */
110
157
  rtcProps?.role == ClientRole.Audience && (
111
- <View style={style.participantsection}>
158
+ <>
112
159
  <ParticipantSectionTitle
113
160
  title={hostLabel}
114
161
  count={hostUids.length}
162
+ isOpen={showHostSection}
163
+ onPress={() => setShowHostSection(!showHostSection)}
115
164
  />
116
- <AllAudienceParticipants
117
- uids={hostUids}
118
- p_style={style}
119
- isHost={isHost}
120
- />
121
- </View>
165
+ {showHostSection ? (
166
+ <AllAudienceParticipants
167
+ emptyMessage={'No Host has joined yet.'}
168
+ uids={hostUids}
169
+ isMobile={isSmall()}
170
+ updateActionSheet={props.updateActionSheet}
171
+ handleClose={props.handleClose}
172
+ />
173
+ ) : (
174
+ <Spacer size={1} />
175
+ )}
176
+ </>
122
177
  )
123
178
  }
124
179
  {
125
180
  /* Everyone can see audience */
126
- <View style={style.participantsection}>
181
+ <>
127
182
  <ParticipantSectionTitle
128
183
  title={audienceLabel}
129
184
  count={audienceUids.length}
185
+ isOpen={showAudienceSection}
186
+ onPress={() => setShowAudienceSection(!showAudienceSection)}
130
187
  />
131
- <AllAudienceParticipants
132
- uids={audienceUids}
133
- p_style={style}
134
- isHost={isHost}
135
- />
136
- </View>
188
+ {showAudienceSection ? (
189
+ <AllAudienceParticipants
190
+ emptyMessage={'No Audience has joined yet.'}
191
+ uids={audienceUids}
192
+ isMobile={isSmall()}
193
+ updateActionSheet={props.updateActionSheet}
194
+ handleClose={props.handleClose}
195
+ />
196
+ ) : (
197
+ <></>
198
+ )}
199
+ </>
137
200
  }
138
201
  </>
139
202
  ) : (
140
- <View style={style.participantsection}>
141
- <View style={style.participantContainer}>
142
- <AllHostParticipants p_style={style} isHost={isHost} />
143
- </View>
144
- </View>
203
+ <>
204
+ <AllHostParticipants
205
+ emptyMessage={'No Users has joined yet'}
206
+ uids={activeUids}
207
+ isMobile={isSmall()}
208
+ updateActionSheet={props.updateActionSheet}
209
+ handleClose={props.handleClose}
210
+ />
211
+ {/* <ParticipantSectionTitle
212
+ title={hostLabel}
213
+ count={hostUidsVideoMeeting.length}
214
+ isOpen={showHostSection}
215
+ onPress={() => setShowHostSection(!showHostSection)}
216
+ /> */}
217
+ {/* {showHostSection ? (
218
+ <AllHostParticipants
219
+ emptyMessage={'No Host has joined yet'}
220
+ uids={hostUidsVideoMeeting}
221
+ isMobile={isSmall()}
222
+ updateActionSheet={props.updateActionSheet}
223
+ handleClose={props.handleClose}
224
+ />
225
+ ) : (
226
+ <Spacer size={1} />
227
+ )} */}
228
+ {/* <ParticipantSectionTitle
229
+ title={attendeeLabel}
230
+ count={attendeeUidsVideoMeeting.length}
231
+ isOpen={showParticipantSection}
232
+ onPress={() => setShowParticipantSection(!showParticipantSection)}
233
+ /> */}
234
+ {/* {showParticipantSection ? (
235
+ <AllHostParticipants
236
+ emptyMessage={'No Attendee has joined yet'}
237
+ uids={attendeeUidsVideoMeeting}
238
+ isMobile={isSmall()}
239
+ updateActionSheet={props.updateActionSheet}
240
+ handleClose={props.handleClose}
241
+ />
242
+ ) : (
243
+ <></>
244
+ )} */}
245
+ </>
145
246
  )}
146
247
  </ScrollView>
147
248
 
148
- <View
149
- style={{
150
- width: '100%',
151
- height: 50,
152
- alignSelf: 'flex-end',
153
- flexDirection: 'row',
154
- alignItems: 'center',
155
- justifyContent: 'center',
156
- }}>
157
- <CopyJoinInfo showText={true} />
158
- </View>
249
+ {isHost && (
250
+ <View style={style.footer}>
251
+ {/* <CopyJoinInfo showTeritaryButton /> */}
252
+ <HostControlView />
253
+ </View>
254
+ )}
159
255
  </View>
160
256
  );
161
257
  };
162
258
 
163
259
  const style = StyleSheet.create({
164
- padding10: {
165
- padding: 10,
166
- },
167
- lineUnderHeading: {
168
- borderBottomWidth: 2,
169
- borderBottomColor: $config.PRIMARY_COLOR,
170
- },
171
- participantView: {
172
- width: '20%',
173
- minWidth: 200,
174
- maxWidth: 300,
175
- flex: 1,
176
- backgroundColor: $config.SECONDARY_FONT_COLOR,
177
- shadowColor: $config.PRIMARY_FONT_COLOR + '80',
178
- shadowOpacity: 0.5,
179
- shadowOffset: {width: -2, height: 0},
180
- shadowRadius: 3,
181
- },
182
- participantViewNative: {
183
- position: 'absolute',
184
- zIndex: 5,
185
- width: '100%',
186
- height: '100%',
187
- right: 0,
188
- top: 0,
189
- backgroundColor: $config.SECONDARY_FONT_COLOR,
190
- },
191
- bodyContainer: {
192
- flex: 1,
193
- },
194
- participantsection: {
195
- marginBottom: 25,
196
- },
197
- mainHeading: {
198
- fontSize: 20,
199
- letterSpacing: 0.8,
200
- lineHeight: 30,
201
- color: $config.PRIMARY_FONT_COLOR,
202
- },
203
- infoText: {
204
- fontSize: 12,
205
- letterSpacing: 0.8,
206
- fontStyle: 'italic',
207
- color: $config.PRIMARY_FONT_COLOR,
208
- },
209
- participantContainer: {
210
- width: '100%',
211
- display: 'flex',
212
- flexDirection: 'column',
213
- paddingTop: 10,
214
- paddingBottom: 20,
215
- },
216
- participantRow: {
260
+ footer: {
217
261
  width: '100%',
218
- display: 'flex',
262
+ padding: 12,
263
+ height: 'auto',
219
264
  flexDirection: 'row',
220
- justifyContent: 'space-between',
221
265
  alignItems: 'center',
222
- marginBottom: 5,
223
- },
224
- participantActionContainer: {
225
- flexDirection: 'row',
226
- paddingRight: 5,
227
- justifyContent: 'flex-end',
266
+ justifyContent: 'center',
267
+ backgroundColor: $config.CARD_LAYER_2_COLOR,
228
268
  },
229
- actionBtnIcon: {
230
- width: 25,
231
- height: 25,
232
- },
233
- participantText: {
234
- lineHeight: 24,
235
- fontSize: isWebInternal() ? 18 : 16,
236
- flexDirection: 'row',
237
- letterSpacing: 0.3,
238
- color: $config.PRIMARY_FONT_COLOR,
239
- fontWeight: '300',
240
- },
241
- participantTextSmall: {
242
- fontSize: isWebInternal() ? 14 : 12,
243
- },
244
- dummyView: {
245
- flex: 0.5,
246
- opacity: 0,
247
- marginHorizontal: 5,
269
+ bodyContainer: {
270
+ flex: 1,
248
271
  },
249
272
  });
250
273