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
@@ -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;