agora-appbuilder-core 2.2.0 → 2.3.0-beta.0

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 (280) hide show
  1. package/Readme.md +7 -1
  2. package/package.json +4 -3
  3. package/template/Gulpfile.js +306 -87
  4. package/template/_gitignore +4 -1
  5. package/template/_package-lock.json +2297 -2533
  6. package/template/agora-rn-uikit/.git/HEAD +1 -1
  7. package/template/agora-rn-uikit/.git/config +3 -3
  8. package/template/agora-rn-uikit/.git/index +0 -0
  9. package/template/agora-rn-uikit/.git/logs/HEAD +2 -2
  10. package/template/agora-rn-uikit/.git/logs/refs/heads/master +1 -1
  11. package/template/agora-rn-uikit/.git/logs/refs/heads/release/fpe-1.0.0 +1 -0
  12. package/template/agora-rn-uikit/.git/logs/refs/remotes/origin/HEAD +1 -1
  13. package/template/agora-rn-uikit/.git/objects/pack/pack-f274a85fccfc9b5112d154bb3b6d34cb4b8dedde.idx +0 -0
  14. package/template/agora-rn-uikit/.git/objects/pack/{pack-0061d00cd98162a329a32b537488a35d0abeb069.pack → pack-f274a85fccfc9b5112d154bb3b6d34cb4b8dedde.pack} +0 -0
  15. package/template/agora-rn-uikit/.git/packed-refs +5 -1
  16. package/template/agora-rn-uikit/.git/refs/heads/release/fpe-1.0.0 +1 -0
  17. package/template/agora-rn-uikit/src/AgoraUIKit.tsx +23 -20
  18. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +13 -8
  19. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +25 -9
  20. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +10 -0
  21. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +11 -5
  22. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +6 -2
  23. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +1 -1
  24. package/template/agora-rn-uikit/src/Controls/Local/EndCall.tsx +6 -2
  25. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +2 -2
  26. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +2 -2
  27. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +6 -2
  28. package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +11 -6
  29. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +10 -6
  30. package/template/agora-rn-uikit/src/Controls/Remote/RemoteSwap.tsx +7 -6
  31. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +6 -5
  32. package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +3 -3
  33. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +16 -13
  34. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +16 -13
  35. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +13 -13
  36. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +16 -13
  37. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +28 -31
  38. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +48 -35
  39. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +11 -13
  40. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +11 -13
  41. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +18 -15
  42. package/template/agora-rn-uikit/src/Rtc/Create.tsx +14 -2
  43. package/template/agora-rn-uikit/src/Rtc/Join.tsx +19 -3
  44. package/template/agora-rn-uikit/src/RtcConfigure.tsx +161 -44
  45. package/template/agora-rn-uikit/src/Utils/useLocalUid.ts +8 -0
  46. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +8 -6
  47. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +8 -6
  48. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +18 -9
  49. package/template/agora-rn-uikit/src/index.ts +12 -12
  50. package/template/babel.config.js +17 -1
  51. package/template/bridge/rtc/webNg/RtcEngine.ts +34 -28
  52. package/template/bridge/rtc/webNg/SurfaceView.tsx +3 -2
  53. package/template/bridge/rtc/webNg/Types.ts +14 -0
  54. package/template/bridge/rtc/webNg/index.ts +5 -2
  55. package/template/bridge/rtm/web/index.ts +13 -7
  56. package/template/electron-builder.js +3 -2
  57. package/template/esbuild.rsdk.go +226 -0
  58. package/template/{src/subComponents/LayoutEnum.tsx → esbuildConfigTransform.js} +1 -5
  59. package/template/fpe-api/components.ts +42 -0
  60. package/template/fpe-api/context.ts +45 -0
  61. package/template/fpe-api/fpeEvents.ts +9 -0
  62. package/template/fpe-api/index.ts +21 -0
  63. package/template/fpe-api/install.ts +128 -0
  64. package/template/fpe-api/typeDefinition.ts +143 -0
  65. package/template/fpe-api/useFpe.tsx +35 -0
  66. package/template/fpe-api/utils.ts +62 -0
  67. package/template/fpe-implementation/createHook.ts +33 -0
  68. package/template/fpe-implementation/dummyFpe.ts +17 -0
  69. package/template/fpe-implementation/index.ts +1 -0
  70. package/template/fpe-todo.txt +14 -0
  71. package/template/fpe.config.js +25 -0
  72. package/template/global.d.ts +4 -0
  73. package/template/index.rsdk.tsx +27 -0
  74. package/template/index.wsdk.tsx +27 -0
  75. package/template/package-lock.json +2297 -2533
  76. package/template/package.json +28 -12
  77. package/template/react-native-toast-message/src/index.js +9 -10
  78. package/template/react-native-toast-message/src/index.wsdk.js +419 -0
  79. package/template/src/App.tsx +97 -65
  80. package/template/src/AppWrapper.tsx +79 -0
  81. package/template/src/SDKAppWrapper.tsx +67 -0
  82. package/template/src/atoms/PrimaryButton.tsx +14 -8
  83. package/template/src/atoms/TextInput.tsx +13 -5
  84. package/template/src/components/Chat.tsx +171 -139
  85. package/template/src/components/ChatContext.ts +14 -22
  86. package/template/src/components/ColorConfigure.tsx +2 -2
  87. package/template/src/components/Controls.native.tsx +72 -62
  88. package/template/src/components/Controls.tsx +90 -69
  89. package/template/src/components/DeviceConfigure.tsx +1 -1
  90. package/template/src/components/DeviceContext.tsx +14 -7
  91. package/template/src/components/GraphQLProvider.tsx +9 -2
  92. package/template/src/components/GridVideo.tsx +20 -159
  93. package/template/src/components/HostControlView.tsx +54 -15
  94. package/template/src/components/Navbar.tsx +408 -157
  95. package/template/src/components/NetworkQualityContext.tsx +29 -22
  96. package/template/src/components/ParticipantsView.tsx +97 -119
  97. package/template/src/components/PinnedVideo.tsx +41 -188
  98. package/template/src/components/Precall.native.tsx +131 -97
  99. package/template/src/components/Precall.tsx +193 -158
  100. package/template/src/components/RTMConfigure.tsx +320 -398
  101. package/template/src/components/Router.sdk.ts +20 -0
  102. package/template/src/components/SessionContext.tsx +6 -3
  103. package/template/src/components/Settings.native.tsx +3 -0
  104. package/template/src/components/Settings.tsx +65 -31
  105. package/template/src/components/SettingsView.tsx +14 -8
  106. package/template/src/components/Share.tsx +188 -220
  107. package/template/src/components/StorageContext.tsx +5 -5
  108. package/template/src/components/StoreToken.tsx +5 -1
  109. package/template/src/components/chat-messages/useChatMessages.tsx +202 -0
  110. package/template/src/components/chat-notification/useChatNotification.tsx +78 -0
  111. package/template/src/components/chat-ui/useChatUIControl.tsx +66 -0
  112. package/template/src/components/common/Error.tsx +54 -0
  113. package/template/src/components/common/Logo.tsx +35 -0
  114. package/template/src/components/common/index.tsx +8 -0
  115. package/template/src/components/contexts/LiveStreamDataContext.tsx +79 -0
  116. package/template/src/components/contexts/ScreenShareContext.tsx +47 -0
  117. package/template/src/components/contexts/WhiteboardContext.tsx +59 -0
  118. package/template/src/components/dimension/DimensionContext.ts +27 -0
  119. package/template/src/components/dimension/DimensionProvider.tsx +34 -0
  120. package/template/src/components/livestream/LiveStreamContext.tsx +293 -272
  121. package/template/src/components/livestream/Types.ts +26 -7
  122. package/template/src/components/livestream/index.ts +13 -2
  123. package/template/src/components/livestream/views/LiveStreamControls.tsx +5 -1
  124. package/template/src/components/meeting-info/useMeetingInfo.tsx +63 -0
  125. package/template/src/components/meeting-info/useSetMeetingInfo.tsx +38 -0
  126. package/template/src/components/participants/AllAudienceParticipants.tsx +26 -21
  127. package/template/src/components/participants/AllHostParticipants.tsx +36 -53
  128. package/template/src/components/participants/MeParticipant.tsx +9 -10
  129. package/template/src/components/participants/ParticipantName.tsx +2 -1
  130. package/template/src/components/participants/RemoteParticipants.tsx +3 -3
  131. package/template/src/components/precall/LocalMute.native.tsx +91 -0
  132. package/template/src/components/precall/LocalMute.tsx +90 -0
  133. package/template/src/components/precall/VideoPreview.native.tsx +35 -0
  134. package/template/src/components/precall/VideoPreview.tsx +33 -0
  135. package/template/src/components/precall/index.tsx +28 -0
  136. package/template/src/components/precall/joinCallBtn.native.tsx +69 -0
  137. package/template/src/components/precall/joinCallBtn.tsx +91 -0
  138. package/template/src/components/precall/meetingTitle.tsx +26 -0
  139. package/template/src/components/precall/selectDevice.tsx +46 -0
  140. package/template/src/components/precall/textInput.tsx +43 -0
  141. package/template/src/components/precall/usePreCall.tsx +41 -0
  142. package/template/src/components/styles.ts +20 -3
  143. package/template/src/components/useShareLink.tsx +222 -0
  144. package/template/src/components/useWakeLock.tsx +3 -3
  145. package/template/src/custom-events/CustomEvents.ts +197 -0
  146. package/template/src/custom-events/index.tsx +4 -0
  147. package/template/src/custom-events/types.ts +51 -0
  148. package/template/src/language/default-labels/commonLabels.ts +21 -0
  149. package/template/src/language/default-labels/createScreenLabels.ts +22 -0
  150. package/template/src/language/default-labels/index.ts +38 -0
  151. package/template/src/language/default-labels/joinScreenLabels.ts +13 -0
  152. package/template/src/language/default-labels/precallScreenLabels.ts +33 -0
  153. package/template/src/language/default-labels/shareLinkScreenLabels.ts +44 -0
  154. package/template/src/language/default-labels/videoCallScreenLabels.ts +189 -0
  155. package/template/src/language/i18nTypes.ts +10 -0
  156. package/template/src/language/index.ts +18 -0
  157. package/template/src/language/useLanguage.tsx +92 -0
  158. package/template/src/pages/Authenticate.tsx +21 -15
  159. package/template/src/pages/Create.tsx +176 -159
  160. package/template/src/pages/Join.tsx +44 -32
  161. package/template/src/pages/VideoCall.tsx +134 -406
  162. package/template/src/pages/create/useCreate.tsx +37 -0
  163. package/template/src/pages/video-call/CustomLayout.ts +17 -0
  164. package/template/src/pages/video-call/CustomUserContextHolder.tsx +12 -0
  165. package/template/src/pages/video-call/DefaultLayouts.ts +65 -0
  166. package/template/src/pages/video-call/NameWithMicStatus.tsx +62 -0
  167. package/template/src/pages/video-call/RenderComponent.tsx +52 -0
  168. package/template/src/pages/video-call/VideoCallScreen.tsx +191 -0
  169. package/template/src/pages/video-call/VideoComponent.tsx +34 -0
  170. package/template/src/pages/video-call/VideoRenderer.tsx +86 -0
  171. package/template/src/pages/video-call/index.ts +20 -0
  172. package/template/src/rtm/RTMEngine.ts +58 -0
  173. package/template/src/rtm/utils.ts +28 -0
  174. package/template/src/rtm-events/EventUtils.ts +268 -0
  175. package/template/src/rtm-events/EventsQueue.ts +38 -0
  176. package/template/src/rtm-events/constants.ts +40 -0
  177. package/template/src/rtm-events/index.tsx +8 -0
  178. package/template/src/rtm-events/types.ts +7 -0
  179. package/template/src/subComponents/ChatBubble.tsx +18 -11
  180. package/template/src/subComponents/ChatContainer.tsx +78 -29
  181. package/template/src/subComponents/ChatInput.tsx +146 -70
  182. package/template/src/subComponents/CopyJoinInfo.tsx +52 -67
  183. package/template/src/subComponents/Error.tsx +35 -24
  184. package/template/src/subComponents/LanguageSelector.tsx +85 -0
  185. package/template/src/subComponents/LayoutIconDropdown.native.tsx +163 -0
  186. package/template/src/subComponents/LayoutIconDropdown.tsx +198 -0
  187. package/template/src/subComponents/LocalAudioMute.tsx +52 -30
  188. package/template/src/subComponents/LocalEndCall.tsx +52 -0
  189. package/template/src/subComponents/LocalSwitchCamera.tsx +61 -0
  190. package/template/src/subComponents/LocalVideoMute.tsx +48 -30
  191. package/template/src/subComponents/LogoutButton.tsx +20 -5
  192. package/template/src/subComponents/NetworkQualityPill.tsx +43 -13
  193. package/template/src/subComponents/OpenInNativeButton.tsx +3 -2
  194. package/template/src/subComponents/Recording.tsx +46 -138
  195. package/template/src/subComponents/RemoteAudioMute.tsx +30 -34
  196. package/template/src/subComponents/RemoteEndCall.tsx +18 -7
  197. package/template/src/subComponents/RemoteVideoMute.tsx +17 -9
  198. package/template/src/subComponents/ScreenShareNotice.tsx +40 -40
  199. package/template/src/subComponents/SelectDevice.tsx +88 -45
  200. package/template/src/subComponents/SelectOAuth.tsx +30 -6
  201. package/template/src/subComponents/SidePanelButtons.ts +39 -0
  202. package/template/src/subComponents/TextWithTooltip.native.tsx +2 -1
  203. package/template/src/subComponents/TextWithTooltip.tsx +15 -20
  204. package/template/src/subComponents/chat/ChatParticipants.tsx +31 -32
  205. package/template/src/subComponents/livestream/ApprovedLiveStreamControlsView.tsx +7 -3
  206. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -18
  207. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +22 -8
  208. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +12 -7
  209. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -27
  210. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +23 -26
  211. package/template/src/subComponents/livestream/index.ts +10 -2
  212. package/template/src/subComponents/recording/useRecording.tsx +209 -0
  213. package/template/src/subComponents/recording/useRecordingLayoutQuery.tsx +64 -0
  214. package/template/src/subComponents/screenshare/ScreenshareButton.native.tsx +18 -0
  215. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +59 -31
  216. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +57 -52
  217. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +97 -138
  218. package/template/src/subComponents/screenshare/useScreenshare.tsx +29 -0
  219. package/template/src/subComponents/toastConfig.tsx +25 -20
  220. package/template/src/utils/IsAttendeeUser.ts +34 -0
  221. package/template/src/utils/SdkEvents.ts +68 -0
  222. package/template/src/utils/common.tsx +40 -0
  223. package/template/src/utils/eventEmitter.ts +29 -0
  224. package/template/src/utils/getMeetingInvite.ts +30 -0
  225. package/template/src/utils/index.tsx +11 -2
  226. package/template/src/utils/isAudioEnabled.ts +29 -0
  227. package/template/src/utils/isHostUser.ts +33 -0
  228. package/template/src/utils/isMobileOrTablet.native.ts +5 -0
  229. package/template/src/utils/{mobileWebTest.tsx → isMobileOrTablet.ts} +5 -2
  230. package/template/src/utils/isPSTNUser.ts +30 -0
  231. package/template/src/utils/isSDK.sdk.ts +5 -0
  232. package/template/src/utils/isSDK.ts +5 -0
  233. package/template/src/utils/isScreenShareUser.ts +31 -0
  234. package/template/src/utils/isVideoEnabled.ts +29 -0
  235. package/template/src/utils/useButtonTemplate.tsx +43 -0
  236. package/template/src/utils/useCreateMeeting.ts +74 -0
  237. package/template/src/utils/useGetLiveStreamingRequests.ts +24 -0
  238. package/template/src/utils/useGetMeetingPhrase.ts +68 -0
  239. package/template/src/utils/useGetName.ts +20 -0
  240. package/template/src/{subComponents/screenshare/ScreenshareContext.tsx → utils/useGroupMessages.ts} +10 -7
  241. package/template/src/utils/useJoinMeeting.ts +120 -0
  242. package/template/src/utils/useLayout.tsx +40 -0
  243. package/template/src/utils/useLiveStreamingUids.ts +26 -0
  244. package/template/src/utils/useMutePSTN.ts +43 -0
  245. package/template/src/utils/useMuteToggleLocal.ts +109 -0
  246. package/template/src/utils/useNavParams.ts +6 -0
  247. package/template/src/utils/useNavigateTo.ts +8 -0
  248. package/template/src/utils/usePrivateMessages.ts +33 -0
  249. package/template/src/utils/useRemoteEndCall.ts +27 -0
  250. package/template/src/utils/useRemoteMute.ts +64 -0
  251. package/template/src/utils/useSendControlMessage.ts +51 -0
  252. package/template/src/utils/useSendMessage.ts +40 -0
  253. package/template/src/utils/useSetName.ts +20 -0
  254. package/template/src/utils/useSetUnreadMessageCount.ts +43 -0
  255. package/template/src/utils/useSidePanel.tsx +41 -0
  256. package/template/src/utils/useString.ts +61 -0
  257. package/template/src/utils/useUnreadMessageCount.ts +50 -0
  258. package/template/src/utils/useUserList.ts +26 -0
  259. package/template/tsconfig.json +4 -4
  260. package/template/tsconfig_fpeApi.json +103 -0
  261. package/template/tsconfig_rsdk_index.json +105 -0
  262. package/template/tsconfig_wsdk_index.json +104 -0
  263. package/template/webpack.commons.js +40 -16
  264. package/template/webpack.main.config.js +2 -1
  265. package/template/webpack.renderer.config.js +1 -1
  266. package/template/webpack.rsdk.config.js +33 -0
  267. package/template/webpack.ts.config.js +89 -0
  268. package/template/webpack.web.config.js +8 -1
  269. package/template/webpack.wsdk.config.js +34 -0
  270. package/template/agora-rn-uikit/.git/logs/refs/heads/ab-dev-auto +0 -1
  271. package/template/agora-rn-uikit/.git/objects/pack/pack-0061d00cd98162a329a32b537488a35d0abeb069.idx +0 -0
  272. package/template/agora-rn-uikit/.git/refs/heads/ab-dev-auto +0 -1
  273. package/template/agora-rn-uikit/src/Contexts/MaxUidContext.tsx +0 -7
  274. package/template/agora-rn-uikit/src/Contexts/MinUidContext.tsx +0 -8
  275. package/template/src/components/participants/context/ParticipantContext.tsx +0 -97
  276. package/template/src/subComponents/ScreenshareButton.tsx +0 -257
  277. package/template/src/subComponents/SwitchCamera.tsx +0 -35
  278. package/template/src/utils/hasBrandLogo.tsx +0 -3
  279. package/template/src/utils/mobileWebTest.native.tsx +0 -5
  280. package/template/src/utils/shouldAuthenticate.tsx +0 -7
@@ -10,9 +10,10 @@
10
10
  *********************************************
11
11
  */
12
12
  import React, {createContext, useContext, useState} from 'react';
13
- import {RtcContext} from '../../agora-rn-uikit';
13
+ import {RtcContext, UidType, useLocalUid} from '../../agora-rn-uikit';
14
14
  import useMount from './useMount';
15
15
  import icons from '../assets/icons';
16
+ import {NetworkQualities} from '../language/default-labels/videoCallScreenLabels';
16
17
 
17
18
  /**
18
19
  * Network Icons container object with color and string mapping to network quality stat [ 0 - 8]
@@ -30,59 +31,61 @@ export const networkIconsObject: {
30
31
  [key: number]: {
31
32
  icon: string;
32
33
  tint: string;
33
- text: string;
34
+ text: NetworkQualities;
34
35
  };
35
36
  } = {
36
37
  0: {
37
38
  icon: icons.networkIcons['Unsupported'],
38
39
  tint: 'primary',
39
- text: 'Unknown',
40
+ text: 'unknown',
40
41
  },
41
42
  1: {
42
43
  icon: icons.networkIcons['Excellent'],
43
44
  tint: '#2BD900',
44
- text: 'Excellent',
45
+ text: 'excellent',
45
46
  },
46
47
  2: {
47
48
  icon: icons.networkIcons['Good'],
48
49
  tint: '#FFEE00',
49
- text: 'Good',
50
+ text: 'good',
50
51
  },
51
52
  3: {
52
53
  icon: icons.networkIcons['Bad'],
53
54
  tint: '#F8AA00',
54
- text: 'Bad',
55
+ text: 'bad',
55
56
  },
56
57
  4: {
57
58
  icon: icons.networkIcons['Bad'],
58
59
  tint: '#F8AA00',
59
- text: 'Bad',
60
+ text: 'bad',
60
61
  },
61
62
  5: {
62
63
  icon: icons.networkIcons['VeryBad'],
63
64
  tint: 'red',
64
- text: 'Very Bad',
65
+ text: 'veryBad',
65
66
  },
66
67
  6: {
67
68
  icon: icons.networkIcons['VeryBad'],
68
69
  tint: 'red',
69
- text: 'Very Bad',
70
+ text: 'veryBad',
70
71
  },
71
72
  7: {
72
73
  icon: icons.networkIcons['Unsupported'],
73
74
  tint: 'primary',
74
- text: 'Unpublished',
75
+ text: 'unpublished',
75
76
  },
76
77
  8: {
77
78
  icon: icons.networkIcons['Loading'],
78
79
  tint: 'primary',
79
- text: 'Loading',
80
+ text: 'loading',
80
81
  },
81
82
  };
82
83
 
83
- const initNewtorkQualityStats: {[key in string | number]: number} = {
84
- local: 0,
85
- };
84
+ interface NetworkQualityStatsInterface {
85
+ [key: number]: number;
86
+ }
87
+
88
+ const initNewtorkQualityStats: NetworkQualityStatsInterface = {};
86
89
 
87
90
  const NetworkQualityContext = createContext(initNewtorkQualityStats);
88
91
 
@@ -90,15 +93,19 @@ export default NetworkQualityContext;
90
93
 
91
94
  export const NetworkQualityConsumer = NetworkQualityContext.Consumer;
92
95
 
93
- export const NetworkQualityProvider: React.FC = (props) => {
94
- const [networkQualityStats, setNetworkQualityStats] = useState(
95
- initNewtorkQualityStats,
96
- );
96
+ export const NetworkQualityProvider: React.FC = (props: {
97
+ children: React.ReactNode;
98
+ }) => {
99
+ const localUid = useLocalUid();
100
+ const [networkQualityStats, setNetworkQualityStats] =
101
+ useState<NetworkQualityStatsInterface>({
102
+ [localUid]: 0,
103
+ });
97
104
  const {RtcEngine} = useContext(RtcContext);
98
105
 
99
106
  useMount(() => {
100
107
  function handleNetworkQuality(
101
- uid: number | string,
108
+ uid: UidType,
102
109
  downlinkQuality: number,
103
110
  // Currently unused , potential use might be to take weighted average
104
111
  // of this alongside the downlink quality.
@@ -108,14 +115,14 @@ export const NetworkQualityProvider: React.FC = (props) => {
108
115
  const updatedNetworkQualityStats = {...prevNetworkQualityStats};
109
116
  if (uid === 0) {
110
117
  const displayedNetworkQuality =
111
- // check if either are unsupported (0)
112
- // if not then display whichever is poorer
118
+ // check if either are unsupported (0)
119
+ // if not then display whichever is poorer
113
120
  downlinkQuality * uplinkQuality !== 0
114
121
  ? downlinkQuality < uplinkQuality
115
122
  ? uplinkQuality
116
123
  : downlinkQuality
117
124
  : 0;
118
- updatedNetworkQualityStats['local'] = displayedNetworkQuality;
125
+ updatedNetworkQualityStats[localUid] = displayedNetworkQuality;
119
126
  } else {
120
127
  updatedNetworkQualityStats[uid] = downlinkQuality;
121
128
  }
@@ -10,42 +10,40 @@
10
10
  *********************************************
11
11
  */
12
12
  import React, {useContext, useState} from 'react';
13
- import {
14
- View,
15
- Text,
16
- StyleSheet,
17
- Platform,
18
- ScrollView,
19
- Dimensions,
20
- useWindowDimensions,
21
- } from 'react-native';
13
+ import {View, Text, StyleSheet, ScrollView, Dimensions} from 'react-native';
22
14
  import {PropsContext, ClientRole} from '../../agora-rn-uikit';
23
15
  import CopyJoinInfo from '../subComponents/CopyJoinInfo';
24
- import chatContext from './ChatContext';
25
16
  import ParticipantSectionTitle from './participants/ParticipantSectionTitle';
26
17
  import AllHostParticipants from './participants/AllHostParticipants';
27
18
  import AllAudienceParticipants from './participants/AllAudienceParticipants';
28
19
  import CurrentLiveStreamRequestsView from '../subComponents/livestream/CurrentLiveStreamRequestsView';
29
- import {
30
- ParticipantContextProvider,
31
- ParticipantContextConsumer,
32
- } from './participants/context/ParticipantContext';
20
+ import {useString} from '../utils/useString';
21
+ import {isWeb} from '../utils/common';
22
+ import {useMeetingInfo} from './meeting-info/useMeetingInfo';
23
+ import {useLiveStreamDataContext} from './contexts/LiveStreamDataContext';
33
24
 
34
- const ParticipantView = (props: any) => {
35
- const {userList} = useContext(chatContext);
25
+ const ParticipantView = () => {
26
+ const {liveStreamData, audienceUids, hostUids} = useLiveStreamDataContext();
36
27
  const {rtcProps} = useContext(PropsContext);
37
-
28
+ //commented for v1 release
29
+ // const hostLabel = useString('hostLabel')();
30
+ // const audienceLabel = useString('audienceLabel')();
31
+ // const participantsLabel = useString('participantsLabel')();
32
+ const hostLabel = 'Host';
33
+ const audienceLabel = 'Audience';
34
+ const participantsLabel = 'Participants';
35
+ const {isHost} = useMeetingInfo();
38
36
  const [dim, setDim] = useState([
39
37
  Dimensions.get('window').width,
40
38
  Dimensions.get('window').height,
41
39
  Dimensions.get('window').width > Dimensions.get('window').height,
42
40
  ]);
43
41
  const isSmall = dim[0] < 700;
44
- let fontSize = Platform.OS === 'web' ? 14 : 16;
42
+
45
43
  return (
46
44
  <View
47
45
  style={
48
- Platform.OS === 'web'
46
+ isWeb
49
47
  ? isSmall
50
48
  ? style.participantViewNative
51
49
  : style.participantView
@@ -53,117 +51,102 @@ const ParticipantView = (props: any) => {
53
51
  }>
54
52
  <View style={[style.padding10]}>
55
53
  <View style={style.lineUnderHeading}>
56
- <Text style={style.mainHeading}>Participants</Text>
54
+ <Text style={style.mainHeading}>{participantsLabel}</Text>
57
55
  </View>
58
- </View>
59
- <ScrollView style={[style.bodyContainer, style.padding10]}>
60
- {$config.EVENT_MODE ? (
61
- // Live streaming is true
62
- <ParticipantContextProvider>
63
- {/* Host and New host view */}
64
- {rtcProps?.role == ClientRole.Broadcaster &&
65
- (props.isHost ? (
66
- /**
67
- * Original Host
68
- * a) Can view streaming requests
69
- * b) Can view all hosts with remote controls
70
- */
71
- <>
72
- {/* a) Live streaming view */}
73
- <View style={style.participantsection}>
74
- <CurrentLiveStreamRequestsView
75
- p_style={style}
76
- userList={userList}
77
- />
78
- </View>
79
- {/* b) Host view with remote controls*/}
80
- <ParticipantContextConsumer>
81
- {({hostCount}) => {
82
- return (
83
- <View style={style.participantsection}>
84
- <ParticipantSectionTitle
85
- title="Host"
86
- count={hostCount}
87
- />
88
- <View style={style.participantContainer}>
89
- <AllHostParticipants
90
- p_style={style}
91
- isHost={props.isHost}
92
- />
93
- </View>
94
- </View>
95
- );
96
- }}
97
- </ParticipantContextConsumer>
98
- </>
99
- ) : (
100
- /** New Host ( earlier was 'audience' and now is host )
101
- * a) Can view all hosts without remote controls
102
- */
103
- <ParticipantContextConsumer>
104
- {({hostList, hostCount}) => {
105
- return (
56
+ <ScrollView style={[style.bodyContainer, style.padding10]}>
57
+ {$config.EVENT_MODE ? (
58
+ <>
59
+ {
60
+ /*Live streaming is true
61
+ Host and New host view */
62
+ rtcProps?.role == ClientRole.Broadcaster &&
63
+ (isHost ? (
64
+ /**
65
+ * Original Host
66
+ * a) Can view streaming requests
67
+ * b) Can view all hosts with remote controls
68
+ */
69
+ <>
70
+ {/* a) Live streaming view */}
106
71
  <View style={style.participantsection}>
107
- <ParticipantSectionTitle
108
- title="Host"
109
- count={hostCount}
110
- />
111
- <AllAudienceParticipants
72
+ <CurrentLiveStreamRequestsView
112
73
  p_style={style}
113
- participantList={hostList}
114
- isHost={props.isHost}
74
+ userList={liveStreamData}
115
75
  />
116
76
  </View>
117
- );
118
- }}
119
- </ParticipantContextConsumer>
120
- ))}
121
- {/**
122
- * Audience views all hosts without remote controls
123
- */}
124
- {rtcProps?.role == ClientRole.Audience && (
125
- <ParticipantContextConsumer>
126
- {({hostList, hostCount}) => {
127
- return (
77
+ {/* b) Host view with remote controls*/}
78
+ <View style={style.participantsection}>
79
+ <ParticipantSectionTitle
80
+ title={hostLabel}
81
+ count={hostUids.length}
82
+ />
83
+ <View style={style.participantContainer}>
84
+ <AllHostParticipants
85
+ p_style={style}
86
+ isHost={isHost}
87
+ />
88
+ </View>
89
+ </View>
90
+ </>
91
+ ) : (
92
+ /** New Host ( earlier was 'audience' and now is host )
93
+ * a) Can view all hosts without remote controls
94
+ */
128
95
  <View style={style.participantsection}>
129
- <ParticipantSectionTitle title="Host" count={hostCount} />
96
+ <ParticipantSectionTitle
97
+ title={hostLabel}
98
+ count={hostUids.length}
99
+ />
130
100
  <AllAudienceParticipants
131
- participantList={hostList}
101
+ uids={hostUids}
132
102
  p_style={style}
133
- isHost={props.isHost}
103
+ isHost={isHost}
134
104
  />
135
105
  </View>
136
- );
137
- }}
138
- </ParticipantContextConsumer>
139
- )}
140
- {/* Everyone can see audience */}
141
- <ParticipantContextConsumer>
142
- {({audienceList, audienceCount}) => {
143
- return (
106
+ ))
107
+ }
108
+ {
109
+ /**
110
+ * Audience views all hosts without remote controls
111
+ */
112
+ rtcProps?.role == ClientRole.Audience && (
144
113
  <View style={style.participantsection}>
145
114
  <ParticipantSectionTitle
146
- title="Audience"
147
- count={audienceCount}
115
+ title={hostLabel}
116
+ count={hostUids.length}
148
117
  />
149
118
  <AllAudienceParticipants
119
+ uids={hostUids}
150
120
  p_style={style}
151
- participantList={audienceList}
152
- isHost={props.isHost}
121
+ isHost={isHost}
153
122
  />
154
123
  </View>
155
- );
156
- }}
157
- </ParticipantContextConsumer>
158
- </ParticipantContextProvider>
159
- ) : (
160
- <View style={style.participantsection}>
161
- <View style={style.participantContainer}>
162
- <AllHostParticipants p_style={style} isHost={props.isHost} />
124
+ )
125
+ }
126
+ {
127
+ /* Everyone can see audience */
128
+ <View style={style.participantsection}>
129
+ <ParticipantSectionTitle
130
+ title={audienceLabel}
131
+ count={audienceUids.length}
132
+ />
133
+ <AllAudienceParticipants
134
+ uids={audienceUids}
135
+ p_style={style}
136
+ isHost={isHost}
137
+ />
138
+ </View>
139
+ }
140
+ </>
141
+ ) : (
142
+ <View style={style.participantsection}>
143
+ <View style={style.participantContainer}>
144
+ <AllHostParticipants p_style={style} isHost={isHost} />
145
+ </View>
163
146
  </View>
164
- </View>
165
- )}
166
- </ScrollView>
147
+ )}
148
+ </ScrollView>
149
+ </View>
167
150
  <View
168
151
  style={{
169
152
  width: '100%',
@@ -251,19 +234,14 @@ const style = StyleSheet.create({
251
234
  },
252
235
  participantText: {
253
236
  lineHeight: 24,
254
- fontSize: Platform.OS === 'web' ? 18 : 16,
237
+ fontSize: isWeb ? 18 : 16,
255
238
  flexDirection: 'row',
256
239
  letterSpacing: 0.3,
257
240
  color: $config.PRIMARY_FONT_COLOR,
258
241
  fontWeight: '300',
259
242
  },
260
243
  participantTextSmall: {
261
- fontSize: Platform.OS === 'web' ? 14 : 12,
262
- },
263
- dummyView: {
264
- flex: 0.5,
265
- opacity: 0,
266
- marginHorizontal: 5,
244
+ fontSize: isWeb ? 14 : 12,
267
245
  },
268
246
  dummyView: {
269
247
  flex: 0.5,