agora-appbuilder-core 3.0.9 → 4.0.0-api.1

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 (305) hide show
  1. package/Readme.md +6 -0
  2. package/package.json +2 -2
  3. package/template/_package-lock.json +5871 -4728
  4. package/template/agora-rn-uikit/src/AgoraUIKit.tsx +6 -6
  5. package/template/agora-rn-uikit/src/Contexts/ContentContext.tsx +10 -0
  6. package/template/agora-rn-uikit/src/Contexts/DispatchContext.tsx +22 -0
  7. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +10 -6
  8. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +28 -8
  9. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +7 -15
  10. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +30 -26
  11. package/template/agora-rn-uikit/src/Controls/Icons.ts +30 -83
  12. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +6 -6
  13. package/template/agora-rn-uikit/src/Controls/Local/LocalAudioMute.tsx +4 -2
  14. package/template/agora-rn-uikit/src/Controls/Local/LocalVideoMute.tsx +4 -2
  15. package/template/agora-rn-uikit/src/Controls/Local/Recording.tsx +0 -2
  16. package/template/agora-rn-uikit/src/Controls/Local/SwitchCamera.tsx +6 -6
  17. package/template/agora-rn-uikit/src/Controls/LocalControls.tsx +5 -5
  18. package/template/agora-rn-uikit/src/Controls/Remote/RemoteAudioMute.tsx +4 -4
  19. package/template/agora-rn-uikit/src/Controls/Remote/RemoteVideoMute.tsx +4 -4
  20. package/template/agora-rn-uikit/src/Controls/RemoteControls.tsx +2 -2
  21. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +6 -6
  22. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +6 -6
  23. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +23 -0
  24. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +6 -6
  25. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +7 -7
  26. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +7 -7
  27. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +10 -10
  28. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +6 -6
  29. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +6 -6
  30. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +5 -5
  31. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +11 -0
  32. package/template/agora-rn-uikit/src/Reducer/index.ts +2 -0
  33. package/template/agora-rn-uikit/src/Rtc/Create.tsx +72 -5
  34. package/template/agora-rn-uikit/src/Rtc/Join.tsx +5 -4
  35. package/template/agora-rn-uikit/src/RtcConfigure.tsx +76 -49
  36. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +17 -7
  37. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +17 -11
  38. package/template/agora-rn-uikit/src/Views/MinVideoView.tsx +2 -2
  39. package/template/agora-rn-uikit/src/index.ts +17 -9
  40. package/template/android/app/build.gradle +1 -0
  41. package/template/android/app/src/main/AndroidManifest.xml +22 -15
  42. package/template/android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  43. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  44. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +50 -0
  45. package/template/android/app/src/main/res/values/colors.xml +7 -0
  46. package/template/android/build.gradle +3 -3
  47. package/template/babel.config.js +1 -0
  48. package/template/bridge/rtc/webNg/RtcEngine.ts +110 -17
  49. package/template/customization-api/action-library.ts +10 -14
  50. package/template/customization-api/app-state.ts +4 -6
  51. package/template/customization-api/customEvents.ts +2 -2
  52. package/template/customization-api/customize.ts +1 -1
  53. package/template/customization-api/sub-components.ts +4 -12
  54. package/template/customization-api/typeDefinition.ts +15 -38
  55. package/template/customization-implementation/createHook.ts +24 -6
  56. package/template/customization-implementation/index.ts +1 -1
  57. package/template/customization-implementation/useCustomization.tsx +5 -7
  58. package/template/electron/index.html +27 -27
  59. package/template/electron/renderer/index.js +1 -0
  60. package/template/global.d.ts +26 -4
  61. package/template/index.rsdk.tsx +1 -0
  62. package/template/index.web.js +2 -1
  63. package/template/index.wsdk.tsx +9 -2
  64. package/template/ios/HelloWorld/Info.plist +14 -1
  65. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +17 -0
  66. package/template/metro.config.js +1 -1
  67. package/template/package.json +18 -7
  68. package/template/react-native-toast-message/index.d.ts +43 -43
  69. package/template/react-native-toast-message/src/colors/index.js +3 -2
  70. package/template/react-native-toast-message/src/components/base/index.js +46 -59
  71. package/template/react-native-toast-message/src/components/base/styles.js +16 -32
  72. package/template/react-native-toast-message/src/components/checkbox.js +178 -0
  73. package/template/react-native-toast-message/src/components/error.js +3 -2
  74. package/template/react-native-toast-message/src/components/info.js +3 -2
  75. package/template/react-native-toast-message/src/components/success.js +3 -2
  76. package/template/react-native-toast-message/src/index.js +122 -31
  77. package/template/react-native-toast-message/src/index.sdk.tsx +125 -35
  78. package/template/react-native-toast-message/src/styles.js +3 -4
  79. package/template/react-native-toast-message/src/styles.sdk.ts +3 -4
  80. package/template/react-native.config.js +7 -0
  81. package/template/src/App.tsx +19 -14
  82. package/template/src/AppWrapper.tsx +74 -29
  83. package/template/src/SDKAppWrapper.tsx +60 -64
  84. package/template/src/app-state/useLocalUserInfo.ts +3 -3
  85. package/template/src/assets/font-styles.css +329 -0
  86. package/template/src/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  87. package/template/src/assets/fonts/icomoon.ttf +0 -0
  88. package/template/src/assets/permission.png +0 -0
  89. package/template/src/assets/selection.json +1 -0
  90. package/template/src/atoms/ActionMenu.tsx +236 -0
  91. package/template/src/atoms/AnimatedActiveSpeaker.native.tsx +71 -0
  92. package/template/src/atoms/AnimatedActiveSpeaker.tsx +84 -0
  93. package/template/src/atoms/AnimatedRings.native.tsx +68 -0
  94. package/template/src/atoms/AnimatedRings.tsx +70 -0
  95. package/template/src/atoms/Card.tsx +61 -0
  96. package/template/src/atoms/CircularProgress.native.tsx +121 -0
  97. package/template/src/atoms/CircularProgress.tsx +102 -0
  98. package/template/src/atoms/CustomIcon.tsx +88 -0
  99. package/template/src/atoms/CustomSwitch.tsx +287 -0
  100. package/template/src/atoms/Dropdown.tsx +306 -0
  101. package/template/src/atoms/HorizontalRule.tsx +3 -1
  102. package/template/src/atoms/IconButton.tsx +162 -0
  103. package/template/src/atoms/ImageIcon.tsx +98 -0
  104. package/template/src/atoms/InfoBubble.tsx +291 -0
  105. package/template/src/atoms/Input.tsx +87 -0
  106. package/template/src/atoms/InviteInfo.tsx +166 -0
  107. package/template/src/atoms/LinkButton.tsx +28 -0
  108. package/template/src/atoms/OutlineButton.tsx +61 -0
  109. package/template/src/atoms/ParticipantsCount.tsx +74 -0
  110. package/template/src/atoms/Popup.tsx +147 -0
  111. package/template/src/atoms/PrimaryButton.tsx +51 -26
  112. package/template/src/atoms/RecordingInfo.tsx +52 -0
  113. package/template/src/atoms/SecondaryButton.tsx +8 -5
  114. package/template/src/atoms/Spacer.tsx +22 -0
  115. package/template/src/atoms/TertiaryButton.tsx +78 -0
  116. package/template/src/atoms/TextInput.tsx +12 -14
  117. package/template/src/atoms/Toggle.tsx +47 -0
  118. package/template/src/atoms/Toolbar.tsx +68 -0
  119. package/template/src/atoms/ToolbarItem.tsx +63 -0
  120. package/template/src/atoms/Tooltip.native.tsx +65 -0
  121. package/template/src/atoms/Tooltip.tsx +94 -0
  122. package/template/src/atoms/UserAvatar.tsx +60 -0
  123. package/template/src/components/Chat.tsx +164 -278
  124. package/template/src/components/ChatContext.ts +8 -1
  125. package/template/src/components/ColorConfigure.tsx +1 -1
  126. package/template/src/components/ColorContext.ts +1 -1
  127. package/template/src/components/CommonStyles.ts +44 -0
  128. package/template/src/components/Controls.tsx +331 -73
  129. package/template/src/components/{Controls.native.tsx → Controls1.native.tsx} +8 -6
  130. package/template/src/components/DeviceConfigure.tsx +511 -106
  131. package/template/src/components/DeviceContext.tsx +8 -4
  132. package/template/src/components/EventsConfigure.tsx +192 -10
  133. package/template/src/components/GraphQLProvider.tsx +1 -1
  134. package/template/src/components/GridVideo.tsx +60 -45
  135. package/template/src/components/HostControlView.tsx +114 -35
  136. package/template/src/components/Navbar.tsx +219 -437
  137. package/template/src/components/Navigation.tsx +15 -1
  138. package/template/src/components/NetworkQualityContext.tsx +22 -22
  139. package/template/src/components/ParticipantsView.tsx +178 -156
  140. package/template/src/components/PinnedVideo.tsx +206 -121
  141. package/template/src/components/Precall.native.tsx +358 -119
  142. package/template/src/components/Precall.tsx +272 -138
  143. package/template/src/components/RTMConfigure.tsx +66 -19
  144. package/template/src/components/Router.electron.ts +1 -0
  145. package/template/src/components/Router.native.ts +1 -0
  146. package/template/src/components/Router.sdk.ts +1 -0
  147. package/template/src/components/Router.ts +1 -0
  148. package/template/src/components/SdkApiContext.tsx +161 -0
  149. package/template/src/components/Settings.tsx +26 -95
  150. package/template/src/components/SettingsView.tsx +251 -56
  151. package/template/src/components/Share.tsx +305 -276
  152. package/template/src/components/StorageContext.tsx +30 -3
  153. package/template/src/components/ToastComponent.tsx +8 -0
  154. package/template/src/components/chat-messages/useChatMessages.tsx +100 -52
  155. package/template/src/components/chat-ui/useChatUIControls.tsx +76 -0
  156. package/template/src/components/common/Error.tsx +20 -6
  157. package/template/src/components/common/Logo.tsx +16 -15
  158. package/template/src/components/contexts/LiveStreamDataContext.tsx +16 -11
  159. package/template/src/components/contexts/VideoMeetingDataContext.tsx +41 -11
  160. package/template/src/components/contexts/WhiteboardContext.tsx +3 -3
  161. package/template/src/components/livestream/LiveStreamContext.tsx +284 -50
  162. package/template/src/components/livestream/Types.ts +39 -14
  163. package/template/src/components/livestream/index.ts +1 -0
  164. package/template/src/components/livestream/views/LiveStreamControls.tsx +9 -4
  165. package/template/src/components/participants/AllAudienceParticipants.tsx +102 -31
  166. package/template/src/components/participants/AllHostParticipants.tsx +106 -35
  167. package/template/src/components/participants/Participant.tsx +300 -0
  168. package/template/src/components/participants/ParticipantName.tsx +13 -7
  169. package/template/src/components/participants/ParticipantSectionTitle.tsx +35 -10
  170. package/template/src/components/participants/ScreenshareParticipants.tsx +144 -12
  171. package/template/src/components/participants/UserActionMenuOptions.tsx +396 -0
  172. package/template/src/components/popups/InvitePopup.tsx +115 -0
  173. package/template/src/components/popups/StopRecordingPopup.tsx +114 -0
  174. package/template/src/components/precall/LocalMute.tsx +84 -14
  175. package/template/src/components/precall/{LocalMute.native.tsx → LocalMute1.native.tsx} +21 -5
  176. package/template/src/components/precall/PermissionHelper.native.tsx +5 -0
  177. package/template/src/components/precall/PermissionHelper.tsx +126 -0
  178. package/template/src/components/precall/PreCallSettings.tsx +52 -0
  179. package/template/src/components/precall/VideoPreview.native.tsx +51 -6
  180. package/template/src/components/precall/VideoPreview.tsx +164 -8
  181. package/template/src/components/precall/joinCallBtn.native.tsx +2 -2
  182. package/template/src/components/precall/joinCallBtn.tsx +17 -4
  183. package/template/src/components/precall/meetingTitle.tsx +17 -14
  184. package/template/src/components/precall/selectDevice.tsx +1 -21
  185. package/template/src/components/precall/textInput.tsx +34 -6
  186. package/template/src/components/precall/usePreCall.tsx +39 -1
  187. package/template/src/components/{meeting-info/useMeetingInfo.tsx → room-info/useRoomInfo.tsx} +34 -10
  188. package/template/src/components/{meeting-info/useSetMeetingInfo.tsx → room-info/useSetRoomInfo.tsx} +12 -12
  189. package/template/src/components/styles.ts +42 -21
  190. package/template/src/components/useShareLink.tsx +19 -21
  191. package/template/src/components/useToast.tsx +41 -0
  192. package/template/src/components/useUserPreference.tsx +9 -6
  193. package/template/src/components/useVideoCall.tsx +84 -0
  194. package/template/src/language/default-labels/createScreenLabels.ts +3 -3
  195. package/template/src/language/default-labels/joinScreenLabels.ts +2 -2
  196. package/template/src/language/default-labels/precallScreenLabels.ts +3 -3
  197. package/template/src/language/default-labels/shareLinkScreenLabels.ts +5 -5
  198. package/template/src/language/default-labels/videoCallScreenLabels.ts +5 -5
  199. package/template/src/pages/Authenticate.tsx +5 -15
  200. package/template/src/pages/Create.tsx +304 -191
  201. package/template/src/pages/Endcall.tsx +148 -0
  202. package/template/src/pages/Join.tsx +96 -70
  203. package/template/src/pages/VideoCall.tsx +179 -69
  204. package/template/src/pages/video-call/ActionSheet.native.tsx +215 -0
  205. package/template/src/pages/video-call/ActionSheet.tsx +226 -0
  206. package/template/src/pages/video-call/ActionSheetContent.tsx +479 -0
  207. package/template/src/pages/video-call/ActionSheetHandle.tsx +38 -0
  208. package/template/src/pages/video-call/ActionSheetStyles.css +138 -0
  209. package/template/src/pages/video-call/DefaultLayouts.ts +6 -6
  210. package/template/src/pages/video-call/NameWithMicIcon.tsx +93 -49
  211. package/template/src/pages/video-call/RenderComponent.tsx +6 -30
  212. package/template/src/pages/video-call/SidePanelHeader.tsx +186 -0
  213. package/template/src/pages/video-call/VideoCallMobileView.tsx +138 -0
  214. package/template/src/pages/video-call/VideoCallScreen.native.tsx +37 -0
  215. package/template/src/pages/video-call/VideoCallScreen.tsx +109 -66
  216. package/template/src/pages/video-call/VideoComponent.tsx +20 -4
  217. package/template/src/pages/video-call/VideoRenderer.tsx +227 -61
  218. package/template/src/pages/video-call/index.ts +35 -7
  219. package/template/src/rtm/RTMEngine.ts +8 -0
  220. package/template/src/rtm-events/constants.ts +3 -1
  221. package/template/src/rtm-events-api/Events.ts +5 -4
  222. package/template/src/rtm-events-api/LocalEvents.ts +6 -0
  223. package/template/src/rtm-events-api/types.ts +5 -5
  224. package/template/src/subComponents/ChatBubble.tsx +125 -84
  225. package/template/src/subComponents/ChatContainer.tsx +280 -93
  226. package/template/src/subComponents/ChatInput.ios.tsx +175 -0
  227. package/template/src/subComponents/ChatInput.tsx +72 -115
  228. package/template/src/subComponents/Checkbox.native.tsx +16 -5
  229. package/template/src/subComponents/Checkbox.tsx +2 -2
  230. package/template/src/subComponents/CopyJoinInfo.tsx +36 -58
  231. package/template/src/subComponents/EndcallPopup.tsx +107 -0
  232. package/template/src/subComponents/FallbackLogo.tsx +122 -40
  233. package/template/src/subComponents/LanguageSelector.tsx +1 -1
  234. package/template/src/subComponents/LayoutIconButton.tsx +201 -0
  235. package/template/src/subComponents/LayoutIconDropdown.tsx +131 -134
  236. package/template/src/subComponents/{LayoutIconDropdown.native.tsx → LayoutIconDropdown1.native.tsx} +4 -18
  237. package/template/src/subComponents/LocalAudioMute.tsx +119 -27
  238. package/template/src/subComponents/LocalEndCall.tsx +73 -35
  239. package/template/src/subComponents/LocalSwitchCamera.tsx +19 -32
  240. package/template/src/subComponents/LocalVideoMute.tsx +117 -27
  241. package/template/src/subComponents/Logo.tsx +3 -4
  242. package/template/src/subComponents/LogoutButton.tsx +1 -1
  243. package/template/src/subComponents/NetworkQualityPill.tsx +66 -68
  244. package/template/src/subComponents/OpenInNativeButton.tsx +3 -3
  245. package/template/src/subComponents/Recording.tsx +28 -29
  246. package/template/src/subComponents/RemoteAudioMute.tsx +83 -29
  247. package/template/src/subComponents/RemoteEndCall.tsx +8 -5
  248. package/template/src/subComponents/RemoteMutePopup.tsx +193 -0
  249. package/template/src/subComponents/RemoteVideoMute.tsx +74 -21
  250. package/template/src/subComponents/RemoveMeetingPopup.tsx +109 -0
  251. package/template/src/subComponents/RemoveScreensharePopup.tsx +109 -0
  252. package/template/src/subComponents/ScreenShareNotice.tsx +83 -8
  253. package/template/src/subComponents/SelectDevice.tsx +404 -61
  254. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +207 -0
  255. package/template/src/subComponents/SelectOAuth.tsx +9 -8
  256. package/template/src/subComponents/SidePanelButtons.ts +0 -3
  257. package/template/src/subComponents/SidePanelHeader.tsx +112 -0
  258. package/template/src/subComponents/ToastConfig.tsx +150 -10
  259. package/template/src/subComponents/chat/ChatParticipants.tsx +188 -79
  260. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +97 -34
  261. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +29 -33
  262. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +8 -8
  263. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -11
  264. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +17 -10
  265. package/template/src/subComponents/recording/useRecording.tsx +81 -29
  266. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +52 -70
  267. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +23 -12
  268. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +44 -19
  269. package/template/src/theme/index.ts +46 -0
  270. package/template/src/utils/PlatformWrapper.tsx +21 -0
  271. package/template/src/utils/SdkEvents.ts +23 -14
  272. package/template/src/utils/SdkMethodEvents.ts +81 -0
  273. package/template/src/utils/common.tsx +155 -1
  274. package/template/src/utils/hexadecimalTransparency.ts +108 -0
  275. package/template/src/utils/index.tsx +19 -0
  276. package/template/src/utils/isMobileOrTablet.ts +7 -2
  277. package/template/src/utils/pendingStateUpdateHelper.ts +19 -0
  278. package/template/src/utils/useActiveSpeaker.ts +42 -0
  279. package/template/src/utils/{useCreateMeeting.ts → useCreateRoom.ts} +19 -14
  280. package/template/src/utils/{useButtonTemplate.tsx → useFocus.tsx} +19 -16
  281. package/template/src/utils/useGetMeetingPhrase.ts +10 -10
  282. package/template/src/utils/useIsAudioEnabled.ts +3 -3
  283. package/template/src/utils/useIsHandRaised.ts +13 -0
  284. package/template/src/utils/useIsPSTN.ts +3 -3
  285. package/template/src/utils/useIsVideoEnabled.ts +3 -3
  286. package/template/src/utils/{useJoinMeeting.ts → useJoinRoom.ts} +27 -21
  287. package/template/src/utils/useMutePSTN.ts +2 -2
  288. package/template/src/utils/useMuteToggleLocal.ts +58 -5
  289. package/template/src/utils/useRemoteEndCall.ts +4 -4
  290. package/template/src/utils/useRemoteEndScreenshare.ts +26 -0
  291. package/template/src/utils/useRemoteMute.ts +7 -7
  292. package/template/src/utils/useRemoteRequest.ts +84 -0
  293. package/template/src/utils/useSwitchCamera.native.tsx +25 -0
  294. package/template/src/utils/useSwitchCamera.tsx +19 -0
  295. package/template/src/utils/useToolbar.tsx +59 -0
  296. package/template/web/index.html +5 -0
  297. package/template/webpack.commons.js +13 -8
  298. package/template/webpack.rsdk.config.js +1 -2
  299. package/template/webpack.web.config.js +1 -0
  300. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +0 -10
  301. package/template/src/assets/icons.ts +0 -102
  302. package/template/src/components/chat-ui/useChatUIControl.tsx +0 -69
  303. package/template/src/components/participants/MeParticipant.tsx +0 -38
  304. package/template/src/components/participants/RemoteParticipants.tsx +0 -71
  305. package/template/src/pages/video-call/CustomUserContextHolder.tsx +0 -20
@@ -3,7 +3,7 @@ import {ScrollView, View} from 'react-native';
3
3
  import RtcConfigure from './RtcConfigure';
4
4
  import MaxVideoView from './Views/MaxVideoView';
5
5
  import MinVideoView from './Views/MinVideoView';
6
- import {RenderConsumer} from './Contexts/RenderContext';
6
+ import {ContentConsumer} from './Contexts/ContentContext';
7
7
  import {PropsProvider, PropsInterface} from './Contexts/PropsContext';
8
8
 
9
9
  import styles from './Style';
@@ -16,12 +16,12 @@ const AgoraUIKit: React.FC<PropsInterface> = (props) => {
16
16
  <PropsProvider value={props}>
17
17
  <View style={{backgroundColor: '#000', flex: 1}}>
18
18
  <RtcConfigure>
19
- <RenderConsumer>
20
- {({renderList, activeUids}) => {
19
+ <ContentConsumer>
20
+ {({defaultContent, activeUids}) => {
21
21
  const [maxUid, ...minUids] = activeUids;
22
22
  return (
23
23
  <>
24
- <MaxVideoView user={renderList[maxUid]} key={maxUid} />
24
+ <MaxVideoView user={defaultContent[maxUid]} key={maxUid} />
25
25
  <ScrollView
26
26
  showsHorizontalScrollIndicator={false}
27
27
  horizontal={true}
@@ -29,7 +29,7 @@ const AgoraUIKit: React.FC<PropsInterface> = (props) => {
29
29
  {minUids.map((minUid) => (
30
30
  <MinVideoView
31
31
  showOverlay
32
- user={renderList[minUid]}
32
+ user={defaultContent[minUid]}
33
33
  key={minUid}
34
34
  />
35
35
  ))}
@@ -37,7 +37,7 @@ const AgoraUIKit: React.FC<PropsInterface> = (props) => {
37
37
  </>
38
38
  );
39
39
  }}
40
- </RenderConsumer>
40
+ </ContentConsumer>
41
41
  <LocalControls />
42
42
  </RtcConfigure>
43
43
  </View>
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import {ContentStateInterface} from './RtcContext';
3
+
4
+ const ContentContext = React.createContext<ContentStateInterface>(
5
+ {} as ContentStateInterface,
6
+ );
7
+
8
+ export const ContentProvider = ContentContext.Provider;
9
+ export const ContentConsumer = ContentContext.Consumer;
10
+ export default ContentContext;
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import {CallbacksInterface} from './PropsContext';
3
+
4
+ export type DispatchType = <
5
+ T extends keyof CallbacksInterface,
6
+ V extends Parameters<CallbacksInterface[T]>,
7
+ >(action: {
8
+ type: T;
9
+ value: V;
10
+ }) => void;
11
+
12
+ export interface DispatchContextInterface {
13
+ dispatch: DispatchType;
14
+ }
15
+
16
+ const DispatchContext = React.createContext<DispatchContextInterface>(
17
+ {} as DispatchContextInterface,
18
+ );
19
+
20
+ export const DispatchProvider = DispatchContext.Provider;
21
+ export const DispatchConsumer = DispatchContext.Consumer;
22
+ export default DispatchContext;
@@ -1,10 +1,10 @@
1
1
  import React, {useContext, createContext} from 'react';
2
- import RenderContext from './RenderContext';
3
- import {RenderInterface} from './PropsContext';
2
+ import ContentContext from './ContentContext';
3
+ import {ContentInterface} from './PropsContext';
4
4
  import {UidType} from './RtcContext';
5
5
 
6
- export const LocalContext = createContext<RenderInterface>(
7
- {} as RenderInterface,
6
+ export const LocalContext = createContext<ContentInterface>(
7
+ {} as ContentInterface,
8
8
  );
9
9
  export const LocalProvider = LocalContext.Provider;
10
10
  export const LocalConsumer = LocalContext.Consumer;
@@ -15,8 +15,12 @@ interface LocalUserContextInterface {
15
15
  }
16
16
 
17
17
  const LocalUserContext: React.FC<LocalUserContextInterface> = (props) => {
18
- const {renderList} = useContext(RenderContext);
19
- let localUser: RenderInterface = renderList[props?.localUid];
18
+ const {defaultContent} = useContext(ContentContext);
19
+ if (!props?.localUid) {
20
+ console.error('Error: local user id is empty');
21
+ return null;
22
+ }
23
+ let localUser: ContentInterface = defaultContent[props?.localUid];
20
24
  if (!localUser) {
21
25
  console.error("Error: we couldn't find the local user data");
22
26
  return null;
@@ -32,23 +32,38 @@ export enum ToggleState {
32
32
  enabling, // disabled -> enabling -> enabled
33
33
  }
34
34
 
35
+ export enum PermissionState {
36
+ NOT_REQUESTED,
37
+ REQUESTED,
38
+ GRANTED_FOR_CAM_AND_MIC,
39
+ GRANTED_FOR_CAM_ONLY,
40
+ GRANTED_FOR_MIC_ONLY,
41
+ REJECTED,
42
+ CANCELLED,
43
+ }
44
+
35
45
  export const toggleHelper = (state: ToggleState) =>
36
46
  state === ToggleState.enabled ? ToggleState.disabled : ToggleState.enabled;
37
47
 
38
- export interface DefaultRenderInterface {
48
+ export interface DefaultContentInterface {
39
49
  uid: UidType;
40
50
  audio: ToggleState;
41
51
  video: ToggleState;
42
52
  streamType: 'high' | 'low';
43
53
  type: 'rtc';
54
+ permissionStatus?: PermissionState;
55
+ //applicable only to the screenshare
56
+ parentUid?: UidType;
44
57
  }
45
- export interface CustomRenderInterface<T> {
46
- type: T extends DefaultRenderInterface['type'] ? never : T;
58
+ export interface CustomContentInterface<T> {
59
+ type: T extends DefaultContentInterface['type'] ? never : T;
47
60
  }
48
- interface ExtenedRenderInterface extends CustomRenderInterface<string> {
61
+ interface ExtenedContentInterface extends CustomContentInterface<string> {
49
62
  [key: string]: any;
50
63
  }
51
- export type RenderInterface = DefaultRenderInterface | ExtenedRenderInterface;
64
+ export type ContentInterface =
65
+ | DefaultContentInterface
66
+ | ExtenedContentInterface;
52
67
 
53
68
  interface remoteBtnStylesInterface {
54
69
  muteRemoteAudio?: StyleProp<ViewStyle>;
@@ -107,6 +122,7 @@ export interface RtcPropsInterface {
107
122
  // };
108
123
  geoFencing?: boolean;
109
124
  audioRoom?: boolean;
125
+ activeSpeaker?: boolean;
110
126
  }
111
127
 
112
128
  export interface CallbacksInterface {
@@ -118,15 +134,19 @@ export interface CallbacksInterface {
118
134
  UserOffline: RtcEngineEvents['UserOffline'];
119
135
  SwapVideo(uid: UidType): void;
120
136
  DequeVideo(uid: UidType): void;
121
- UserMuteRemoteAudio(uid: UidType, muted: RenderInterface['audio']): void;
122
- UserMuteRemoteVideo(uid: UidType, muted: RenderInterface['video']): void;
137
+ UserMuteRemoteAudio(uid: UidType, muted: ContentInterface['audio']): void;
138
+ UserMuteRemoteVideo(uid: UidType, muted: ContentInterface['video']): void;
123
139
  LocalMuteAudio(muted: ToggleState): void;
124
140
  LocalMuteVideo(muted: ToggleState): void;
141
+ LocalPermissionState(
142
+ permissionState: ContentInterface['permissionStatus'],
143
+ ): void;
125
144
  RemoteAudioStateChanged: RtcEngineEvents['RemoteAudioStateChanged'];
126
145
  RemoteVideoStateChanged: RtcEngineEvents['RemoteVideoStateChanged'];
127
146
  JoinChannelSuccess: RtcEngineEvents['JoinChannelSuccess'];
128
- UpdateRenderList(uid: UidType, user: Partial<RenderInterface>): void;
147
+ UpdateRenderList(uid: UidType, user: Partial<ContentInterface>): void;
129
148
  AddCustomContent(uid: UidType, data: any): void;
149
+ UserPin(Uid: UidType): void;
130
150
  }
131
151
 
132
152
  export type CustomCallbacksInterface = CallbacksInterface;
@@ -1,17 +1,18 @@
1
1
  import React from 'react';
2
2
  import {CallbacksInterface} from './PropsContext';
3
3
  import RtcEngine from 'react-native-agora';
4
- import type {DualStreamMode, RenderInterface} from './PropsContext';
4
+ import type {DualStreamMode, ContentInterface} from './PropsContext';
5
5
 
6
6
  export type UidType = number;
7
7
 
8
- export interface RenderObjects {
9
- [key: number]: RenderInterface;
8
+ export interface ContentObjects {
9
+ [key: number]: ContentInterface;
10
10
  }
11
11
 
12
- export interface RenderStateInterface {
13
- renderList: RenderObjects;
12
+ export interface ContentStateInterface {
13
+ defaultContent: ContentObjects;
14
14
  activeUids: Array<UidType>;
15
+ pinnedUid?: UidType;
15
16
  lastJoinedUid?: UidType;
16
17
  }
17
18
 
@@ -20,19 +21,10 @@ export interface ActionInterface<T extends keyof CallbacksInterface> {
20
21
  value: Parameters<CallbacksInterface[T]>;
21
22
  }
22
23
 
23
- export type DispatchType = <
24
- T extends keyof CallbacksInterface,
25
- V extends Parameters<CallbacksInterface[T]>,
26
- >(action: {
27
- type: T;
28
- value: V;
29
- }) => void;
30
-
31
24
  export type ActionType<T extends keyof CallbacksInterface> = ActionInterface<T>;
32
25
 
33
26
  export interface RtcContextInterface {
34
- RtcEngine: RtcEngine;
35
- dispatch: DispatchType;
27
+ RtcEngineUnsafe: RtcEngine;
36
28
  setDualStreamMode: React.Dispatch<React.SetStateAction<DualStreamMode>>;
37
29
  }
38
30
 
@@ -5,9 +5,11 @@ import {
5
5
  StyleProp,
6
6
  TouchableOpacityProps,
7
7
  ViewStyle,
8
+ TextStyle,
8
9
  Text,
9
10
  View,
10
11
  Platform,
12
+ ImageStyle,
11
13
  } from 'react-native';
12
14
  import PropsContext from '../Contexts/PropsContext';
13
15
  import styles from '../Style';
@@ -16,9 +18,10 @@ import useImageDelay from '../hooks/useImageDelay';
16
18
  import {Either} from './types';
17
19
 
18
20
  interface BtnTemplateBasicInterface {
19
- color?: string;
20
21
  onPress?: TouchableOpacityProps['onPress'];
21
22
  style?: StyleProp<ViewStyle>;
23
+ styleText?: TextStyle;
24
+ styleIcon?: ImageStyle;
22
25
  btnText?: string;
23
26
  disabled?: boolean;
24
27
  }
@@ -41,40 +44,41 @@ const BtnTemplate: React.FC<BtnTemplateInterface> = (props) => {
41
44
  const imageRef = React.useRef(null);
42
45
 
43
46
  // This fixes the tint issue in safari browser
44
- useImageDelay(imageRef, 10, '', props?.color || '');
47
+ // useImageDelay(imageRef, 10, '', props?.color || '');
45
48
 
46
49
  return (
47
50
  <TouchableOpacity
48
- style={{width: '100%', height: '100%'}}
51
+ style={props.style}
49
52
  disabled={disabled}
50
53
  onPress={props.onPress}>
51
- <View
54
+ <Image
55
+ ref={Platform.OS === 'web' ? imageRef : undefined}
52
56
  style={[
53
- {...styles.controlBtn, ...(BtnTemplateStyles as object)},
54
- props.style as object,
55
- ]}>
56
- <Image
57
- ref={Platform.OS === 'web' ? imageRef : undefined}
58
- style={{
57
+ {
59
58
  width: '100%',
60
59
  height: '100%',
61
- opacity: disabled ? 0.4 : 1,
62
- tintColor: disabled ? 'grey' : props.color || theme || '#fff',
63
- }}
64
- resizeMode={'contain'}
65
- source={{
66
- uri:
67
- props.name && icons[props.name] ? icons[props.name] : props.icon,
68
- }}
69
- />
70
- </View>
60
+ //opacity: disabled ? 0.4 : 1,
61
+ //In new design all icons comes with filled color. so don't apply the tintColor
62
+ //tintColor: disabled ? 'grey' : props.color || theme || '#fff',
63
+ },
64
+ props?.styleIcon,
65
+ ]}
66
+ resizeMode={'contain'}
67
+ source={{
68
+ uri:
69
+ props?.name && icons[props.name] ? icons[props.name] : props.icon,
70
+ }}
71
+ />
71
72
  <Text
72
- style={{
73
- textAlign: 'center',
74
- marginTop: 5,
75
- color: disabled ? 'grey' : props.color || theme || '#fff',
76
- opacity: disabled ? 0.4 : 1,
77
- }}>
73
+ style={[
74
+ {
75
+ textAlign: 'center',
76
+ marginTop: 5,
77
+ //color: disabled ? 'grey' : props.color || theme || '#fff',
78
+ //opacity: disabled ? 0.4 : 1,
79
+ },
80
+ props?.styleText,
81
+ ]}>
78
82
  {props.btnText}
79
83
  </Text>
80
84
  </TouchableOpacity>