agora-appbuilder-core 3.0.9 → 3.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/Readme.md +6 -0
  2. package/package.json +2 -2
  3. package/template/_package-lock.json +5871 -4728
  4. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +4 -0
  5. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +18 -0
  6. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +2 -0
  7. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +30 -26
  8. package/template/agora-rn-uikit/src/Controls/Icons.ts +30 -83
  9. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +6 -6
  10. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +11 -0
  11. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +1 -0
  12. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +1 -0
  13. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +24 -0
  14. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +1 -0
  15. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +1 -0
  16. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +1 -0
  17. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +2 -0
  18. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +1 -0
  19. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +1 -0
  20. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +1 -0
  21. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +11 -0
  22. package/template/agora-rn-uikit/src/Reducer/index.ts +3 -0
  23. package/template/agora-rn-uikit/src/Rtc/Create.tsx +89 -1
  24. package/template/agora-rn-uikit/src/RtcConfigure.tsx +39 -2
  25. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +15 -5
  26. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +15 -9
  27. package/template/agora-rn-uikit/src/index.ts +3 -1
  28. package/template/android/app/build.gradle +1 -0
  29. package/template/android/app/src/main/AndroidManifest.xml +22 -15
  30. package/template/android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  31. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  32. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +50 -0
  33. package/template/android/app/src/main/res/values/colors.xml +7 -0
  34. package/template/android/build.gradle +3 -3
  35. package/template/babel.config.js +1 -0
  36. package/template/bridge/rtc/webNg/RtcEngine.ts +110 -17
  37. package/template/customization-api/sub-components.ts +1 -1
  38. package/template/customization-api/typeDefinition.ts +2 -1
  39. package/template/electron/index.html +27 -27
  40. package/template/electron/renderer/index.js +1 -0
  41. package/template/global.d.ts +25 -4
  42. package/template/index.rsdk.tsx +1 -0
  43. package/template/index.web.js +2 -1
  44. package/template/index.wsdk.tsx +1 -1
  45. package/template/ios/HelloWorld/Info.plist +14 -1
  46. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +17 -0
  47. package/template/metro.config.js +1 -1
  48. package/template/package.json +18 -7
  49. package/template/react-native-toast-message/index.d.ts +43 -43
  50. package/template/react-native-toast-message/src/colors/index.js +3 -2
  51. package/template/react-native-toast-message/src/components/base/index.js +46 -59
  52. package/template/react-native-toast-message/src/components/base/styles.js +16 -32
  53. package/template/react-native-toast-message/src/components/checkbox.js +178 -0
  54. package/template/react-native-toast-message/src/components/error.js +3 -2
  55. package/template/react-native-toast-message/src/components/info.js +3 -2
  56. package/template/react-native-toast-message/src/components/success.js +3 -2
  57. package/template/react-native-toast-message/src/index.js +122 -31
  58. package/template/react-native-toast-message/src/index.sdk.tsx +125 -35
  59. package/template/react-native-toast-message/src/styles.js +3 -4
  60. package/template/react-native-toast-message/src/styles.sdk.ts +3 -4
  61. package/template/react-native.config.js +7 -0
  62. package/template/src/App.tsx +6 -0
  63. package/template/src/AppWrapper.tsx +63 -28
  64. package/template/src/assets/font-styles.css +329 -0
  65. package/template/src/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  66. package/template/src/assets/fonts/icomoon.ttf +0 -0
  67. package/template/src/assets/permission.png +0 -0
  68. package/template/src/assets/selection.json +1 -0
  69. package/template/src/atoms/ActionMenu.tsx +236 -0
  70. package/template/src/atoms/AnimatedActiveSpeaker.native.tsx +71 -0
  71. package/template/src/atoms/AnimatedActiveSpeaker.tsx +84 -0
  72. package/template/src/atoms/AnimatedRings.native.tsx +68 -0
  73. package/template/src/atoms/AnimatedRings.tsx +70 -0
  74. package/template/src/atoms/Card.tsx +61 -0
  75. package/template/src/atoms/CircularProgress.native.tsx +121 -0
  76. package/template/src/atoms/CircularProgress.tsx +102 -0
  77. package/template/src/atoms/CustomIcon.tsx +88 -0
  78. package/template/src/atoms/CustomSwitch.tsx +287 -0
  79. package/template/src/atoms/Dropdown.tsx +306 -0
  80. package/template/src/atoms/HorizontalRule.tsx +3 -1
  81. package/template/src/atoms/IconButton.tsx +162 -0
  82. package/template/src/atoms/ImageIcon.tsx +98 -0
  83. package/template/src/atoms/InfoBubble.tsx +291 -0
  84. package/template/src/atoms/Input.tsx +87 -0
  85. package/template/src/atoms/InviteInfo.tsx +166 -0
  86. package/template/src/atoms/LinkButton.tsx +28 -0
  87. package/template/src/atoms/OutlineButton.tsx +61 -0
  88. package/template/src/atoms/ParticipantsCount.tsx +73 -0
  89. package/template/src/atoms/Popup.tsx +147 -0
  90. package/template/src/atoms/PrimaryButton.tsx +51 -26
  91. package/template/src/atoms/RecordingInfo.tsx +49 -0
  92. package/template/src/atoms/SecondaryButton.tsx +8 -5
  93. package/template/src/atoms/Spacer.tsx +22 -0
  94. package/template/src/atoms/TertiaryButton.tsx +78 -0
  95. package/template/src/atoms/TextInput.tsx +12 -14
  96. package/template/src/atoms/Toggle.tsx +47 -0
  97. package/template/src/atoms/Tooltip.native.tsx +65 -0
  98. package/template/src/atoms/Tooltip.tsx +94 -0
  99. package/template/src/atoms/UserAvatar.tsx +60 -0
  100. package/template/src/components/Chat.tsx +86 -214
  101. package/template/src/components/ChatContext.ts +8 -1
  102. package/template/src/components/ColorConfigure.tsx +1 -1
  103. package/template/src/components/ColorContext.ts +1 -1
  104. package/template/src/components/CommonStyles.ts +44 -0
  105. package/template/src/components/Controls.tsx +342 -42
  106. package/template/src/components/{Controls.native.tsx → Controls1.native.tsx} +6 -4
  107. package/template/src/components/DeviceConfigure.tsx +461 -101
  108. package/template/src/components/DeviceContext.tsx +8 -4
  109. package/template/src/components/EventsConfigure.tsx +144 -7
  110. package/template/src/components/GraphQLProvider.tsx +1 -1
  111. package/template/src/components/GridVideo.tsx +59 -44
  112. package/template/src/components/HostControlView.tsx +114 -35
  113. package/template/src/components/Navbar.tsx +216 -398
  114. package/template/src/components/NetworkQualityContext.tsx +20 -20
  115. package/template/src/components/ParticipantsView.tsx +177 -154
  116. package/template/src/components/PinnedVideo.tsx +207 -120
  117. package/template/src/components/Precall.native.tsx +358 -119
  118. package/template/src/components/Precall.tsx +269 -135
  119. package/template/src/components/RTMConfigure.tsx +27 -4
  120. package/template/src/components/Router.electron.ts +1 -0
  121. package/template/src/components/Router.native.ts +1 -0
  122. package/template/src/components/Router.sdk.ts +1 -0
  123. package/template/src/components/Router.ts +1 -0
  124. package/template/src/components/Settings.tsx +26 -95
  125. package/template/src/components/SettingsView.tsx +251 -56
  126. package/template/src/components/Share.tsx +302 -273
  127. package/template/src/components/StorageContext.tsx +30 -3
  128. package/template/src/components/ToastComponent.tsx +8 -0
  129. package/template/src/components/chat-messages/useChatMessages.tsx +69 -23
  130. package/template/src/components/chat-ui/useChatUIControl.tsx +7 -0
  131. package/template/src/components/common/Error.tsx +20 -6
  132. package/template/src/components/common/Logo.tsx +16 -15
  133. package/template/src/components/contexts/LiveStreamDataContext.tsx +10 -5
  134. package/template/src/components/contexts/VideoMeetingDataContext.tsx +37 -7
  135. package/template/src/components/livestream/LiveStreamContext.tsx +270 -36
  136. package/template/src/components/livestream/Types.ts +39 -14
  137. package/template/src/components/livestream/index.ts +1 -0
  138. package/template/src/components/livestream/views/LiveStreamControls.tsx +12 -4
  139. package/template/src/components/participants/AllAudienceParticipants.tsx +101 -30
  140. package/template/src/components/participants/AllHostParticipants.tsx +103 -34
  141. package/template/src/components/participants/Participant.tsx +302 -0
  142. package/template/src/components/participants/ParticipantName.tsx +13 -7
  143. package/template/src/components/participants/ParticipantSectionTitle.tsx +35 -10
  144. package/template/src/components/participants/ScreenshareParticipants.tsx +144 -12
  145. package/template/src/components/participants/UserActionMenuOptions.tsx +398 -0
  146. package/template/src/components/popups/InvitePopup.tsx +115 -0
  147. package/template/src/components/popups/StopRecordingPopup.tsx +114 -0
  148. package/template/src/components/precall/LocalMute.tsx +84 -14
  149. package/template/src/components/precall/{LocalMute.native.tsx → LocalMute1.native.tsx} +21 -5
  150. package/template/src/components/precall/PermissionHelper.native.tsx +5 -0
  151. package/template/src/components/precall/PermissionHelper.tsx +126 -0
  152. package/template/src/components/precall/PreCallSettings.tsx +52 -0
  153. package/template/src/components/precall/VideoPreview.native.tsx +48 -3
  154. package/template/src/components/precall/VideoPreview.tsx +163 -7
  155. package/template/src/components/precall/joinCallBtn.tsx +15 -2
  156. package/template/src/components/precall/meetingTitle.tsx +15 -12
  157. package/template/src/components/precall/selectDevice.tsx +1 -21
  158. package/template/src/components/precall/textInput.tsx +32 -4
  159. package/template/src/components/precall/usePreCall.tsx +16 -0
  160. package/template/src/components/styles.ts +42 -21
  161. package/template/src/components/useShareLink.tsx +12 -14
  162. package/template/src/components/useToast.tsx +41 -0
  163. package/template/src/components/useVideoCall.tsx +65 -0
  164. package/template/src/language/default-labels/precallScreenLabels.ts +3 -3
  165. package/template/src/pages/Authenticate.tsx +5 -15
  166. package/template/src/pages/Create.tsx +293 -165
  167. package/template/src/pages/Endcall.tsx +148 -0
  168. package/template/src/pages/Join.tsx +93 -67
  169. package/template/src/pages/VideoCall.tsx +89 -64
  170. package/template/src/pages/video-call/ActionSheet.native.tsx +215 -0
  171. package/template/src/pages/video-call/ActionSheet.tsx +226 -0
  172. package/template/src/pages/video-call/ActionSheetContent.tsx +479 -0
  173. package/template/src/pages/video-call/ActionSheetHandle.tsx +38 -0
  174. package/template/src/pages/video-call/ActionSheetStyles.css +138 -0
  175. package/template/src/pages/video-call/DefaultLayouts.ts +4 -4
  176. package/template/src/pages/video-call/NameWithMicIcon.tsx +120 -44
  177. package/template/src/pages/video-call/RenderComponent.tsx +3 -2
  178. package/template/src/pages/video-call/SidePanelHeader.tsx +190 -0
  179. package/template/src/pages/video-call/VideoCallMobileView.tsx +139 -0
  180. package/template/src/pages/video-call/VideoCallScreen.native.tsx +37 -0
  181. package/template/src/pages/video-call/VideoCallScreen.tsx +45 -9
  182. package/template/src/pages/video-call/VideoComponent.tsx +18 -3
  183. package/template/src/pages/video-call/VideoRenderer.tsx +218 -60
  184. package/template/src/rtm-events/constants.ts +2 -0
  185. package/template/src/subComponents/ChatBubble.tsx +123 -83
  186. package/template/src/subComponents/ChatContainer.tsx +257 -84
  187. package/template/src/subComponents/ChatInput.ios.tsx +237 -0
  188. package/template/src/subComponents/ChatInput.tsx +61 -46
  189. package/template/src/subComponents/Checkbox.native.tsx +16 -5
  190. package/template/src/subComponents/Checkbox.tsx +2 -2
  191. package/template/src/subComponents/CopyJoinInfo.tsx +36 -58
  192. package/template/src/subComponents/EndcallPopup.tsx +107 -0
  193. package/template/src/subComponents/FallbackLogo.tsx +122 -40
  194. package/template/src/subComponents/LanguageSelector.tsx +1 -1
  195. package/template/src/subComponents/LayoutIconButton.tsx +201 -0
  196. package/template/src/subComponents/LayoutIconDropdown.tsx +131 -134
  197. package/template/src/subComponents/{LayoutIconDropdown.native.tsx → LayoutIconDropdown1.native.tsx} +4 -18
  198. package/template/src/subComponents/LocalAudioMute.tsx +119 -27
  199. package/template/src/subComponents/LocalEndCall.tsx +71 -33
  200. package/template/src/subComponents/LocalSwitchCamera.tsx +17 -30
  201. package/template/src/subComponents/LocalVideoMute.tsx +117 -27
  202. package/template/src/subComponents/Logo.tsx +3 -4
  203. package/template/src/subComponents/LogoutButton.tsx +1 -1
  204. package/template/src/subComponents/NetworkQualityPill.tsx +60 -63
  205. package/template/src/subComponents/OpenInNativeButton.tsx +3 -3
  206. package/template/src/subComponents/Recording.tsx +28 -29
  207. package/template/src/subComponents/RemoteAudioMute.tsx +83 -29
  208. package/template/src/subComponents/RemoteEndCall.tsx +8 -5
  209. package/template/src/subComponents/RemoteMutePopup.tsx +193 -0
  210. package/template/src/subComponents/RemoteVideoMute.tsx +74 -21
  211. package/template/src/subComponents/RemoveMeetingPopup.tsx +109 -0
  212. package/template/src/subComponents/RemoveScreensharePopup.tsx +109 -0
  213. package/template/src/subComponents/ScreenShareNotice.tsx +83 -8
  214. package/template/src/subComponents/SelectDevice.tsx +404 -61
  215. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +207 -0
  216. package/template/src/subComponents/SelectOAuth.tsx +9 -8
  217. package/template/src/subComponents/SidePanelHeader.tsx +112 -0
  218. package/template/src/subComponents/ToastConfig.tsx +150 -10
  219. package/template/src/subComponents/chat/ChatParticipants.tsx +187 -78
  220. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +95 -32
  221. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +29 -33
  222. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +6 -6
  223. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +24 -11
  224. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +17 -10
  225. package/template/src/subComponents/recording/useRecording.tsx +79 -27
  226. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +52 -70
  227. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +11 -2
  228. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +26 -4
  229. package/template/src/theme/index.ts +46 -0
  230. package/template/src/utils/PlatformWrapper.tsx +21 -0
  231. package/template/src/utils/common.tsx +155 -1
  232. package/template/src/utils/hexadecimalTransparency.ts +108 -0
  233. package/template/src/utils/index.tsx +19 -0
  234. package/template/src/utils/isMobileOrTablet.ts +7 -2
  235. package/template/src/utils/pendingStateUpdateHelper.ts +19 -0
  236. package/template/src/utils/useButtonTemplate.tsx +1 -0
  237. package/template/src/utils/useFocus.tsx +46 -0
  238. package/template/src/utils/useIsActiveSpeaker.ts +27 -0
  239. package/template/src/utils/useIsHandRaised.ts +13 -0
  240. package/template/src/utils/useMuteToggleLocal.ts +54 -3
  241. package/template/src/utils/useRemoteEndScreenshare.ts +26 -0
  242. package/template/src/utils/useRemoteRequest.ts +84 -0
  243. package/template/web/index.html +5 -0
  244. package/template/webpack.commons.js +13 -8
  245. package/template/webpack.web.config.js +1 -0
  246. package/template/src/assets/icons.ts +0 -102
  247. package/template/src/components/participants/MeParticipant.tsx +0 -38
  248. package/template/src/components/participants/RemoteParticipants.tsx +0 -71
@@ -0,0 +1,207 @@
1
+ /*
2
+ ********************************************
3
+ Copyright © 2021 Agora Lab, Inc., all rights reserved.
4
+ AppBuilder and all associated components, source code, APIs, services, and documentation
5
+ (the “Materials”) are owned by Agora Lab, Inc. and its licensors. The Materials may not be
6
+ accessed, used, modified, or distributed for any purpose without a license from Agora Lab, Inc.
7
+ Use without a license or in violation of any license terms and conditions (including use for
8
+ any purpose competitive to Agora Lab, Inc.’s business) is strictly prohibited. For more
9
+ information visit https://appbuilder.agora.io.
10
+ *********************************************
11
+ */
12
+ import React, {useContext, useEffect} from 'react';
13
+ import {StyleSheet, View, Text} from 'react-native';
14
+ import {PropsContext, ClientRole} from '../../agora-rn-uikit';
15
+ import DeviceContext from '../components/DeviceContext';
16
+ import ColorContext from '../components/ColorContext';
17
+ import {useString} from '../utils/useString';
18
+ import Spacer from '../atoms/Spacer';
19
+ import Dropdown from '../atoms/Dropdown';
20
+ import {usePreCall} from '../components/precall/usePreCall';
21
+ import ThemeConfig from '../theme';
22
+ // import {dropdown} from '../../theme.json';
23
+ /**
24
+ * A component to diplay a dropdown and select a device.
25
+ * It will add the selected device to the device context.
26
+ */
27
+ const useSelectDevice = (): [boolean, string] => {
28
+ const {rtcProps} = useContext(PropsContext);
29
+ const {primaryColor} = useContext(ColorContext);
30
+ const [btnTheme, setBtnTheme] = React.useState<string>(primaryColor);
31
+ const [isPickerDisabled, setPickerDisabled] = React.useState<boolean>(false);
32
+ React.useEffect(() => {
33
+ if ($config.EVENT_MODE && rtcProps.role === ClientRole.Audience) {
34
+ setPickerDisabled(true);
35
+ setBtnTheme('rgba(16, 16, 16, 0.3)');
36
+ } else {
37
+ setPickerDisabled(false);
38
+ setBtnTheme(primaryColor);
39
+ }
40
+ }, [rtcProps?.role]);
41
+ return [isPickerDisabled, btnTheme];
42
+ };
43
+
44
+ interface SelectVideoDeviceProps {
45
+ render?: (
46
+ selectedCam: string,
47
+ setSelectedCam: (cam: string) => void,
48
+ deviceList: MediaDeviceInfo[],
49
+ isDisabled: boolean,
50
+ ) => JSX.Element;
51
+ }
52
+
53
+ const SelectVideoDevice = (props: SelectVideoDeviceProps) => {
54
+ const {selectedCam, setSelectedCam, deviceList} = useContext(DeviceContext);
55
+ const [isPickerDisabled, btnTheme] = useSelectDevice();
56
+ const [isFocussed, setIsFocussed] = React.useState(false);
57
+ const data = deviceList
58
+ .filter((device: any) => {
59
+ if (device.kind === 'videoinput') {
60
+ return true;
61
+ }
62
+ })
63
+ ?.map((device) => {
64
+ return {
65
+ label: device.label,
66
+ value: device.deviceId,
67
+ };
68
+ });
69
+
70
+ return props?.render ? (
71
+ props.render(selectedCam, setSelectedCam, deviceList, isPickerDisabled)
72
+ ) : (
73
+ <>
74
+ <Text style={[style.label]}>Camera</Text>
75
+ <Dropdown
76
+ icon={'video-on'}
77
+ enabled={!isPickerDisabled}
78
+ label={!data || !data.length ? 'No Camera Detected' : ''}
79
+ data={data}
80
+ onSelect={({label, value}) => {
81
+ setIsFocussed(true);
82
+ setSelectedCam(value);
83
+ }}
84
+ selectedValue={selectedCam}
85
+ />
86
+ </>
87
+ );
88
+ };
89
+
90
+ interface SelectAudioDeviceProps {
91
+ render?: (
92
+ selectedMic: string,
93
+ setSelectedMic: (mic: string) => void,
94
+ deviceList: MediaDeviceInfo[],
95
+ isDisabled: boolean,
96
+ ) => JSX.Element;
97
+ }
98
+
99
+ const SelectAudioDevice = (props: SelectAudioDeviceProps) => {
100
+ const {selectedMic, setSelectedMic, deviceList} = useContext(DeviceContext);
101
+ const [isPickerDisabled, btnTheme] = useSelectDevice();
102
+ const [isFocussed, setIsFocussed] = React.useState(false);
103
+
104
+ const data = deviceList
105
+ .filter((device) => {
106
+ if (device.kind === 'audioinput') {
107
+ return true;
108
+ }
109
+ })
110
+ ?.map((device: any) => {
111
+ if (device.kind === 'audioinput') {
112
+ return {
113
+ label: device.label,
114
+ value: device.deviceId,
115
+ };
116
+ }
117
+ });
118
+ return props?.render ? (
119
+ props.render(selectedMic, setSelectedMic, deviceList, isPickerDisabled)
120
+ ) : (
121
+ <>
122
+ <Text style={[style.label]}>Microphone</Text>
123
+ <Dropdown
124
+ icon="mic-on"
125
+ enabled={!isPickerDisabled}
126
+ selectedValue={selectedMic}
127
+ label={!data || !data.length ? 'No Microphone Detected' : ''}
128
+ data={data}
129
+ onSelect={({label, value}) => {
130
+ setIsFocussed(true);
131
+ setSelectedMic(value);
132
+ }}
133
+ />
134
+ </>
135
+ );
136
+ };
137
+
138
+ const SelectDeviceSettings = () => {
139
+ const [isPickerDisabled] = useSelectDevice();
140
+ const {deviceList} = useContext(DeviceContext);
141
+ const {setCameraAvailable, setMicAvailable} = usePreCall();
142
+
143
+ const audioDevices = deviceList.filter((device) => {
144
+ if (device.kind === 'audioinput') {
145
+ return true;
146
+ }
147
+ });
148
+ const videoDevices = deviceList.filter((device) => {
149
+ if (device.kind === 'videoinput') {
150
+ return true;
151
+ }
152
+ });
153
+
154
+ useEffect(() => {
155
+ if (audioDevices && audioDevices.length) {
156
+ setMicAvailable(true);
157
+ }
158
+ }, [audioDevices]);
159
+
160
+ useEffect(() => {
161
+ if (videoDevices && videoDevices.length) {
162
+ setCameraAvailable(true);
163
+ }
164
+ }, [videoDevices]);
165
+
166
+ //commented for v1 release
167
+ // const settingScreenInfoMessage = useString('settingScreenInfoMessage')();
168
+ const settingScreenInfoMessage = $config.AUDIO_ROOM
169
+ ? 'Audio sharing is disabled for attendees. Raise hand to request permission to share.'
170
+ : 'Video and Audio sharing is disabled for attendees. Raise hand to request permission to share.';
171
+ return (
172
+ <View>
173
+ <View>
174
+ {!$config.AUDIO_ROOM && <SelectVideoDevice />}
175
+ <Spacer size={20} />
176
+ <SelectAudioDevice />
177
+ </View>
178
+ {$config.EVENT_MODE && isPickerDisabled && (
179
+ <View>
180
+ <Text style={style.infoTxt}>{settingScreenInfoMessage}</Text>
181
+ </View>
182
+ )}
183
+ </View>
184
+ );
185
+ };
186
+ export const SelectDeviceSettingsComponentsArray: [
187
+ (props: SelectVideoDeviceProps) => JSX.Element,
188
+ (props: SelectAudioDeviceProps) => JSX.Element,
189
+ ] = [SelectVideoDevice, SelectAudioDevice];
190
+
191
+ const style = StyleSheet.create({
192
+ infoTxt: {
193
+ textAlign: 'center',
194
+ fontSize: 12,
195
+ color: '#FF0000',
196
+ },
197
+ label: {
198
+ fontWeight: '400',
199
+ fontSize: ThemeConfig.FontSize.small,
200
+ color: $config.FONT_COLOR,
201
+ fontFamily: ThemeConfig.FontFamily.sansPro,
202
+ marginBottom: 12,
203
+ lineHeight: ThemeConfig.FontSize.small,
204
+ },
205
+ });
206
+
207
+ export default SelectDeviceSettings;
@@ -23,6 +23,7 @@ import microsoft from '../assets/microsoft.png';
23
23
  import Logo from './Logo';
24
24
  import {useHasBrandLogo} from '../utils/common';
25
25
  import {useString} from '../utils/useString';
26
+ import hexadecimalTransparency from '../utils/hexadecimalTransparency';
26
27
 
27
28
  const SelectOAuth = ({onSelectOAuth}) => {
28
29
  const hasBrandLogo = useHasBrandLogo();
@@ -53,7 +54,7 @@ const SelectOAuth = ({onSelectOAuth}) => {
53
54
  fontSize: 16,
54
55
  fontWeight: '500',
55
56
  marginBottom: 20,
56
- color: $config.PRIMARY_FONT_COLOR,
57
+ color: $config.FONT_COLOR,
57
58
  }}>
58
59
  {oauthLoginLabel}
59
60
  </Text>
@@ -130,7 +131,7 @@ const style = StyleSheet.create({
130
131
  },
131
132
  secondaryBtn: {
132
133
  minWidth: 200,
133
- borderColor: $config.PRIMARY_COLOR,
134
+ borderColor: $config.PRIMARY_ACTION_BRAND_COLOR,
134
135
  borderWidth: 1,
135
136
  display: 'flex',
136
137
  justifyContent: 'center',
@@ -138,7 +139,7 @@ const style = StyleSheet.create({
138
139
  alignItems: 'center',
139
140
  alignContent: 'space-around',
140
141
  // paddingTop: 20,
141
- backgroundColor: $config.SECONDARY_FONT_COLOR,
142
+ backgroundColor: $config.SECONDARY_ACTION_COLOR,
142
143
  paddingHorizontal: 30,
143
144
  margin: 10,
144
145
  borderRadius: 100,
@@ -148,7 +149,7 @@ const style = StyleSheet.create({
148
149
  height: 45,
149
150
  lineHeight: 45,
150
151
  fontSize: 16,
151
- color: $config.PRIMARY_COLOR,
152
+ color: $config.PRIMARY_ACTION_BRAND_COLOR,
152
153
  textAlign: 'center',
153
154
  fontWeight: '500',
154
155
  textAlignVertical: 'center',
@@ -187,14 +188,14 @@ const style = StyleSheet.create({
187
188
  fontSize: 32,
188
189
  fontWeight: '700',
189
190
  textAlign: 'center',
190
- color: $config.PRIMARY_FONT_COLOR,
191
+ color: $config.FONT_COLOR,
191
192
  marginBottom: 20,
192
193
  },
193
194
  headline: {
194
195
  fontSize: 18,
195
196
  fontWeight: '400',
196
197
  textAlign: 'center',
197
- color: $config.PRIMARY_FONT_COLOR,
198
+ color: $config.FONT_COLOR,
198
199
  marginBottom: 20,
199
200
  },
200
201
  inputs: {
@@ -219,14 +220,14 @@ const style = StyleSheet.create({
219
220
  // alignItems: 'flex-start',
220
221
  },
221
222
  checkboxTitle: {
222
- color: $config.PRIMARY_FONT_COLOR + 80,
223
+ color: $config.FONT_COLOR + hexadecimalTransparency['80%'],
223
224
  paddingHorizontal: 5,
224
225
  alignSelf: 'center',
225
226
  // marginVertical: 'auto',
226
227
  // fontWeight: '700',
227
228
  },
228
229
  checkboxCaption: {
229
- color: $config.PRIMARY_FONT_COLOR + 80,
230
+ color: $config.FONT_COLOR + hexadecimalTransparency['80%'],
230
231
  paddingHorizontal: 5,
231
232
  },
232
233
  checkboxTextHolder: {
@@ -0,0 +1,112 @@
1
+ import React from 'react';
2
+ import {View, StyleSheet, ViewStyle} from 'react-native';
3
+ import IconButton from '../atoms/IconButton';
4
+ import ThemeConfig from '../theme';
5
+ import {IconsInterface} from '../atoms/CustomIcon';
6
+ import {isWebInternal} from '../utils/common';
7
+
8
+ export interface SidePanelHeaderProps {
9
+ centerComponent?: React.ReactNode;
10
+ leadingIconName?: keyof IconsInterface;
11
+ leadingIconOnPress?: () => void;
12
+ trailingIconName?: keyof IconsInterface;
13
+ trailingIconOnPress?: () => void;
14
+ isChat?: boolean;
15
+ }
16
+ const SidePanelHeader = (props: SidePanelHeaderProps) => {
17
+ const {isChat = false} = props;
18
+ return (
19
+ <View
20
+ style={[
21
+ SidePanelStyles.sidePanelHeader,
22
+ isChat ? SidePanelStyles.chatPadding : {},
23
+ ]}>
24
+ {props?.leadingIconName ? (
25
+ <View>
26
+ <IconButton
27
+ hoverEffect={true}
28
+ hoverEffectStyle={{
29
+ backgroundColor: $config.ICON_BG_COLOR,
30
+ borderRadius: 20,
31
+ }}
32
+ iconProps={{
33
+ iconType: 'plain',
34
+ iconContainerStyle: {
35
+ padding: 5,
36
+ },
37
+ iconSize: 20,
38
+ name: props.leadingIconName,
39
+ tintColor: $config.SECONDARY_ACTION_COLOR,
40
+ }}
41
+ onPress={() => {
42
+ props?.leadingIconOnPress && props.leadingIconOnPress();
43
+ }}
44
+ />
45
+ </View>
46
+ ) : isChat ? (
47
+ <View style={{width: 30, height: 'auto'}}></View>
48
+ ) : (
49
+ <></>
50
+ )}
51
+ {props?.centerComponent ? props.centerComponent : <></>}
52
+ <View>
53
+ {props?.trailingIconName ? (
54
+ <IconButton
55
+ hoverEffect={true}
56
+ hoverEffectStyle={{
57
+ backgroundColor: $config.ICON_BG_COLOR,
58
+ borderRadius: 20,
59
+ }}
60
+ iconProps={{
61
+ iconType: 'plain',
62
+ iconContainerStyle: {
63
+ padding: 5,
64
+ },
65
+ iconSize: 20,
66
+ name: props?.trailingIconName,
67
+ tintColor: $config.SECONDARY_ACTION_COLOR,
68
+ }}
69
+ onPress={() => {
70
+ props?.trailingIconOnPress && props.trailingIconOnPress();
71
+ }}
72
+ />
73
+ ) : (
74
+ <></>
75
+ )}
76
+ </View>
77
+ </View>
78
+ );
79
+ };
80
+
81
+ export const SidePanelStyles = StyleSheet.create({
82
+ sidePanelHeader: {
83
+ height: isWebInternal() ? 60 : 'auto',
84
+ flexDirection: 'row',
85
+ justifyContent: 'space-between',
86
+ alignItems: 'center',
87
+ paddingHorizontal: 20,
88
+ paddingVertical: 22,
89
+ borderBottomWidth: 1,
90
+ borderBottomColor: $config.CARD_LAYER_3_COLOR,
91
+ },
92
+ chatPadding: {
93
+ paddingHorizontal: 20,
94
+ paddingVertical: 12,
95
+ },
96
+ heading: {
97
+ fontFamily: ThemeConfig.FontFamily.sansPro,
98
+ fontSize: ThemeConfig.FontSize.normal,
99
+ lineHeight: 1.6 * ThemeConfig.FontSize.normal,
100
+ fontWeight: '600',
101
+ color: $config.FONT_COLOR,
102
+ alignSelf: 'center',
103
+ },
104
+ alignCenterNoPadding: {
105
+ padding: 0,
106
+ display: 'flex',
107
+ alignSelf: 'center',
108
+ alignItems: 'center',
109
+ justifyContent: 'center',
110
+ },
111
+ });
112
+ export default SidePanelHeader;
@@ -11,9 +11,37 @@
11
11
  */
12
12
  // @ts-nocheck
13
13
  import React from 'react';
14
- import {Platform} from 'react-native';
14
+ import {Platform, TouchableOpacity, View, StyleSheet} from 'react-native';
15
+ import ThemeConfig from '../theme';
15
16
  import Toast, {BaseToast} from '../../react-native-toast-message';
17
+ import CheckBoxBaseToast from '../../react-native-toast-message/src/components/checkbox';
16
18
  import isMobileOrTablet from '../utils/isMobileOrTablet';
19
+ import ImageIcon from '../atoms/ImageIcon';
20
+ import {IconsInterface} from 'src/atoms/CustomIcon';
21
+ import {autoUpdater} from 'electron';
22
+
23
+ const trailingIcon = (
24
+ <TouchableOpacity
25
+ onPress={() => Toast.hide()}
26
+ style={{alignSelf: 'flex-end'}}>
27
+ <View style={{width: 26, height: 26}}>
28
+ <ImageIcon
29
+ iconType="plain"
30
+ tintColor={$config.SECONDARY_ACTION_COLOR}
31
+ name="close"
32
+ iconSize={26}
33
+ />
34
+ </View>
35
+ </TouchableOpacity>
36
+ );
37
+
38
+ const leadingIcon = (iconName: keyof IconsInterface, color: string) => {
39
+ return (
40
+ <View style={{marginRight: 4, alignSelf: 'center', width: 26, height: 26}}>
41
+ <ImageIcon iconType="plain" tintColor={color} name={iconName} />
42
+ </View>
43
+ );
44
+ };
17
45
 
18
46
  const ToastConfig = {
19
47
  /*
@@ -24,22 +52,134 @@ const ToastConfig = {
24
52
  <BaseToast
25
53
  {...rest}
26
54
  //BaseToast is modified to have zIndex: 100
55
+ leadingIcon={leadingIcon('tick-fill', $config.SEMANTIC_SUCCESS)}
56
+ trailingIcon={trailingIcon}
27
57
  style={{
28
- borderLeftColor: $config.PRIMARY_COLOR,
29
- backgroundColor: $config.SECONDARY_FONT_COLOR,
30
- width: !isMobileOrTablet() ? '40%' : '95%',
58
+ borderRadius: 4,
59
+ borderTopWidth: 6,
60
+ backgroundColor: $config.CARD_LAYER_4_COLOR,
61
+ //width: !isMobileOrTablet() ? '40%' : '95%',
62
+ width: '100%',
63
+ borderTopColor: $config.SEMANTIC_SUCCESS,
31
64
  }}
32
- contentContainerStyle={{paddingHorizontal: 15, overflow: 'hidden'}}
33
- text1Style={{
34
- fontSize: 15,
35
- fontWeight: '400',
36
- color: $config.PRIMARY_FONT_COLOR,
65
+ contentContainerStyle={styles.contentContainerStyle}
66
+ text1Style={styles.text1Style}
67
+ text2Style={styles.text2Style}
68
+ text1={text1}
69
+ text2={text2}
70
+ primaryBtn={null}
71
+ secondaryBtn={null}
72
+ />
73
+ ),
74
+ error: ({text1, text2, props, ...rest}) => (
75
+ <BaseToast
76
+ {...rest}
77
+ //BaseToast is modified to have zIndex: 100
78
+ leadingIcon={leadingIcon('alert', $config.SEMANTIC_ERROR)}
79
+ trailingIcon={trailingIcon}
80
+ style={{
81
+ borderRadius: 4,
82
+ borderTopWidth: 6,
83
+ backgroundColor: $config.CARD_LAYER_4_COLOR,
84
+ //width: !isMobileOrTablet() ? '40%' : '95%',
85
+ width: '100%',
86
+ borderTopColor: $config.SEMANTIC_ERROR,
37
87
  }}
88
+ contentContainerStyle={styles.contentContainerStyle}
89
+ text1Style={styles.text1Style}
90
+ text2Style={styles.text2Style}
38
91
  text1={text1}
39
92
  text2={text2}
40
- // text2={props.uuid}
93
+ primaryBtn={null}
94
+ secondaryBtn={null}
95
+ />
96
+ ),
97
+ info: ({text1, text2, props, primaryBtn, secondaryBtn, ...rest}) => (
98
+ <BaseToast
99
+ {...rest}
100
+ //BaseToast is modified to have zIndex: 100
101
+ trailingIcon={trailingIcon}
102
+ style={{
103
+ height: 'auto', //primaryBtn || secondaryBtn ? 185 : text1 && text2 ? 105 : 70,
104
+ borderRadius: ThemeConfig.BorderRadius.small,
105
+ borderTopWidth: 6,
106
+ backgroundColor: $config.CARD_LAYER_4_COLOR,
107
+ width: '100%',
108
+ borderTopColor: $config.PRIMARY_ACTION_BRAND_COLOR,
109
+ }}
110
+ contentContainerStyle={styles.contentContainerStyle}
111
+ text1Style={styles.text1Style}
112
+ text2Style={styles.text2Style}
113
+ text1={text1}
114
+ text2={text2}
115
+ primaryBtn={primaryBtn ? primaryBtn : null}
116
+ secondaryBtn={secondaryBtn ? secondaryBtn : null}
117
+ />
118
+ ),
119
+ checked: ({
120
+ text1,
121
+ text2,
122
+ props,
123
+ primaryBtn,
124
+ secondaryBtn,
125
+ checkbox,
126
+ ...rest
127
+ }) => (
128
+ <CheckBoxBaseToast
129
+ {...rest}
130
+ //BaseToast is modified to have zIndex: 100
131
+ trailingIcon={trailingIcon}
132
+ style={{
133
+ height: primaryBtn || secondaryBtn ? 185 : text1 && text2 ? 105 : 70,
134
+ borderRadius: 4,
135
+ borderTopWidth: 6,
136
+ backgroundColor: $config.CARD_LAYER_4_COLOR,
137
+ width: '100%',
138
+ borderTopColor: $config.PRIMARY_ACTION_BRAND_COLOR,
139
+ }}
140
+ contentContainerStyle={styles.contentContainerStyle}
141
+ text1Style={styles.text1Style}
142
+ text2Style={styles.text2Style}
143
+ subTextStyle={styles.subTextStyle}
144
+ text1={text1}
145
+ text2={text2}
146
+ primaryBtn={primaryBtn ? primaryBtn : null}
147
+ secondaryBtn={secondaryBtn ? secondaryBtn : null}
148
+ checkbox={checkbox}
41
149
  />
42
150
  ),
43
151
  };
44
152
 
45
153
  export default ToastConfig;
154
+
155
+ const styles = StyleSheet.create({
156
+ text1Style: {
157
+ fontSize: ThemeConfig.FontSize.normal,
158
+ lineHeight: 22,
159
+ fontFamily: ThemeConfig.FontFamily.sansPro,
160
+ fontWeight: '600',
161
+ color: $config.FONT_COLOR,
162
+ alignSelf: 'center',
163
+ },
164
+ text2Style: {
165
+ fontSize: ThemeConfig.FontSize.normal,
166
+ lineHeight: 22,
167
+ fontFamily: ThemeConfig.FontFamily.sansPro,
168
+ fontWeight: '400',
169
+ color: $config.FONT_COLOR + ThemeConfig.EmphasisPlus.medium,
170
+ marginTop: 11,
171
+ alignSelf: 'center',
172
+ },
173
+ subTextStyle: {
174
+ color: $config.FONT_COLOR + ThemeConfig.EmphasisPlus.medium,
175
+ },
176
+ contentContainerStyle: {
177
+ paddingHorizontal: 15,
178
+ paddingTop: 20,
179
+ paddingBottom: 25,
180
+ overflow: 'hidden',
181
+ flexDirection: 'column',
182
+ justifyContent: 'flex-start',
183
+ },
184
+ containerStyle: {},
185
+ });