agora-appbuilder-core 3.0.10 → 3.0.12

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 (249) hide show
  1. package/Readme.md +0 -6
  2. package/package.json +2 -2
  3. package/template/_package-lock.json +4979 -7086
  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 -26
  36. package/template/index.js +0 -4
  37. package/template/index.rsdk.tsx +0 -1
  38. package/template/index.web.js +1 -7
  39. package/template/index.wsdk.tsx +1 -1
  40. package/template/ios/HelloWorld/Info.plist +1 -14
  41. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +0 -17
  42. package/template/metro.config.js +1 -1
  43. package/template/package.json +7 -21
  44. package/template/react-native-toast-message/index.d.ts +43 -43
  45. package/template/react-native-toast-message/src/colors/index.js +2 -3
  46. package/template/react-native-toast-message/src/components/base/index.js +59 -46
  47. package/template/react-native-toast-message/src/components/base/styles.js +32 -16
  48. package/template/react-native-toast-message/src/components/error.js +2 -3
  49. package/template/react-native-toast-message/src/components/info.js +2 -3
  50. package/template/react-native-toast-message/src/components/success.js +2 -3
  51. package/template/react-native-toast-message/src/index.js +31 -122
  52. package/template/react-native-toast-message/src/index.sdk.tsx +35 -125
  53. package/template/react-native-toast-message/src/styles.js +4 -3
  54. package/template/react-native-toast-message/src/styles.sdk.ts +4 -3
  55. package/template/src/App.tsx +0 -6
  56. package/template/src/AppWrapper.tsx +28 -63
  57. package/template/src/assets/icons.ts +102 -0
  58. package/template/src/atoms/HorizontalRule.tsx +1 -3
  59. package/template/src/atoms/PrimaryButton.tsx +26 -51
  60. package/template/src/atoms/SecondaryButton.tsx +5 -8
  61. package/template/src/atoms/TextInput.tsx +14 -12
  62. package/template/src/components/Chat.tsx +214 -86
  63. package/template/src/components/ChatContext.ts +1 -8
  64. package/template/src/components/ColorConfigure.tsx +1 -1
  65. package/template/src/components/ColorContext.ts +1 -1
  66. package/template/src/components/{Controls1.native.tsx → Controls.native.tsx} +4 -6
  67. package/template/src/components/Controls.tsx +42 -342
  68. package/template/src/components/DeviceConfigure.tsx +101 -461
  69. package/template/src/components/DeviceContext.tsx +4 -8
  70. package/template/src/components/EventsConfigure.tsx +7 -144
  71. package/template/src/components/GraphQLProvider.tsx +1 -1
  72. package/template/src/components/GridVideo.tsx +44 -59
  73. package/template/src/components/HostControlView.tsx +35 -114
  74. package/template/src/components/Navbar.tsx +398 -216
  75. package/template/src/components/NetworkQualityContext.tsx +20 -20
  76. package/template/src/components/ParticipantsView.tsx +154 -177
  77. package/template/src/components/PinnedVideo.tsx +120 -207
  78. package/template/src/components/Precall.native.tsx +119 -358
  79. package/template/src/components/Precall.tsx +135 -269
  80. package/template/src/components/RTMConfigure.tsx +4 -27
  81. package/template/src/components/Router.electron.ts +0 -1
  82. package/template/src/components/Router.native.ts +0 -1
  83. package/template/src/components/Router.sdk.ts +0 -1
  84. package/template/src/components/Router.ts +0 -1
  85. package/template/src/components/Settings.tsx +95 -26
  86. package/template/src/components/SettingsView.tsx +56 -251
  87. package/template/src/components/Share.tsx +273 -302
  88. package/template/src/components/StorageContext.tsx +3 -30
  89. package/template/src/components/chat-messages/useChatMessages.tsx +23 -69
  90. package/template/src/components/chat-ui/useChatUIControl.tsx +0 -7
  91. package/template/src/components/common/Error.tsx +6 -20
  92. package/template/src/components/common/Logo.tsx +15 -16
  93. package/template/src/components/contexts/LiveStreamDataContext.tsx +5 -10
  94. package/template/src/components/contexts/VideoMeetingDataContext.tsx +7 -37
  95. package/template/src/components/livestream/LiveStreamContext.tsx +36 -270
  96. package/template/src/components/livestream/Types.ts +14 -39
  97. package/template/src/components/livestream/index.ts +0 -1
  98. package/template/src/components/livestream/views/LiveStreamControls.tsx +4 -12
  99. package/template/src/components/participants/AllAudienceParticipants.tsx +30 -101
  100. package/template/src/components/participants/AllHostParticipants.tsx +34 -103
  101. package/template/src/components/participants/MeParticipant.tsx +38 -0
  102. package/template/src/components/participants/ParticipantName.tsx +7 -13
  103. package/template/src/components/participants/ParticipantSectionTitle.tsx +10 -35
  104. package/template/src/components/participants/RemoteParticipants.tsx +71 -0
  105. package/template/src/components/participants/ScreenshareParticipants.tsx +12 -144
  106. package/template/src/components/precall/{LocalMute1.native.tsx → LocalMute.native.tsx} +5 -21
  107. package/template/src/components/precall/LocalMute.tsx +14 -84
  108. package/template/src/components/precall/VideoPreview.native.tsx +3 -48
  109. package/template/src/components/precall/VideoPreview.tsx +7 -163
  110. package/template/src/components/precall/joinCallBtn.tsx +2 -15
  111. package/template/src/components/precall/meetingTitle.tsx +12 -15
  112. package/template/src/components/precall/selectDevice.tsx +21 -1
  113. package/template/src/components/precall/textInput.tsx +4 -32
  114. package/template/src/components/precall/usePreCall.tsx +0 -16
  115. package/template/src/components/styles.ts +21 -42
  116. package/template/src/components/useShareLink.tsx +14 -12
  117. package/template/src/language/default-labels/precallScreenLabels.ts +3 -3
  118. package/template/src/pages/Authenticate.tsx +15 -5
  119. package/template/src/pages/Create.tsx +165 -293
  120. package/template/src/pages/Join.tsx +67 -93
  121. package/template/src/pages/VideoCall.tsx +64 -89
  122. package/template/src/pages/video-call/DefaultLayouts.ts +4 -4
  123. package/template/src/pages/video-call/NameWithMicIcon.tsx +44 -120
  124. package/template/src/pages/video-call/RenderComponent.tsx +2 -3
  125. package/template/src/pages/video-call/VideoCallScreen.tsx +9 -45
  126. package/template/src/pages/video-call/VideoComponent.tsx +3 -18
  127. package/template/src/pages/video-call/VideoRenderer.tsx +60 -218
  128. package/template/src/rtm-events/constants.ts +0 -2
  129. package/template/src/subComponents/ChatBubble.tsx +83 -123
  130. package/template/src/subComponents/ChatContainer.tsx +84 -257
  131. package/template/src/subComponents/ChatInput.tsx +46 -61
  132. package/template/src/subComponents/Checkbox.native.tsx +5 -16
  133. package/template/src/subComponents/Checkbox.tsx +2 -2
  134. package/template/src/subComponents/CopyJoinInfo.tsx +58 -36
  135. package/template/src/subComponents/FallbackLogo.tsx +40 -122
  136. package/template/src/subComponents/LanguageSelector.tsx +1 -1
  137. package/template/src/subComponents/{LayoutIconDropdown1.native.tsx → LayoutIconDropdown.native.tsx} +18 -4
  138. package/template/src/subComponents/LayoutIconDropdown.tsx +134 -131
  139. package/template/src/subComponents/LocalAudioMute.tsx +27 -119
  140. package/template/src/subComponents/LocalEndCall.tsx +33 -71
  141. package/template/src/subComponents/LocalSwitchCamera.tsx +30 -17
  142. package/template/src/subComponents/LocalVideoMute.tsx +27 -117
  143. package/template/src/subComponents/Logo.tsx +4 -3
  144. package/template/src/subComponents/LogoutButton.tsx +1 -1
  145. package/template/src/subComponents/NetworkQualityPill.tsx +63 -60
  146. package/template/src/subComponents/OpenInNativeButton.tsx +3 -3
  147. package/template/src/subComponents/Recording.tsx +29 -28
  148. package/template/src/subComponents/RemoteAudioMute.tsx +29 -83
  149. package/template/src/subComponents/RemoteEndCall.tsx +5 -8
  150. package/template/src/subComponents/RemoteVideoMute.tsx +21 -74
  151. package/template/src/subComponents/ScreenShareNotice.tsx +8 -83
  152. package/template/src/subComponents/SelectDevice.tsx +61 -404
  153. package/template/src/subComponents/SelectOAuth.tsx +8 -9
  154. package/template/src/subComponents/ToastConfig.tsx +10 -150
  155. package/template/src/subComponents/chat/ChatParticipants.tsx +78 -187
  156. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -95
  157. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +33 -29
  158. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +6 -6
  159. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +11 -24
  160. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +10 -17
  161. package/template/src/subComponents/recording/useRecording.tsx +27 -79
  162. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +70 -52
  163. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +2 -11
  164. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +4 -26
  165. package/template/src/utils/common.tsx +1 -155
  166. package/template/src/utils/index.tsx +0 -19
  167. package/template/src/utils/isMobileOrTablet.ts +2 -7
  168. package/template/src/utils/useButtonTemplate.tsx +0 -1
  169. package/template/src/utils/useMuteToggleLocal.ts +3 -54
  170. package/template/web/index.html +0 -5
  171. package/template/webpack.commons.js +8 -13
  172. package/template/webpack.web.config.js +0 -1
  173. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +0 -11
  174. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +0 -24
  175. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +0 -11
  176. package/template/android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  177. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  178. package/template/android/app/src/main/res/values/colors.xml +0 -7
  179. package/template/react-native-toast-message/src/components/checkbox.js +0 -178
  180. package/template/react-native.config.js +0 -7
  181. package/template/src/assets/font-styles.css +0 -329
  182. package/template/src/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  183. package/template/src/assets/fonts/icomoon.ttf +0 -0
  184. package/template/src/assets/permission.png +0 -0
  185. package/template/src/assets/selection.json +0 -1
  186. package/template/src/atoms/ActionMenu.tsx +0 -236
  187. package/template/src/atoms/AnimatedActiveSpeaker.native.tsx +0 -71
  188. package/template/src/atoms/AnimatedActiveSpeaker.tsx +0 -84
  189. package/template/src/atoms/AnimatedRings.native.tsx +0 -68
  190. package/template/src/atoms/AnimatedRings.tsx +0 -70
  191. package/template/src/atoms/Card.tsx +0 -61
  192. package/template/src/atoms/CircularProgress.native.tsx +0 -121
  193. package/template/src/atoms/CircularProgress.tsx +0 -102
  194. package/template/src/atoms/CustomIcon.tsx +0 -88
  195. package/template/src/atoms/CustomSwitch.tsx +0 -287
  196. package/template/src/atoms/Dropdown.tsx +0 -306
  197. package/template/src/atoms/IconButton.tsx +0 -162
  198. package/template/src/atoms/ImageIcon.tsx +0 -98
  199. package/template/src/atoms/InfoBubble.tsx +0 -291
  200. package/template/src/atoms/Input.tsx +0 -87
  201. package/template/src/atoms/InviteInfo.tsx +0 -166
  202. package/template/src/atoms/LinkButton.tsx +0 -28
  203. package/template/src/atoms/OutlineButton.tsx +0 -61
  204. package/template/src/atoms/ParticipantsCount.tsx +0 -73
  205. package/template/src/atoms/Popup.tsx +0 -147
  206. package/template/src/atoms/RecordingInfo.tsx +0 -49
  207. package/template/src/atoms/Spacer.tsx +0 -22
  208. package/template/src/atoms/TertiaryButton.tsx +0 -78
  209. package/template/src/atoms/Toggle.tsx +0 -47
  210. package/template/src/atoms/Tooltip.native.tsx +0 -65
  211. package/template/src/atoms/Tooltip.tsx +0 -94
  212. package/template/src/atoms/UserAvatar.tsx +0 -60
  213. package/template/src/components/CommonStyles.ts +0 -44
  214. package/template/src/components/ToastComponent.tsx +0 -8
  215. package/template/src/components/participants/Participant.tsx +0 -302
  216. package/template/src/components/participants/UserActionMenuOptions.tsx +0 -398
  217. package/template/src/components/popups/InvitePopup.tsx +0 -115
  218. package/template/src/components/popups/StopRecordingPopup.tsx +0 -114
  219. package/template/src/components/precall/PermissionHelper.native.tsx +0 -5
  220. package/template/src/components/precall/PermissionHelper.tsx +0 -126
  221. package/template/src/components/precall/PreCallSettings.tsx +0 -52
  222. package/template/src/components/useToast.tsx +0 -41
  223. package/template/src/components/useVideoCall.tsx +0 -65
  224. package/template/src/pages/Endcall.tsx +0 -148
  225. package/template/src/pages/video-call/ActionSheet.native.tsx +0 -215
  226. package/template/src/pages/video-call/ActionSheet.tsx +0 -226
  227. package/template/src/pages/video-call/ActionSheetContent.tsx +0 -479
  228. package/template/src/pages/video-call/ActionSheetHandle.tsx +0 -38
  229. package/template/src/pages/video-call/ActionSheetStyles.css +0 -138
  230. package/template/src/pages/video-call/SidePanelHeader.tsx +0 -190
  231. package/template/src/pages/video-call/VideoCallMobileView.tsx +0 -139
  232. package/template/src/pages/video-call/VideoCallScreen.native.tsx +0 -37
  233. package/template/src/subComponents/ChatInput.ios.tsx +0 -237
  234. package/template/src/subComponents/EndcallPopup.tsx +0 -107
  235. package/template/src/subComponents/LayoutIconButton.tsx +0 -201
  236. package/template/src/subComponents/RemoteMutePopup.tsx +0 -193
  237. package/template/src/subComponents/RemoveMeetingPopup.tsx +0 -109
  238. package/template/src/subComponents/RemoveScreensharePopup.tsx +0 -109
  239. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +0 -207
  240. package/template/src/subComponents/SidePanelHeader.tsx +0 -112
  241. package/template/src/theme/index.ts +0 -46
  242. package/template/src/utils/PlatformWrapper.tsx +0 -21
  243. package/template/src/utils/hexadecimalTransparency.ts +0 -108
  244. package/template/src/utils/pendingStateUpdateHelper.ts +0 -19
  245. package/template/src/utils/useFocus.tsx +0 -46
  246. package/template/src/utils/useIsActiveSpeaker.ts +0 -27
  247. package/template/src/utils/useIsHandRaised.ts +0 -13
  248. package/template/src/utils/useRemoteEndScreenshare.ts +0 -26
  249. package/template/src/utils/useRemoteRequest.ts +0 -84
@@ -1,102 +1,36 @@
1
1
  import React, {useContext} from 'react';
2
- import {Text} from 'react-native';
2
+ import {View, Text} from 'react-native';
3
+ import RemoteEndCall from '../../subComponents/RemoteEndCall';
4
+ import ParticipantName from '../../components/participants/ParticipantName';
3
5
  import chatContext from '../ChatContext';
4
6
  import {useString} from '../../utils/useString';
5
- import {
6
- RenderInterface,
7
- UidType,
8
- useMeetingInfo,
9
- useRender,
10
- } from 'customization-api';
11
- import Participant from './Participant';
12
- import {useLiveStreamDataContext} from '../contexts/LiveStreamDataContext';
13
- import {useScreenContext} from '../contexts/ScreenShareContext';
14
- import ScreenshareParticipants from './ScreenshareParticipants';
15
- import hexadecimalTransparency from '../../utils/hexadecimalTransparency';
7
+ import {useRender} from 'customization-api';
16
8
 
17
9
  const AllAudienceParticipants = (props: any) => {
18
- const {screenShareData} = useScreenContext();
19
- const {
20
- uids,
21
- isMobile = false,
22
- handleClose,
23
- updateActionSheet,
24
- emptyMessage,
25
- } = props;
10
+ const {p_style, isHost, uids} = props;
26
11
  const {renderList} = useRender();
27
12
  const {localUid} = useContext(chatContext);
28
13
  //commented for v1 release
29
14
  //const participantListPlaceholder = useString('participantListPlaceholder')();
30
- const remoteUserDefaultLabel = 'User';
31
- const getParticipantName = (uid: UidType) => {
32
- return renderList[uid]?.name || remoteUserDefaultLabel;
33
- };
34
- const {
35
- data: {isHost},
36
- } = useMeetingInfo();
37
- const {hostUids} = useLiveStreamDataContext();
38
-
39
- const renderScreenShare = (user: RenderInterface) => {
40
- if (screenShareData[user.screenUid]?.isActive) {
41
- return (
42
- <ScreenshareParticipants
43
- user={renderList[user.screenUid]}
44
- key={user.screenUid}
45
- />
46
- );
47
- } else {
48
- <></>;
49
- }
50
- };
51
-
15
+ const participantListPlaceholder = 'No one has joined yet';
52
16
  return (
53
- <>
17
+ <View style={p_style.participantContainer}>
54
18
  {uids.length == 0 ? (
55
- emptyMessage ? (
56
- <Text
57
- style={{
58
- alignSelf: 'center',
59
- paddingVertical: 20,
60
- fontFamily: 'Source Sans Pro',
61
- fontWeight: '400',
62
- fontSize: 14,
63
- color: $config.FONT_COLOR + hexadecimalTransparency['40%'],
64
- }}>
65
- {emptyMessage}
66
- </Text>
67
- ) : (
68
- <></>
69
- )
19
+ <Text style={p_style.infoText}>{participantListPlaceholder}</Text>
70
20
  ) : (
71
21
  <>
72
- {/**Audience should see his name first */}
22
+ {/* Audience should see his name first */}
73
23
  {uids.filter((i) => i === localUid).length ? (
74
- <>
75
- <Participant
76
- isLocal={true}
77
- name={getParticipantName(localUid)}
78
- user={renderList[localUid]}
79
- isAudienceUser={
80
- $config.EVENT_MODE && hostUids.indexOf(localUid) !== -1
81
- ? false
82
- : true
83
- }
84
- showControls={
85
- (renderList[localUid]?.type === 'rtc' && isHost) ||
86
- (renderList[localUid]?.type === 'rtc' &&
87
- $config.EVENT_MODE &&
88
- hostUids.indexOf(localUid) !== -1)
89
- ? true
90
- : false
91
- }
92
- isHostUser={false}
93
- key={localUid}
94
- isMobile={isMobile}
95
- handleClose={handleClose}
96
- updateActionSheet={updateActionSheet}
97
- />
98
- {renderScreenShare(renderList[localUid])}
99
- </>
24
+ <View style={p_style.participantRow} key={'local' + 0}>
25
+ <ParticipantName value={renderList[localUid]?.name} />
26
+ {isHost && (
27
+ <View style={p_style.participantActionContainer}>
28
+ <View style={[p_style.actionBtnIcon]}>
29
+ <RemoteEndCall uid={localUid} isHost={isHost} />
30
+ </View>
31
+ </View>
32
+ )}
33
+ </View>
100
34
  ) : (
101
35
  <></>
102
36
  )}
@@ -104,25 +38,20 @@ const AllAudienceParticipants = (props: any) => {
104
38
  {uids
105
39
  .filter((i) => i !== localUid)
106
40
  .map((uid: any, index: number) => (
107
- <>
108
- <Participant
109
- isLocal={false}
110
- name={getParticipantName(uid)}
111
- user={renderList[uid]}
112
- showControls={renderList[uid]?.type === 'rtc' && isHost}
113
- isAudienceUser={true}
114
- isHostUser={false}
115
- key={uid}
116
- isMobile={isMobile}
117
- handleClose={handleClose}
118
- updateActionSheet={updateActionSheet}
119
- />
120
- {renderScreenShare(renderList[uid])}
121
- </>
41
+ <View style={p_style.participantRow} key={index}>
42
+ <ParticipantName value={renderList[uid]?.name} />
43
+ {isHost && (
44
+ <View style={p_style.participantActionContainer}>
45
+ <View style={[p_style.actionBtnIcon]}>
46
+ <RemoteEndCall uid={uid} isHost={isHost} />
47
+ </View>
48
+ </View>
49
+ )}
50
+ </View>
122
51
  ))}
123
52
  </>
124
53
  )}
125
- </>
54
+ </View>
126
55
  );
127
56
  };
128
57
 
@@ -1,122 +1,53 @@
1
1
  import React from 'react';
2
- import {Text} from 'react-native';
2
+ import MeParticipant from './MeParticipant';
3
3
  import ScreenshareParticipants from './ScreenshareParticipants';
4
- import Participant from './Participant';
4
+ import RemoteParticipants from './RemoteParticipants';
5
5
  import {useString} from '../../utils/useString';
6
- import {RenderInterface, UidType, useLocalUid} from '../../../agora-rn-uikit';
7
- import {useMeetingInfo, useRender} from 'customization-api';
8
- import Spacer from '../../atoms/Spacer';
9
- import {useVideoMeetingData} from '../contexts/VideoMeetingDataContext';
10
- import {useScreenContext} from '../contexts/ScreenShareContext';
11
- import hexadecimalTransparency from '../../utils/hexadecimalTransparency';
6
+ import {UidType, useLocalUid} from '../../../agora-rn-uikit';
7
+ import {useRender} from 'customization-api';
12
8
 
13
9
  export default function AllHostParticipants(props: any) {
10
+ const {p_style, isHost} = props;
14
11
  const localUid = useLocalUid();
15
- const {screenShareData} = useScreenContext();
16
12
  //commented for v1 release
17
13
  //const remoteUserDefaultLabel = useString('remoteUserDefaultLabel')();
18
14
  const remoteUserDefaultLabel = 'User';
19
- const {renderList} = useRender();
15
+ const {renderList, activeUids} = useRender();
20
16
  const getParticipantName = (uid: UidType) => {
21
17
  return renderList[uid]?.name || remoteUserDefaultLabel;
22
18
  };
23
- const {hostUids} = useVideoMeetingData();
24
- const {
25
- data: {isHost},
26
- } = useMeetingInfo();
27
- const {
28
- isMobile = false,
29
- handleClose,
30
- updateActionSheet,
31
- uids,
32
- emptyMessage,
33
- } = props;
34
-
35
- const renderScreenShare = (user: RenderInterface) => {
36
- if (screenShareData[user.screenUid]?.isActive) {
37
- return (
38
- <ScreenshareParticipants
39
- user={renderList[user.screenUid]}
40
- key={user.screenUid}
41
- />
42
- );
43
- } else {
44
- <></>;
45
- }
46
- };
47
19
 
48
20
  return (
49
21
  <>
50
- {uids.length == 0 ? (
51
- emptyMessage ? (
52
- <Text
53
- style={{
54
- alignSelf: 'center',
55
- paddingVertical: 20,
56
- fontFamily: 'Source Sans Pro',
57
- fontWeight: '400',
58
- fontSize: 14,
59
- color: $config.FONT_COLOR + hexadecimalTransparency['40%'],
60
- }}>
61
- {emptyMessage}
62
- </Text>
63
- ) : (
64
- <></>
65
- )
66
- ) : (
67
- <>
68
- <Spacer size={4} />
69
- {/* User should see his name first */}
70
- {uids.filter((uid) => uid === localUid).length > 0 ? (
71
- <>
72
- <Participant
73
- isLocal={true}
74
- isAudienceUser={false}
75
- name={getParticipantName(localUid)}
76
- user={renderList[localUid]}
77
- showControls={true}
78
- isHostUser={hostUids.indexOf(localUid) !== -1}
79
- key={localUid}
80
- isMobile={isMobile}
81
- handleClose={handleClose}
82
- updateActionSheet={updateActionSheet}
83
- />
84
- {renderScreenShare(renderList[localUid])}
85
- </>
86
- ) : (
87
- <></>
88
- )}
89
- {/* Others Users in the call */}
90
- {uids
91
- .filter((uid) => uid !== localUid && renderList[uid].type === 'rtc')
92
- .map(
93
- (uid) => (
94
- // renderList[uid]?.type === 'screenshare' ? (
95
- // <ScreenshareParticipants
96
- // name={getParticipantName(uid)}
97
- // key={uid}
98
- // />
99
- // ) : (
100
- <>
101
- <Participant
102
- isLocal={false}
103
- isAudienceUser={false}
104
- name={getParticipantName(uid)}
105
- user={renderList[uid]}
106
- showControls={renderList[uid]?.type === 'rtc' && isHost}
107
- isHostUser={hostUids.indexOf(uid) !== -1}
108
- key={uid}
109
- isMobile={isMobile}
110
- handleClose={handleClose}
111
- updateActionSheet={updateActionSheet}
112
- />
113
- {renderScreenShare(renderList[uid])}
114
- </>
115
- ),
116
- //),
117
- )}
118
- </>
22
+ {/* User should see his name first */}
23
+ {activeUids.filter((uid) => uid === localUid).length > 0 && (
24
+ <MeParticipant
25
+ name={getParticipantName(localUid)}
26
+ p_style={p_style}
27
+ key={localUid}
28
+ />
119
29
  )}
30
+ {/* Others Users in the call */}
31
+ {activeUids
32
+ .filter((uid) => uid !== localUid)
33
+ .map((uid) =>
34
+ renderList[uid]?.type === 'screenshare' ? (
35
+ <ScreenshareParticipants
36
+ name={getParticipantName(uid)}
37
+ p_styles={p_style}
38
+ key={uid}
39
+ />
40
+ ) : (
41
+ <RemoteParticipants
42
+ name={getParticipantName(uid)}
43
+ p_styles={p_style}
44
+ user={renderList[uid]}
45
+ showControls={renderList[uid]?.type === 'rtc'}
46
+ isHost={isHost}
47
+ key={uid}
48
+ />
49
+ ),
50
+ )}
120
51
  </>
121
52
  );
122
53
  }
@@ -0,0 +1,38 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+ import React from 'react';
13
+ import {View} from 'react-native';
14
+ import {ButtonTemplateName} from '../../utils/useButtonTemplate';
15
+ import LocalAudioMute from '../../subComponents/LocalAudioMute';
16
+ import LocalVideoMute from '../../subComponents/LocalVideoMute';
17
+ import ParticipantName from './ParticipantName';
18
+
19
+ const MeParticipant = (props: any) => {
20
+ const {p_style, name} = props;
21
+
22
+ return (
23
+ <View style={p_style.participantRow}>
24
+ <ParticipantName value={name} />
25
+ <View style={p_style.participantActionContainer}>
26
+ <View style={[p_style.actionBtnIcon, {marginRight: 10}]}>
27
+ <LocalAudioMute buttonTemplateName={ButtonTemplateName.topBar} />
28
+ </View>
29
+ {!$config.AUDIO_ROOM && (
30
+ <View style={p_style.actionBtnIcon}>
31
+ <LocalVideoMute buttonTemplateName={ButtonTemplateName.topBar} />
32
+ </View>
33
+ )}
34
+ </View>
35
+ </View>
36
+ );
37
+ };
38
+ export default MeParticipant;
@@ -10,13 +10,7 @@
10
10
  *********************************************
11
11
  */
12
12
  import React from 'react';
13
- import {
14
- View,
15
- StyleSheet,
16
- useWindowDimensions,
17
- Platform,
18
- Text,
19
- } from 'react-native';
13
+ import {View, StyleSheet, useWindowDimensions, Platform} from 'react-native';
20
14
  import TextWithToolTip from '../../subComponents/TextWithTooltip';
21
15
  import {RFValue} from 'react-native-responsive-fontsize';
22
16
  import {isWebInternal} from '../../utils/common';
@@ -42,13 +36,13 @@ export default ParticipantName;
42
36
 
43
37
  const style = StyleSheet.create({
44
38
  participantText: {
45
- fontWeight: '400',
46
- fontSize: 12,
47
- lineHeight: 15,
48
- fontFamily: 'Source Sans Pro',
39
+ flex: 1,
40
+ fontWeight: '500',
49
41
  flexDirection: 'row',
50
- color: $config.FONT_COLOR,
42
+ color: $config.PRIMARY_FONT_COLOR,
43
+ lineHeight: 20,
44
+ paddingHorizontal: 5,
51
45
  textAlign: 'left',
52
- textTransform: 'capitalize',
46
+ flexShrink: 1,
53
47
  },
54
48
  });
@@ -1,54 +1,29 @@
1
- import ImageIcon from '../../atoms/ImageIcon';
2
1
  import React from 'react';
3
- import {StyleSheet, Text, TouchableOpacity, View} from 'react-native';
4
- import ThemeConfig from '../../theme';
2
+ import {StyleSheet, Text} from 'react-native';
5
3
 
6
4
  interface PropsInterface {
7
5
  title: string;
8
6
  count?: number;
9
- isOpen?: boolean;
10
- onPress?: () => void;
11
7
  }
12
8
 
13
9
  export default function ParticipantSectionTitle(props: PropsInterface) {
14
10
  const {title, count = 0} = props;
15
11
  return (
16
- <TouchableOpacity
17
- style={style.container}
18
- onPress={() => props?.onPress && props?.onPress()}>
19
- <Text style={style.subheading}>
20
- {title} {count > 0 ? '(' + count + ')' : ''}
21
- </Text>
22
- <View style={style.iconView}>
23
- <ImageIcon
24
- iconType="plain"
25
- name={props?.isOpen ? 'arrow-up' : 'arrow-down'}
26
- iconSize={20}
27
- tintColor={$config.SECONDARY_ACTION_COLOR}
28
- />
29
- </View>
30
- </TouchableOpacity>
12
+ <Text style={style.subheading}>
13
+ {title} {count > 0 && <Text style={style.count}>({count})</Text>}
14
+ </Text>
31
15
  );
32
16
  }
33
17
 
34
18
  const style = StyleSheet.create({
35
- container: {
36
- flex: 1,
37
- flexDirection: 'row',
38
- justifyContent: 'space-between',
39
- backgroundColor: $config.CARD_LAYER_2_COLOR,
40
- paddingHorizontal: 20,
41
- },
42
19
  subheading: {
43
- fontSize: 12,
44
- fontFamily: 'Source Sans Pro',
20
+ fontSize: 15,
21
+ letterSpacing: 0.8,
45
22
  fontWeight: '700',
46
- color: $config.FONT_COLOR + ThemeConfig.EmphasisPlus.medium,
47
- paddingVertical: 12,
48
- alignSelf: 'center',
23
+ color: $config.PRIMARY_FONT_COLOR,
49
24
  },
50
- iconView: {
51
- paddingVertical: 8,
52
- alignSelf: 'center',
25
+ count: {
26
+ fontSize: 13,
27
+ fontWeight: '500',
53
28
  },
54
29
  });
@@ -0,0 +1,71 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+ import React from 'react';
13
+ import {View} from 'react-native';
14
+ import RemoteAudioMute from '../../subComponents/RemoteAudioMute';
15
+ import RemoteVideoMute from '../../subComponents/RemoteVideoMute';
16
+ import {ApprovedLiveStreamControlsView} from '../../subComponents/livestream';
17
+ import RemoteEndCall from '../../subComponents/RemoteEndCall';
18
+ import ParticipantName from './ParticipantName';
19
+ import {RenderInterface} from '../../../agora-rn-uikit';
20
+
21
+ interface remoteParticipantsInterface {
22
+ p_styles: any;
23
+ name: string;
24
+ user: RenderInterface;
25
+ showControls: boolean;
26
+ isHost: boolean;
27
+ }
28
+
29
+ const RemoteParticipants = (props: remoteParticipantsInterface) => {
30
+ const {p_styles, user, name, showControls, isHost} = props;
31
+ return (
32
+ <View style={p_styles.participantRow}>
33
+ <ParticipantName value={name} />
34
+ {showControls ? (
35
+ <View style={p_styles.participantActionContainer}>
36
+ {$config.EVENT_MODE && (
37
+ <ApprovedLiveStreamControlsView
38
+ p_styles={p_styles}
39
+ uid={user.uid}
40
+ />
41
+ )}
42
+ <View style={[p_styles.actionBtnIcon, {marginRight: 10}]}>
43
+ <RemoteEndCall uid={user.uid} isHost={isHost} />
44
+ </View>
45
+ <View style={[p_styles.actionBtnIcon, {marginRight: 10}]}>
46
+ <RemoteAudioMute
47
+ uid={user.uid}
48
+ audio={user.audio}
49
+ isHost={isHost}
50
+ />
51
+ </View>
52
+ {!$config.AUDIO_ROOM && (
53
+ <View style={[p_styles.actionBtnIcon]}>
54
+ <RemoteVideoMute
55
+ uid={user.uid}
56
+ video={user.video}
57
+ isHost={isHost}
58
+ />
59
+ </View>
60
+ )}
61
+ </View>
62
+ ) : (
63
+ <></>
64
+ // <View style={p_styles.dummyView}>
65
+ // <Text>Remote screen sharing</Text>
66
+ // </View>
67
+ )}
68
+ </View>
69
+ );
70
+ };
71
+ export default RemoteParticipants;