agora-appbuilder-core 3.0.8 → 4.0.0-api.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 (341) hide show
  1. package/Readme.md +6 -0
  2. package/package.json +2 -2
  3. package/template/_package-lock.json +32828 -2777
  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 +74 -7
  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 -102
  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 +97 -50
  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/.git/HEAD +0 -1
  301. package/template/agora-rn-uikit/.git/config +0 -16
  302. package/template/agora-rn-uikit/.git/description +0 -1
  303. package/template/agora-rn-uikit/.git/hooks/applypatch-msg.sample +0 -15
  304. package/template/agora-rn-uikit/.git/hooks/commit-msg.sample +0 -24
  305. package/template/agora-rn-uikit/.git/hooks/fsmonitor-watchman.sample +0 -174
  306. package/template/agora-rn-uikit/.git/hooks/post-update.sample +0 -8
  307. package/template/agora-rn-uikit/.git/hooks/pre-applypatch.sample +0 -14
  308. package/template/agora-rn-uikit/.git/hooks/pre-commit.sample +0 -49
  309. package/template/agora-rn-uikit/.git/hooks/pre-merge-commit.sample +0 -13
  310. package/template/agora-rn-uikit/.git/hooks/pre-push.sample +0 -53
  311. package/template/agora-rn-uikit/.git/hooks/pre-rebase.sample +0 -169
  312. package/template/agora-rn-uikit/.git/hooks/pre-receive.sample +0 -24
  313. package/template/agora-rn-uikit/.git/hooks/prepare-commit-msg.sample +0 -42
  314. package/template/agora-rn-uikit/.git/hooks/push-to-checkout.sample +0 -78
  315. package/template/agora-rn-uikit/.git/hooks/update.sample +0 -128
  316. package/template/agora-rn-uikit/.git/index +0 -0
  317. package/template/agora-rn-uikit/.git/info/exclude +0 -6
  318. package/template/agora-rn-uikit/.git/logs/HEAD +0 -2
  319. package/template/agora-rn-uikit/.git/logs/refs/heads/master +0 -1
  320. package/template/agora-rn-uikit/.git/logs/refs/heads/release/fpe-1.0.1 +0 -1
  321. package/template/agora-rn-uikit/.git/logs/refs/remotes/origin/HEAD +0 -1
  322. package/template/agora-rn-uikit/.git/objects/pack/pack-baa9cf4109c3e8528f39535764621cee252b2b77.idx +0 -0
  323. package/template/agora-rn-uikit/.git/objects/pack/pack-baa9cf4109c3e8528f39535764621cee252b2b77.pack +0 -0
  324. package/template/agora-rn-uikit/.git/packed-refs +0 -49
  325. package/template/agora-rn-uikit/.git/refs/heads/master +0 -1
  326. package/template/agora-rn-uikit/.git/refs/heads/release/fpe-1.0.1 +0 -1
  327. package/template/agora-rn-uikit/.git/refs/remotes/origin/HEAD +0 -1
  328. package/template/agora-rn-uikit/.gitignore +0 -63
  329. package/template/agora-rn-uikit/package-lock.json +0 -7612
  330. package/template/agora-rn-uikit/src/Contexts/RenderContext.tsx +0 -10
  331. package/template/package-lock.json +0 -22543
  332. package/template/react-native-toast-message/.gitignore +0 -5
  333. package/template/react-native-toast-message/.npmignore +0 -5
  334. package/template/react-native-toast-message/package-lock.json +0 -10553
  335. package/template/src/.DS_Store +0 -0
  336. package/template/src/assets/icons.ts +0 -102
  337. package/template/src/components/chat-ui/useChatUIControl.tsx +0 -69
  338. package/template/src/components/participants/MeParticipant.tsx +0 -38
  339. package/template/src/components/participants/RemoteParticipants.tsx +0 -71
  340. package/template/src/pages/video-call/CustomUserContextHolder.tsx +0 -20
  341. package/template/src/subComponents/.DS_Store +0 -0
@@ -8,7 +8,7 @@ import {
8
8
  Modal,
9
9
  Dimensions,
10
10
  } from 'react-native';
11
- import {ImageIcon} from '../../agora-rn-uikit';
11
+ import ImageIcon from '../atoms/ImageIcon';
12
12
  import useLayoutsData from '../pages/video-call/useLayoutsData';
13
13
  import {useLayout} from '../utils/useLayout';
14
14
 
@@ -40,14 +40,12 @@ const LayoutIconDropdown = (props: LayoutIconDropdownProps) => {
40
40
  item?.iconName ? (
41
41
  <ImageIcon
42
42
  key={'btnTemplateNameDropdown' + index}
43
- style={style.btnHolderCustom}
44
43
  name={item?.iconName}
45
44
  />
46
45
  ) : (
47
46
  <ImageIcon
48
47
  key={'btnTemplateIconDropdown' + index}
49
- style={style.btnHolderCustom}
50
- icon={item.icon}
48
+ name={item?.iconName}
51
49
  />
52
50
  ),
53
51
  ];
@@ -112,7 +110,7 @@ const style = StyleSheet.create({
112
110
  width: 1,
113
111
  borderRadius: 10,
114
112
  borderWidth: 4,
115
- borderColor: $config.PRIMARY_COLOR,
113
+ borderColor: $config.PRIMARY_ACTION_BRAND_COLOR,
116
114
  },
117
115
  dropdownIconContainer: {
118
116
  flexDirection: 'row',
@@ -124,14 +122,7 @@ const style = StyleSheet.create({
124
122
  alignItems: 'center',
125
123
  position: 'relative',
126
124
  },
127
- navItemSeparatorHorizontal: {
128
- backgroundColor: $config.PRIMARY_FONT_COLOR + '80',
129
- width: '100%',
130
- height: 1,
131
- marginVertical: 10,
132
- alignSelf: 'center',
133
- opacity: 0.8,
134
- },
125
+
135
126
  separaterContainer: {
136
127
  flex: 0.5,
137
128
  paddingHorizontal: 5,
@@ -145,11 +136,6 @@ const style = StyleSheet.create({
145
136
  borderRadius: 10,
146
137
  padding: 10,
147
138
  },
148
- btnHolderCustom: {
149
- width: '100%',
150
- height: '100%',
151
- resizeMode: 'contain',
152
- },
153
139
  backDrop: {
154
140
  position: 'absolute',
155
141
  top: 0,
@@ -9,63 +9,155 @@
9
9
  information visit https://appbuilder.agora.io.
10
10
  *********************************************
11
11
  */
12
- import React from 'react';
12
+ import React, {useContext} from 'react';
13
13
  import {
14
- BtnTemplate,
15
14
  ToggleState,
16
- BtnTemplateInterface,
15
+ PermissionState,
16
+ ImageIcon as UIKitImageIcon,
17
+ ClientRole,
18
+ PropsContext,
19
+ useLocalUid,
17
20
  } from '../../agora-rn-uikit';
18
21
  import useMuteToggleLocal, {MUTE_LOCAL_TYPE} from '../utils/useMuteToggleLocal';
19
22
  import Styles from '../components/styles';
20
- import {
21
- ButtonTemplateName,
22
- useButtonTemplate,
23
- } from '../utils/useButtonTemplate';
24
23
  import {useString} from '../utils/useString';
25
- import {useLocalUserInfo} from 'customization-api';
24
+ import {useLocalUserInfo, useRoomInfo} from 'customization-api';
25
+ import IconButton, {IconButtonProps} from '../atoms/IconButton';
26
+ import ThemeConfig from '../theme';
27
+ import {ImageIconProps} from '../atoms/ImageIcon';
28
+ import useIsHandRaised from '../utils/useIsHandRaised';
26
29
  /**
27
30
  * A component to mute / unmute the local audio
28
31
  */
29
32
  export interface LocalAudioMuteProps {
30
- buttonTemplateName?: ButtonTemplateName;
31
- render?: (
32
- onPress: () => void,
33
+ plainIconHoverEffect?: boolean;
34
+ showToolTip?: boolean;
35
+ showLabel?: boolean;
36
+ iconProps?: (
33
37
  isAudioEnabled: boolean,
34
- buttonTemplateName?: ButtonTemplateName,
35
- ) => JSX.Element;
38
+ isPermissionDenied: boolean,
39
+ ) => Partial<ImageIconProps>;
40
+ render?: (onPress: () => void, isAudioEnabled: boolean) => JSX.Element;
41
+ disabled?: boolean;
42
+ isOnActionSheet?: boolean;
43
+ showWarningIcon?: boolean;
44
+ isMobileView?: boolean;
36
45
  }
37
46
 
38
47
  function LocalAudioMute(props: LocalAudioMuteProps) {
48
+ const {rtcProps} = useContext(PropsContext);
49
+ const {
50
+ data: {isHost},
51
+ } = useRoomInfo();
39
52
  const local = useLocalUserInfo();
53
+ const isHandRaised = useIsHandRaised();
40
54
  const localMute = useMuteToggleLocal();
55
+ const {
56
+ showToolTip = false,
57
+ showLabel = $config.ICON_TEXT,
58
+ disabled = false,
59
+ isOnActionSheet = false,
60
+ showWarningIcon = true,
61
+ isMobileView = false,
62
+ } = props;
41
63
  //commented for v1 release
42
64
  //const audioLabel = useString('toggleAudioButton')();
43
- const audioLabel = 'Audio';
44
-
45
- const defaultTemplateValue = useButtonTemplate().buttonTemplateName;
46
- const {buttonTemplateName = defaultTemplateValue} = props;
47
65
 
48
66
  const onPress = () => {
49
67
  localMute(MUTE_LOCAL_TYPE.audio);
50
68
  };
51
69
  const isAudioEnabled = local.audio === ToggleState.enabled;
52
70
 
53
- let btnTemplateProps: BtnTemplateInterface = {
54
- onPress: onPress,
55
- name: isAudioEnabled ? 'mic' : 'micOff',
71
+ const permissionDenied =
72
+ local.permissionStatus === PermissionState.REJECTED ||
73
+ local.permissionStatus === PermissionState.GRANTED_FOR_CAM_ONLY;
74
+
75
+ const audioLabel = permissionDenied
76
+ ? 'Mic'
77
+ : isAudioEnabled
78
+ ? 'Mic On'
79
+ : 'Mic Off';
80
+
81
+ let iconProps: IconButtonProps['iconProps'] = {
82
+ showWarningIcon: permissionDenied && showWarningIcon ? true : false,
83
+ name: isAudioEnabled ? 'mic-on' : 'mic-off',
84
+
85
+ iconBackgroundColor: isAudioEnabled
86
+ ? $config.PRIMARY_ACTION_BRAND_COLOR
87
+ : '',
88
+ tintColor: isAudioEnabled
89
+ ? $config.PRIMARY_ACTION_TEXT_COLOR
90
+ : disabled
91
+ ? $config.SEMANTIC_NEUTRAL
92
+ : permissionDenied
93
+ ? $config.SEMANTIC_NEUTRAL
94
+ : $config.SEMANTIC_ERROR,
95
+ ...(props?.iconProps
96
+ ? props.iconProps(isAudioEnabled, permissionDenied)
97
+ : {}),
98
+ };
99
+
100
+ let iconButtonProps: IconButtonProps = {
101
+ hoverEffect: !permissionDenied
102
+ ? props?.plainIconHoverEffect
103
+ ? true
104
+ : false
105
+ : false,
106
+ hoverEffectStyle: props?.plainIconHoverEffect
107
+ ? {backgroundColor: $config.ICON_BG_COLOR, borderRadius: 20}
108
+ : {},
109
+ onPress,
110
+ iconProps,
111
+ btnTextProps: {
112
+ text: showLabel ? audioLabel : '',
113
+ textColor: $config.FONT_COLOR,
114
+ },
115
+ disabled: permissionDenied || disabled ? true : false,
56
116
  };
57
117
 
58
- if (buttonTemplateName === ButtonTemplateName.topBar) {
59
- btnTemplateProps.style = Styles.fullWidthButton as Object;
60
- } else {
61
- btnTemplateProps.style = Styles.localButton as Object;
62
- btnTemplateProps.btnText = audioLabel;
118
+ iconButtonProps.isOnActionSheet = isOnActionSheet;
119
+
120
+ if (!isMobileView) {
121
+ iconButtonProps.toolTipMessage = showToolTip
122
+ ? permissionDenied
123
+ ? 'Give Permissions'
124
+ : isAudioEnabled
125
+ ? 'Disable Mic'
126
+ : 'Enable Mic'
127
+ : '';
128
+ }
129
+
130
+ if (
131
+ rtcProps.role == ClientRole.Audience &&
132
+ $config.EVENT_MODE &&
133
+ !$config.RAISE_HAND
134
+ ) {
135
+ return null;
136
+ }
137
+
138
+ if (
139
+ rtcProps.role == ClientRole.Audience &&
140
+ $config.EVENT_MODE &&
141
+ $config.RAISE_HAND &&
142
+ !isHost
143
+ ) {
144
+ iconButtonProps.iconProps = {
145
+ ...iconButtonProps.iconProps,
146
+ name: 'mic-off',
147
+ tintColor: $config.SEMANTIC_NEUTRAL,
148
+ };
149
+ iconButtonProps.toolTipMessage = showToolTip
150
+ ? isHandRaised(local.uid)
151
+ ? 'Waiting for host to appove the request'
152
+ : 'Raise Hand in order to turn mic on'
153
+ : '';
154
+ iconButtonProps.disabled = true;
63
155
  }
64
156
 
65
157
  return props?.render ? (
66
- props.render(onPress, isAudioEnabled, buttonTemplateName)
158
+ props.render(onPress, isAudioEnabled)
67
159
  ) : (
68
- <BtnTemplate {...btnTemplateProps} />
160
+ <IconButton {...iconButtonProps} />
69
161
  );
70
162
  }
71
163
 
@@ -1,49 +1,87 @@
1
- import React, {useContext} from 'react';
2
- import {
3
- ButtonTemplateName,
4
- useButtonTemplate,
5
- } from '../utils/useButtonTemplate';
6
- import {BtnTemplate, BtnTemplateInterface} from '../../agora-rn-uikit';
7
- import Styles from '../components/styles';
8
- import {useString} from '../utils/useString';
9
- import {useRtc} from 'customization-api';
10
-
1
+ import React, {useContext, useState} from 'react';
2
+ import EndcallPopup from './EndcallPopup';
3
+ import StorageContext from '../components/StorageContext';
4
+ import {Prompt, useParams} from '../components/Router';
5
+ import IconButton, {IconButtonProps} from '../atoms/IconButton';
6
+ import ReactNativeForegroundService from '@supersami/rn-foreground-service';
7
+ import {Platform} from 'react-native';
8
+ import {DispatchContext} from '../../agora-rn-uikit';
11
9
  export interface LocalEndcallProps {
12
- buttonTemplateName?: ButtonTemplateName;
13
- render?: (
14
- onPress: () => void,
15
- buttonTemplateName?: ButtonTemplateName,
16
- ) => JSX.Element;
10
+ showLabel?: boolean;
11
+ isOnActionSheet?: boolean;
12
+ render?: (onPress: () => void) => JSX.Element;
17
13
  }
18
14
 
15
+ /* For android only, bg audio */
16
+ const stopForegroundService = () => {
17
+ if (Platform.OS === 'android') {
18
+ ReactNativeForegroundService.stop();
19
+ console.log('stopping foreground service');
20
+ }
21
+ };
22
+
19
23
  const LocalEndcall = (props: LocalEndcallProps) => {
20
- const {dispatch} = useRtc();
24
+ const {dispatch} = useContext(DispatchContext);
25
+ const {showLabel = $config.ICON_TEXT, isOnActionSheet = false} = props;
21
26
  //commented for v1 release
22
27
  //const endCallLabel = useString('endCallButton')();
23
- const endCallLabel = 'Hang Up';
24
- const defaultTemplateValue = useButtonTemplate().buttonTemplateName;
25
- const {buttonTemplateName = defaultTemplateValue} = props;
26
- const onPress = () =>
27
- dispatch({
28
- type: 'EndCall',
29
- value: [],
28
+ const endCallLabel = 'Leave';
29
+ const {setStore} = useContext(StorageContext);
30
+ const [endcallVisible, setEndcallVisible] = useState(false);
31
+ const {phrase} = useParams<{phrase: string}>();
32
+ const onPress = () => {
33
+ setEndcallVisible(true);
34
+ };
35
+
36
+ const endCall = async () => {
37
+ setTimeout(() => {
38
+ dispatch({
39
+ type: 'EndCall',
40
+ value: [],
41
+ });
30
42
  });
31
- let btnTemplateProps: BtnTemplateInterface = {
32
- name: 'callEnd',
33
- color: '#FD0845',
34
- onPress: onPress,
43
+ // stopping foreground servie on end call
44
+ stopForegroundService();
45
+ };
46
+
47
+ let iconButtonProps: IconButtonProps = {
48
+ iconProps: {
49
+ name: 'end-call',
50
+ tintColor: $config.PRIMARY_ACTION_TEXT_COLOR,
51
+ iconBackgroundColor: $config.SEMANTIC_ERROR,
52
+ iconContainerStyle: !isOnActionSheet && {
53
+ width: 72,
54
+ height: 52,
55
+ },
56
+ },
57
+ onPress,
58
+ btnTextProps: {
59
+ text: showLabel ? endCallLabel : '',
60
+ textColor: $config.FONT_COLOR,
61
+ },
35
62
  };
36
63
 
37
- if (buttonTemplateName === ButtonTemplateName.topBar) {
38
- btnTemplateProps.style = Styles.fullWidthButton as Object;
39
- } else {
40
- btnTemplateProps.btnText = endCallLabel;
41
- btnTemplateProps.style = Styles.endCall as Object;
42
- }
43
64
  return props?.render ? (
44
- props.render(onPress, buttonTemplateName)
65
+ props.render(onPress)
45
66
  ) : (
46
- <BtnTemplate {...btnTemplateProps} />
67
+ <>
68
+ <Prompt
69
+ when={true}
70
+ message={(location, action) => {
71
+ if (action === 'POP') {
72
+ onPress();
73
+ return false;
74
+ }
75
+ return true;
76
+ }}
77
+ />
78
+ <EndcallPopup
79
+ endCall={endCall}
80
+ setModalVisible={setEndcallVisible}
81
+ modalVisible={endcallVisible}
82
+ />
83
+ <IconButton {...iconButtonProps} />
84
+ </>
47
85
  );
48
86
  };
49
87
  export default LocalEndcall;
@@ -1,59 +1,46 @@
1
1
  import React, {useContext} from 'react';
2
- import {
3
- ButtonTemplateName,
4
- useButtonTemplate,
5
- } from '../utils/useButtonTemplate';
6
2
  import {useString} from '../utils/useString';
7
- import {
8
- BtnTemplate,
9
- PropsContext,
10
- ToggleState,
11
- BtnTemplateInterface,
12
- } from '../../agora-rn-uikit';
3
+ import {PropsContext, ToggleState} from '../../agora-rn-uikit';
13
4
  import Styles from '../components/styles';
14
5
  import {useLocalUserInfo, useRtc} from 'customization-api';
6
+ import IconButton, {IconButtonProps} from '../atoms/IconButton';
15
7
 
16
8
  export interface LocalSwitchCameraProps {
17
- buttonTemplateName?: ButtonTemplateName;
18
- render?: (
19
- onPress: () => void,
20
- isVideoEnabled: boolean,
21
- buttonTemplateName?: ButtonTemplateName,
22
- ) => JSX.Element;
9
+ showLabel?: boolean;
10
+ render?: (onPress: () => void, isVideoEnabled: boolean) => JSX.Element;
11
+ disabled?: boolean;
23
12
  }
24
13
 
25
14
  function LocalSwitchCamera(props: LocalSwitchCameraProps) {
26
15
  const {callbacks} = useContext(PropsContext);
27
- const {RtcEngine} = useRtc();
16
+ const {RtcEngineUnsafe} = useRtc();
28
17
  const local = useLocalUserInfo();
18
+ const {showLabel = $config.ICON_TEXT, disabled = false} = props;
29
19
  //commented for v1 release
30
20
  //const switchCameraButtonText = useString('switchCameraButton')();
31
21
  const switchCameraButtonText = 'Switch';
32
22
 
33
- const defaultTemplateValue = useButtonTemplate().buttonTemplateName;
34
- const {buttonTemplateName = defaultTemplateValue} = props;
35
23
  const onPress = () => {
36
- RtcEngine.switchCamera();
24
+ RtcEngineUnsafe.switchCamera();
37
25
  callbacks?.SwitchCamera && callbacks.SwitchCamera();
38
26
  };
39
27
  const isVideoEnabled = local.video === ToggleState.enabled;
40
- let btnTemplateProps: BtnTemplateInterface = {
41
- name: 'switchCamera',
42
- disabled: isVideoEnabled ? false : true,
28
+ let iconButtonProps: IconButtonProps = {
29
+ iconProps: {
30
+ name: 'switch-camera',
31
+ tintColor:
32
+ isVideoEnabled || !disabled
33
+ ? $config.SECONDARY_ACTION_COLOR
34
+ : $config.SEMANTIC_NEUTRAL,
35
+ },
36
+ disabled: !isVideoEnabled || disabled ? true : false,
43
37
  onPress: onPress,
44
38
  };
45
39
 
46
- if (buttonTemplateName === ButtonTemplateName.topBar) {
47
- btnTemplateProps.style = Styles.fullWidthButton as Object;
48
- } else {
49
- btnTemplateProps.style = Styles.localButton as Object;
50
- btnTemplateProps.btnText = switchCameraButtonText;
51
- }
52
-
53
40
  return props?.render ? (
54
- props.render(onPress, isVideoEnabled, buttonTemplateName)
41
+ props.render(onPress, isVideoEnabled)
55
42
  ) : (
56
- <BtnTemplate {...btnTemplateProps} />
43
+ <IconButton {...iconButtonProps} />
57
44
  );
58
45
  }
59
46
 
@@ -9,61 +9,151 @@
9
9
  information visit https://appbuilder.agora.io.
10
10
  *********************************************
11
11
  */
12
- import React from 'react';
12
+ import React, {useContext} from 'react';
13
13
  import {
14
- BtnTemplate,
15
14
  ToggleState,
16
- BtnTemplateInterface,
15
+ PermissionState,
16
+ ImageIcon as UIKitImageIcon,
17
+ ClientRole,
18
+ PropsContext,
17
19
  } from '../../agora-rn-uikit';
18
20
  import useMuteToggleLocal, {MUTE_LOCAL_TYPE} from '../utils/useMuteToggleLocal';
19
21
  import Styles from '../components/styles';
20
- import {
21
- ButtonTemplateName,
22
- useButtonTemplate,
23
- } from '../utils/useButtonTemplate';
24
22
  import {useString} from '../utils/useString';
25
- import {useLocalUserInfo} from 'customization-api';
26
-
23
+ import {useLocalUserInfo, useRoomInfo} from 'customization-api';
24
+ import IconButton, {IconButtonProps} from '../atoms/IconButton';
25
+ import ThemeConfig from '../theme';
26
+ import {ImageIconProps} from '../atoms/ImageIcon';
27
+ import useIsHandRaised from '../utils/useIsHandRaised';
27
28
  /**
28
29
  * A component to mute / unmute the local video
29
30
  */
30
31
  export interface LocalVideoMuteProps {
31
- buttonTemplateName?: ButtonTemplateName;
32
- render?: (
33
- onPress: () => void,
32
+ plainIconHoverEffect?: boolean;
33
+ showToolTip?: boolean;
34
+ showLabel?: boolean;
35
+ render?: (onPress: () => void, isVideoEnabled: boolean) => JSX.Element;
36
+ disabled?: boolean;
37
+ isOnActionSheet?: boolean;
38
+ iconProps?: (
34
39
  isVideoEnabled: boolean,
35
- buttonTemplateName?: ButtonTemplateName,
36
- ) => JSX.Element;
40
+ isPermissionDenied: boolean,
41
+ ) => Partial<ImageIconProps>;
42
+ showWarningIcon?: boolean;
43
+ isMobileView?: boolean;
37
44
  }
38
45
 
39
46
  function LocalVideoMute(props: LocalVideoMuteProps) {
47
+ const {rtcProps} = useContext(PropsContext);
48
+ const {
49
+ data: {isHost},
50
+ } = useRoomInfo();
40
51
  const local = useLocalUserInfo();
52
+ const isHandRaised = useIsHandRaised();
41
53
  const localMute = useMuteToggleLocal();
54
+ const {
55
+ showToolTip = false,
56
+ showLabel = $config.ICON_TEXT,
57
+ disabled = false,
58
+ isOnActionSheet = false,
59
+ showWarningIcon = true,
60
+ isMobileView = false,
61
+ } = props;
42
62
  //commented for v1 release
43
63
  //const videoLabel = useString('toggleVideoButton')();
44
- const videoLabel = 'Video';
45
- const defaultTemplateValue = useButtonTemplate().buttonTemplateName;
46
- const {buttonTemplateName = defaultTemplateValue} = props;
64
+
47
65
  const onPress = () => {
48
66
  localMute(MUTE_LOCAL_TYPE.video);
49
67
  };
50
68
  const isVideoEnabled = local.video === ToggleState.enabled;
51
- let btnTemplateProps: BtnTemplateInterface = {
52
- onPress: onPress,
53
- name: isVideoEnabled ? 'videocam' : 'videocamOff',
69
+
70
+ const permissionDenied =
71
+ local.permissionStatus === PermissionState.REJECTED ||
72
+ local.permissionStatus === PermissionState.GRANTED_FOR_MIC_ONLY;
73
+
74
+ const videoLabel = permissionDenied
75
+ ? 'Video'
76
+ : isVideoEnabled
77
+ ? 'Video On'
78
+ : 'Video Off';
79
+
80
+ let iconProps: IconButtonProps['iconProps'] = {
81
+ showWarningIcon: permissionDenied && showWarningIcon ? true : false,
82
+ name: isVideoEnabled ? 'video-on' : 'video-off',
83
+ iconBackgroundColor: isVideoEnabled
84
+ ? $config.PRIMARY_ACTION_BRAND_COLOR
85
+ : '',
86
+ tintColor: isVideoEnabled
87
+ ? $config.PRIMARY_ACTION_TEXT_COLOR
88
+ : disabled
89
+ ? $config.SEMANTIC_NEUTRAL
90
+ : permissionDenied
91
+ ? $config.SEMANTIC_NEUTRAL
92
+ : $config.SEMANTIC_ERROR,
93
+ ...(props?.iconProps
94
+ ? props.iconProps(isVideoEnabled, permissionDenied)
95
+ : {}),
54
96
  };
55
97
 
56
- if (buttonTemplateName === ButtonTemplateName.topBar) {
57
- btnTemplateProps.style = Styles.fullWidthButton as Object;
58
- } else {
59
- btnTemplateProps.style = Styles.localButton as Object;
60
- btnTemplateProps.btnText = videoLabel;
98
+ let iconButtonProps: IconButtonProps = {
99
+ hoverEffect: !permissionDenied
100
+ ? props?.plainIconHoverEffect
101
+ ? true
102
+ : false
103
+ : false,
104
+ hoverEffectStyle: props?.plainIconHoverEffect
105
+ ? {backgroundColor: $config.ICON_BG_COLOR, borderRadius: 20}
106
+ : {},
107
+ onPress,
108
+ iconProps,
109
+ btnTextProps: {
110
+ text: showLabel ? videoLabel : '',
111
+ textColor: $config.FONT_COLOR,
112
+ },
113
+ disabled: permissionDenied || disabled ? true : false,
114
+ };
115
+
116
+ iconButtonProps.isOnActionSheet = isOnActionSheet;
117
+ if (!isMobileView) {
118
+ iconButtonProps.toolTipMessage = showToolTip
119
+ ? permissionDenied
120
+ ? 'Give Permissions'
121
+ : isVideoEnabled
122
+ ? 'Disable Camera'
123
+ : 'Enable Camera'
124
+ : '';
61
125
  }
62
126
 
127
+ if (
128
+ rtcProps.role == ClientRole.Audience &&
129
+ $config.EVENT_MODE &&
130
+ !$config.RAISE_HAND
131
+ ) {
132
+ return null;
133
+ }
134
+
135
+ if (
136
+ rtcProps.role == ClientRole.Audience &&
137
+ $config.EVENT_MODE &&
138
+ $config.RAISE_HAND &&
139
+ !isHost
140
+ ) {
141
+ iconButtonProps.iconProps = {
142
+ ...iconButtonProps.iconProps,
143
+ name: 'video-off',
144
+ tintColor: $config.SEMANTIC_NEUTRAL,
145
+ };
146
+ iconButtonProps.toolTipMessage = showToolTip
147
+ ? isHandRaised(local.uid)
148
+ ? 'Waiting for host to appove the request'
149
+ : 'Raise Hand in order to turn video on'
150
+ : '';
151
+ iconButtonProps.disabled = true;
152
+ }
63
153
  return props?.render ? (
64
- props.render(onPress, isVideoEnabled, buttonTemplateName)
154
+ props.render(onPress, isVideoEnabled)
65
155
  ) : (
66
- <BtnTemplate {...btnTemplateProps} />
156
+ <IconButton {...iconButtonProps} />
67
157
  );
68
158
  }
69
159
 
@@ -20,7 +20,7 @@ export default function Logo() {
20
20
  const history = useHistory();
21
21
 
22
22
  return (
23
- <TouchableOpacity onPress={() => history.replace('/')} style={styles.marginAuto}>
23
+ <TouchableOpacity onPress={() => history.replace('/')}>
24
24
  <Image
25
25
  source={{uri: $config.LOGO}}
26
26
  style={styles.logo}
@@ -32,8 +32,8 @@ export default function Logo() {
32
32
 
33
33
  const styles = StyleSheet.create({
34
34
  logo: {
35
- width: '100%',
36
- height: '100%',
35
+ minWidth: 60,
36
+ minHeight: 30,
37
37
  },
38
38
  marginAuto: {
39
39
  width: '30%',
@@ -41,6 +41,5 @@ const styles = StyleSheet.create({
41
41
  minWidth: 60,
42
42
  minHeight: 30,
43
43
  // height: 'auto',
44
- marginHorizontal: 'auto',
45
44
  },
46
45
  });
@@ -87,7 +87,7 @@ const style = StyleSheet.create({
87
87
  fontWeight: '500',
88
88
  textAlign: 'center',
89
89
  textAlignVertical: 'center',
90
- color: $config.PRIMARY_FONT_COLOR,
90
+ color: $config.FONT_COLOR,
91
91
  textDecorationLine: 'underline',
92
92
  },
93
93
  });