agora-appbuilder-core 3.0.10 → 3.0.12

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 (249) hide show
  1. package/Readme.md +0 -6
  2. package/package.json +2 -2
  3. package/template/_package-lock.json +4979 -7086
  4. package/template/agora-rn-uikit/src/Contexts/LocalUserContext.tsx +0 -4
  5. package/template/agora-rn-uikit/src/Contexts/PropsContext.tsx +0 -18
  6. package/template/agora-rn-uikit/src/Contexts/RtcContext.tsx +0 -2
  7. package/template/agora-rn-uikit/src/Controls/BtnTemplate.tsx +26 -30
  8. package/template/agora-rn-uikit/src/Controls/Icons.ts +83 -30
  9. package/template/agora-rn-uikit/src/Controls/ImageIcon.tsx +6 -6
  10. package/template/agora-rn-uikit/src/Reducer/LocalMuteAudio.ts +0 -1
  11. package/template/agora-rn-uikit/src/Reducer/LocalMuteVideo.ts +0 -1
  12. package/template/agora-rn-uikit/src/Reducer/RemoteAudioStateChanged.ts +0 -1
  13. package/template/agora-rn-uikit/src/Reducer/RemoteVideoStateChanged.ts +0 -1
  14. package/template/agora-rn-uikit/src/Reducer/UpdateDualStreamMode.ts +0 -1
  15. package/template/agora-rn-uikit/src/Reducer/UserJoined.ts +0 -2
  16. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteAudio.ts +0 -1
  17. package/template/agora-rn-uikit/src/Reducer/UserMuteRemoteVideo.ts +0 -1
  18. package/template/agora-rn-uikit/src/Reducer/UserOffline.ts +0 -1
  19. package/template/agora-rn-uikit/src/Reducer/index.ts +0 -3
  20. package/template/agora-rn-uikit/src/Rtc/Create.tsx +1 -89
  21. package/template/agora-rn-uikit/src/RtcConfigure.tsx +2 -39
  22. package/template/agora-rn-uikit/src/Views/MaxVideoView.native.tsx +5 -15
  23. package/template/agora-rn-uikit/src/Views/MaxVideoView.tsx +9 -15
  24. package/template/agora-rn-uikit/src/index.ts +1 -3
  25. package/template/android/app/build.gradle +0 -1
  26. package/template/android/app/src/main/AndroidManifest.xml +15 -22
  27. package/template/android/app/src/main/java/com/helloworld/MainActivity.java +0 -50
  28. package/template/android/build.gradle +3 -3
  29. package/template/babel.config.js +0 -1
  30. package/template/bridge/rtc/webNg/RtcEngine.ts +17 -110
  31. package/template/customization-api/sub-components.ts +1 -1
  32. package/template/customization-api/typeDefinition.ts +1 -2
  33. package/template/electron/index.html +27 -27
  34. package/template/electron/renderer/index.js +0 -1
  35. package/template/global.d.ts +4 -26
  36. package/template/index.js +0 -4
  37. package/template/index.rsdk.tsx +0 -1
  38. package/template/index.web.js +1 -7
  39. package/template/index.wsdk.tsx +1 -1
  40. package/template/ios/HelloWorld/Info.plist +1 -14
  41. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +0 -17
  42. package/template/metro.config.js +1 -1
  43. package/template/package.json +7 -21
  44. package/template/react-native-toast-message/index.d.ts +43 -43
  45. package/template/react-native-toast-message/src/colors/index.js +2 -3
  46. package/template/react-native-toast-message/src/components/base/index.js +59 -46
  47. package/template/react-native-toast-message/src/components/base/styles.js +32 -16
  48. package/template/react-native-toast-message/src/components/error.js +2 -3
  49. package/template/react-native-toast-message/src/components/info.js +2 -3
  50. package/template/react-native-toast-message/src/components/success.js +2 -3
  51. package/template/react-native-toast-message/src/index.js +31 -122
  52. package/template/react-native-toast-message/src/index.sdk.tsx +35 -125
  53. package/template/react-native-toast-message/src/styles.js +4 -3
  54. package/template/react-native-toast-message/src/styles.sdk.ts +4 -3
  55. package/template/src/App.tsx +0 -6
  56. package/template/src/AppWrapper.tsx +28 -63
  57. package/template/src/assets/icons.ts +102 -0
  58. package/template/src/atoms/HorizontalRule.tsx +1 -3
  59. package/template/src/atoms/PrimaryButton.tsx +26 -51
  60. package/template/src/atoms/SecondaryButton.tsx +5 -8
  61. package/template/src/atoms/TextInput.tsx +14 -12
  62. package/template/src/components/Chat.tsx +214 -86
  63. package/template/src/components/ChatContext.ts +1 -8
  64. package/template/src/components/ColorConfigure.tsx +1 -1
  65. package/template/src/components/ColorContext.ts +1 -1
  66. package/template/src/components/{Controls1.native.tsx → Controls.native.tsx} +4 -6
  67. package/template/src/components/Controls.tsx +42 -342
  68. package/template/src/components/DeviceConfigure.tsx +101 -461
  69. package/template/src/components/DeviceContext.tsx +4 -8
  70. package/template/src/components/EventsConfigure.tsx +7 -144
  71. package/template/src/components/GraphQLProvider.tsx +1 -1
  72. package/template/src/components/GridVideo.tsx +44 -59
  73. package/template/src/components/HostControlView.tsx +35 -114
  74. package/template/src/components/Navbar.tsx +398 -216
  75. package/template/src/components/NetworkQualityContext.tsx +20 -20
  76. package/template/src/components/ParticipantsView.tsx +154 -177
  77. package/template/src/components/PinnedVideo.tsx +120 -207
  78. package/template/src/components/Precall.native.tsx +119 -358
  79. package/template/src/components/Precall.tsx +135 -269
  80. package/template/src/components/RTMConfigure.tsx +4 -27
  81. package/template/src/components/Router.electron.ts +0 -1
  82. package/template/src/components/Router.native.ts +0 -1
  83. package/template/src/components/Router.sdk.ts +0 -1
  84. package/template/src/components/Router.ts +0 -1
  85. package/template/src/components/Settings.tsx +95 -26
  86. package/template/src/components/SettingsView.tsx +56 -251
  87. package/template/src/components/Share.tsx +273 -302
  88. package/template/src/components/StorageContext.tsx +3 -30
  89. package/template/src/components/chat-messages/useChatMessages.tsx +23 -69
  90. package/template/src/components/chat-ui/useChatUIControl.tsx +0 -7
  91. package/template/src/components/common/Error.tsx +6 -20
  92. package/template/src/components/common/Logo.tsx +15 -16
  93. package/template/src/components/contexts/LiveStreamDataContext.tsx +5 -10
  94. package/template/src/components/contexts/VideoMeetingDataContext.tsx +7 -37
  95. package/template/src/components/livestream/LiveStreamContext.tsx +36 -270
  96. package/template/src/components/livestream/Types.ts +14 -39
  97. package/template/src/components/livestream/index.ts +0 -1
  98. package/template/src/components/livestream/views/LiveStreamControls.tsx +4 -12
  99. package/template/src/components/participants/AllAudienceParticipants.tsx +30 -101
  100. package/template/src/components/participants/AllHostParticipants.tsx +34 -103
  101. package/template/src/components/participants/MeParticipant.tsx +38 -0
  102. package/template/src/components/participants/ParticipantName.tsx +7 -13
  103. package/template/src/components/participants/ParticipantSectionTitle.tsx +10 -35
  104. package/template/src/components/participants/RemoteParticipants.tsx +71 -0
  105. package/template/src/components/participants/ScreenshareParticipants.tsx +12 -144
  106. package/template/src/components/precall/{LocalMute1.native.tsx → LocalMute.native.tsx} +5 -21
  107. package/template/src/components/precall/LocalMute.tsx +14 -84
  108. package/template/src/components/precall/VideoPreview.native.tsx +3 -48
  109. package/template/src/components/precall/VideoPreview.tsx +7 -163
  110. package/template/src/components/precall/joinCallBtn.tsx +2 -15
  111. package/template/src/components/precall/meetingTitle.tsx +12 -15
  112. package/template/src/components/precall/selectDevice.tsx +21 -1
  113. package/template/src/components/precall/textInput.tsx +4 -32
  114. package/template/src/components/precall/usePreCall.tsx +0 -16
  115. package/template/src/components/styles.ts +21 -42
  116. package/template/src/components/useShareLink.tsx +14 -12
  117. package/template/src/language/default-labels/precallScreenLabels.ts +3 -3
  118. package/template/src/pages/Authenticate.tsx +15 -5
  119. package/template/src/pages/Create.tsx +165 -293
  120. package/template/src/pages/Join.tsx +67 -93
  121. package/template/src/pages/VideoCall.tsx +64 -89
  122. package/template/src/pages/video-call/DefaultLayouts.ts +4 -4
  123. package/template/src/pages/video-call/NameWithMicIcon.tsx +44 -120
  124. package/template/src/pages/video-call/RenderComponent.tsx +2 -3
  125. package/template/src/pages/video-call/VideoCallScreen.tsx +9 -45
  126. package/template/src/pages/video-call/VideoComponent.tsx +3 -18
  127. package/template/src/pages/video-call/VideoRenderer.tsx +60 -218
  128. package/template/src/rtm-events/constants.ts +0 -2
  129. package/template/src/subComponents/ChatBubble.tsx +83 -123
  130. package/template/src/subComponents/ChatContainer.tsx +84 -257
  131. package/template/src/subComponents/ChatInput.tsx +46 -61
  132. package/template/src/subComponents/Checkbox.native.tsx +5 -16
  133. package/template/src/subComponents/Checkbox.tsx +2 -2
  134. package/template/src/subComponents/CopyJoinInfo.tsx +58 -36
  135. package/template/src/subComponents/FallbackLogo.tsx +40 -122
  136. package/template/src/subComponents/LanguageSelector.tsx +1 -1
  137. package/template/src/subComponents/{LayoutIconDropdown1.native.tsx → LayoutIconDropdown.native.tsx} +18 -4
  138. package/template/src/subComponents/LayoutIconDropdown.tsx +134 -131
  139. package/template/src/subComponents/LocalAudioMute.tsx +27 -119
  140. package/template/src/subComponents/LocalEndCall.tsx +33 -71
  141. package/template/src/subComponents/LocalSwitchCamera.tsx +30 -17
  142. package/template/src/subComponents/LocalVideoMute.tsx +27 -117
  143. package/template/src/subComponents/Logo.tsx +4 -3
  144. package/template/src/subComponents/LogoutButton.tsx +1 -1
  145. package/template/src/subComponents/NetworkQualityPill.tsx +63 -60
  146. package/template/src/subComponents/OpenInNativeButton.tsx +3 -3
  147. package/template/src/subComponents/Recording.tsx +29 -28
  148. package/template/src/subComponents/RemoteAudioMute.tsx +29 -83
  149. package/template/src/subComponents/RemoteEndCall.tsx +5 -8
  150. package/template/src/subComponents/RemoteVideoMute.tsx +21 -74
  151. package/template/src/subComponents/ScreenShareNotice.tsx +8 -83
  152. package/template/src/subComponents/SelectDevice.tsx +61 -404
  153. package/template/src/subComponents/SelectOAuth.tsx +8 -9
  154. package/template/src/subComponents/ToastConfig.tsx +10 -150
  155. package/template/src/subComponents/chat/ChatParticipants.tsx +78 -187
  156. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -95
  157. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +33 -29
  158. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +6 -6
  159. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +11 -24
  160. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +10 -17
  161. package/template/src/subComponents/recording/useRecording.tsx +27 -79
  162. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +70 -52
  163. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +2 -11
  164. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +4 -26
  165. package/template/src/utils/common.tsx +1 -155
  166. package/template/src/utils/index.tsx +0 -19
  167. package/template/src/utils/isMobileOrTablet.ts +2 -7
  168. package/template/src/utils/useButtonTemplate.tsx +0 -1
  169. package/template/src/utils/useMuteToggleLocal.ts +3 -54
  170. package/template/web/index.html +0 -5
  171. package/template/webpack.commons.js +8 -13
  172. package/template/webpack.web.config.js +0 -1
  173. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +0 -11
  174. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +0 -24
  175. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +0 -11
  176. package/template/android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  177. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  178. package/template/android/app/src/main/res/values/colors.xml +0 -7
  179. package/template/react-native-toast-message/src/components/checkbox.js +0 -178
  180. package/template/react-native.config.js +0 -7
  181. package/template/src/assets/font-styles.css +0 -329
  182. package/template/src/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  183. package/template/src/assets/fonts/icomoon.ttf +0 -0
  184. package/template/src/assets/permission.png +0 -0
  185. package/template/src/assets/selection.json +0 -1
  186. package/template/src/atoms/ActionMenu.tsx +0 -236
  187. package/template/src/atoms/AnimatedActiveSpeaker.native.tsx +0 -71
  188. package/template/src/atoms/AnimatedActiveSpeaker.tsx +0 -84
  189. package/template/src/atoms/AnimatedRings.native.tsx +0 -68
  190. package/template/src/atoms/AnimatedRings.tsx +0 -70
  191. package/template/src/atoms/Card.tsx +0 -61
  192. package/template/src/atoms/CircularProgress.native.tsx +0 -121
  193. package/template/src/atoms/CircularProgress.tsx +0 -102
  194. package/template/src/atoms/CustomIcon.tsx +0 -88
  195. package/template/src/atoms/CustomSwitch.tsx +0 -287
  196. package/template/src/atoms/Dropdown.tsx +0 -306
  197. package/template/src/atoms/IconButton.tsx +0 -162
  198. package/template/src/atoms/ImageIcon.tsx +0 -98
  199. package/template/src/atoms/InfoBubble.tsx +0 -291
  200. package/template/src/atoms/Input.tsx +0 -87
  201. package/template/src/atoms/InviteInfo.tsx +0 -166
  202. package/template/src/atoms/LinkButton.tsx +0 -28
  203. package/template/src/atoms/OutlineButton.tsx +0 -61
  204. package/template/src/atoms/ParticipantsCount.tsx +0 -73
  205. package/template/src/atoms/Popup.tsx +0 -147
  206. package/template/src/atoms/RecordingInfo.tsx +0 -49
  207. package/template/src/atoms/Spacer.tsx +0 -22
  208. package/template/src/atoms/TertiaryButton.tsx +0 -78
  209. package/template/src/atoms/Toggle.tsx +0 -47
  210. package/template/src/atoms/Tooltip.native.tsx +0 -65
  211. package/template/src/atoms/Tooltip.tsx +0 -94
  212. package/template/src/atoms/UserAvatar.tsx +0 -60
  213. package/template/src/components/CommonStyles.ts +0 -44
  214. package/template/src/components/ToastComponent.tsx +0 -8
  215. package/template/src/components/participants/Participant.tsx +0 -302
  216. package/template/src/components/participants/UserActionMenuOptions.tsx +0 -398
  217. package/template/src/components/popups/InvitePopup.tsx +0 -115
  218. package/template/src/components/popups/StopRecordingPopup.tsx +0 -114
  219. package/template/src/components/precall/PermissionHelper.native.tsx +0 -5
  220. package/template/src/components/precall/PermissionHelper.tsx +0 -126
  221. package/template/src/components/precall/PreCallSettings.tsx +0 -52
  222. package/template/src/components/useToast.tsx +0 -41
  223. package/template/src/components/useVideoCall.tsx +0 -65
  224. package/template/src/pages/Endcall.tsx +0 -148
  225. package/template/src/pages/video-call/ActionSheet.native.tsx +0 -215
  226. package/template/src/pages/video-call/ActionSheet.tsx +0 -226
  227. package/template/src/pages/video-call/ActionSheetContent.tsx +0 -479
  228. package/template/src/pages/video-call/ActionSheetHandle.tsx +0 -38
  229. package/template/src/pages/video-call/ActionSheetStyles.css +0 -138
  230. package/template/src/pages/video-call/SidePanelHeader.tsx +0 -190
  231. package/template/src/pages/video-call/VideoCallMobileView.tsx +0 -139
  232. package/template/src/pages/video-call/VideoCallScreen.native.tsx +0 -37
  233. package/template/src/subComponents/ChatInput.ios.tsx +0 -237
  234. package/template/src/subComponents/EndcallPopup.tsx +0 -107
  235. package/template/src/subComponents/LayoutIconButton.tsx +0 -201
  236. package/template/src/subComponents/RemoteMutePopup.tsx +0 -193
  237. package/template/src/subComponents/RemoveMeetingPopup.tsx +0 -109
  238. package/template/src/subComponents/RemoveScreensharePopup.tsx +0 -109
  239. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +0 -207
  240. package/template/src/subComponents/SidePanelHeader.tsx +0 -112
  241. package/template/src/theme/index.ts +0 -46
  242. package/template/src/utils/PlatformWrapper.tsx +0 -21
  243. package/template/src/utils/hexadecimalTransparency.ts +0 -108
  244. package/template/src/utils/pendingStateUpdateHelper.ts +0 -19
  245. package/template/src/utils/useFocus.tsx +0 -46
  246. package/template/src/utils/useIsActiveSpeaker.ts +0 -27
  247. package/template/src/utils/useIsHandRaised.ts +0 -13
  248. package/template/src/utils/useRemoteEndScreenshare.ts +0 -26
  249. package/template/src/utils/useRemoteRequest.ts +0 -84
@@ -9,40 +9,13 @@
9
9
  information visit https://appbuilder.agora.io.
10
10
  *********************************************
11
11
  */
12
- import React, {useContext, useEffect, useState, useMemo} from 'react';
13
- import {StyleSheet, View, Text} from 'react-native';
14
- import {
15
- PropsContext,
16
- ClientRole,
17
- LocalContext,
18
- PermissionState,
19
- LocalUserContext,
20
- } from '../../agora-rn-uikit';
12
+ import React, {useContext} from 'react';
13
+ import {Picker, StyleSheet, View, Text} from 'react-native';
14
+ import {PropsContext, ClientRole} from '../../agora-rn-uikit';
21
15
  import DeviceContext from '../components/DeviceContext';
22
16
  import ColorContext from '../components/ColorContext';
23
17
  import {useString} from '../utils/useString';
24
- import Spacer from '../atoms/Spacer';
25
- import Dropdown from '../atoms/Dropdown';
26
- import {usePreCall} from '../components/precall/usePreCall';
27
- import ThemeConfig from '../theme';
28
- import {randomNameGenerator} from '../utils';
29
- import pendingStateUpdateHelper from '../utils/pendingStateUpdateHelper';
30
18
  // import {dropdown} from '../../theme.json';
31
-
32
- /*
33
- * Chrome sometimes doesn't apply the "Default" prefix hence
34
- * Checks if the deviceId is default and adds "Default - " to label
35
- * string if not already present to differentiate from actual
36
- * device entry.
37
- */
38
- const applyDefaultPrefixConditionally = (device: MediaDeviceInfo) => {
39
- const {label, deviceId} = device;
40
- if (deviceId === 'default') {
41
- return label.includes('Default') ? label : 'Default - ' + label;
42
- }
43
- return label;
44
- };
45
-
46
19
  /**
47
20
  * A component to diplay a dropdown and select a device.
48
21
  * It will add the selected device to the device context.
@@ -52,7 +25,6 @@ const useSelectDevice = (): [boolean, string] => {
52
25
  const {primaryColor} = useContext(ColorContext);
53
26
  const [btnTheme, setBtnTheme] = React.useState<string>(primaryColor);
54
27
  const [isPickerDisabled, setPickerDisabled] = React.useState<boolean>(false);
55
-
56
28
  React.useEffect(() => {
57
29
  if ($config.EVENT_MODE && rtcProps.role === ClientRole.Audience) {
58
30
  setPickerDisabled(true);
@@ -62,7 +34,6 @@ const useSelectDevice = (): [boolean, string] => {
62
34
  setBtnTheme(primaryColor);
63
35
  }
64
36
  }, [rtcProps?.role]);
65
-
66
37
  return [isPickerDisabled, btnTheme];
67
38
  };
68
39
 
@@ -73,83 +44,31 @@ interface SelectVideoDeviceProps {
73
44
  deviceList: MediaDeviceInfo[],
74
45
  isDisabled: boolean,
75
46
  ) => JSX.Element;
76
- isIconDropdown?: boolean;
77
47
  }
78
48
 
79
49
  const SelectVideoDevice = (props: SelectVideoDeviceProps) => {
80
50
  const {selectedCam, setSelectedCam, deviceList} = useContext(DeviceContext);
81
51
  const [isPickerDisabled, btnTheme] = useSelectDevice();
82
- const [isFocussed, setIsFocussed] = React.useState(false);
83
- const [isPendingUpdate, setIsPendingUpdate] = useState(isPickerDisabled);
84
- const local = useContext(LocalContext);
85
-
86
- const data = useMemo(() => {
87
- return deviceList
88
- .filter((device) => {
89
- if (device.kind === 'videoinput') {
90
- return true;
91
- }
92
- })
93
- ?.map((device: any) => {
94
- if (device.kind === 'videoinput') {
95
- return {
96
- label: device.label,
97
- value: device.deviceId,
98
- };
99
- }
100
- });
101
- }, [deviceList]);
102
-
103
- useEffect(() => {
104
- const selectedDeviceExists = Boolean(
105
- data.find((device) => device.value === selectedCam),
106
- );
107
- if (isPendingUpdate) {
108
- selectedDeviceExists && setIsPendingUpdate(false);
109
- } else {
110
- !selectedDeviceExists && data?.length && setIsPendingUpdate(true);
111
- }
112
- }, [selectedCam, data]);
113
-
114
- const isPermissionGranted =
115
- local.permissionStatus === PermissionState.GRANTED_FOR_CAM_AND_MIC ||
116
- local.permissionStatus === PermissionState.GRANTED_FOR_CAM_ONLY;
117
52
  return props?.render ? (
118
53
  props.render(selectedCam, setSelectedCam, deviceList, isPickerDisabled)
119
54
  ) : (
120
- <>
121
- <Text style={style.label}>Camera</Text>
122
- <Dropdown
123
- icon={
124
- isPendingUpdate && isPermissionGranted
125
- ? 'connection-loading'
126
- : props?.isIconDropdown
127
- ? 'video-on'
128
- : undefined
129
- }
130
- enabled={!isPickerDisabled}
131
- label={
132
- !isPermissionGranted || !data || !data.length
133
- ? 'No Camera Detected'
134
- : isPendingUpdate
135
- ? 'Updating'
136
- : 'No Camera Selected'
55
+ <Picker
56
+ enabled={!isPickerDisabled}
57
+ selectedValue={selectedCam}
58
+ style={[{borderColor: btnTheme}, style.popupPicker]}
59
+ onValueChange={(itemValue) => setSelectedCam(itemValue)}>
60
+ {deviceList.map((device: any) => {
61
+ if (device.kind === 'videoinput') {
62
+ return (
63
+ <Picker.Item
64
+ label={device.label}
65
+ value={device.deviceId}
66
+ key={device.deviceId}
67
+ />
68
+ );
137
69
  }
138
- data={isPermissionGranted ? data : []}
139
- onSelect={({label, value}) => {
140
- setIsFocussed(true);
141
- try {
142
- pendingStateUpdateHelper(
143
- async () => await setSelectedCam(value),
144
- setIsPendingUpdate,
145
- );
146
- } catch (e) {
147
- setIsPendingUpdate(false);
148
- }
149
- }}
150
- selectedValue={selectedCam}
151
- />
152
- </>
70
+ })}
71
+ </Picker>
153
72
  );
154
73
  };
155
74
 
@@ -160,337 +79,75 @@ interface SelectAudioDeviceProps {
160
79
  deviceList: MediaDeviceInfo[],
161
80
  isDisabled: boolean,
162
81
  ) => JSX.Element;
163
- isIconDropdown?: boolean;
164
82
  }
165
83
 
166
84
  const SelectAudioDevice = (props: SelectAudioDeviceProps) => {
167
85
  const {selectedMic, setSelectedMic, deviceList} = useContext(DeviceContext);
168
86
  const [isPickerDisabled, btnTheme] = useSelectDevice();
169
- const [isFocussed, setIsFocussed] = useState(false);
170
- const local = useContext(LocalContext);
171
- const [isPendingUpdate, setIsPendingUpdate] = useState(isPickerDisabled);
172
-
173
- const data = useMemo(() => {
174
- return deviceList
175
- .filter((device) => {
176
- if (device.kind === 'audioinput') {
177
- return true;
178
- }
179
- })
180
- ?.map((device: any) => {
181
- if (device.kind === 'audioinput') {
182
- return {
183
- label: applyDefaultPrefixConditionally(device),
184
- value: device.deviceId,
185
- };
186
- }
187
- });
188
- }, [deviceList]);
189
-
190
- useEffect(() => {
191
- const selectedDeviceExists = Boolean(
192
- data.find((device) => device.value === selectedMic),
193
- );
194
- if (isPendingUpdate) {
195
- selectedDeviceExists && setIsPendingUpdate(false);
196
- } else {
197
- !selectedDeviceExists && data?.length && setIsPendingUpdate(true);
198
- }
199
- }, [selectedMic, data]);
200
-
201
- const isPermissionGranted =
202
- local.permissionStatus === PermissionState.GRANTED_FOR_CAM_AND_MIC ||
203
- local.permissionStatus === PermissionState.GRANTED_FOR_MIC_ONLY;
204
87
  return props?.render ? (
205
88
  props.render(selectedMic, setSelectedMic, deviceList, isPickerDisabled)
206
89
  ) : (
207
- <View>
208
- <Text style={style.label}>Microphone</Text>
209
- <Dropdown
210
- icon={
211
- isPendingUpdate && isPermissionGranted
212
- ? 'connection-loading'
213
- : props?.isIconDropdown
214
- ? 'mic-on'
215
- : undefined
216
- }
217
- enabled={!isPickerDisabled && !isPendingUpdate}
218
- selectedValue={selectedMic}
219
- label={
220
- !isPermissionGranted || !data || !data.length
221
- ? 'No Microphone Detected'
222
- : isPendingUpdate
223
- ? 'Updating'
224
- : 'No Microphone Selected'
225
- }
226
- data={isPermissionGranted ? data : []}
227
- onSelect={({label, value}) => {
228
- setIsFocussed(true);
229
- try {
230
- pendingStateUpdateHelper(
231
- async () => await setSelectedMic(value),
232
- setIsPendingUpdate,
233
- );
234
- } catch (e) {
235
- setIsPendingUpdate(false);
236
- }
237
- }}
238
- />
239
- </View>
240
- );
241
- };
242
-
243
- interface SelectSpeakerDeviceProps {
244
- render?: (
245
- selectedSpeaker: string,
246
- setSelectedSpeaker: (speaker: string) => void,
247
- deviceList: MediaDeviceInfo[],
248
- isDisabled: boolean,
249
- ) => JSX.Element;
250
- isIconDropdown?: boolean;
251
- }
252
-
253
- const SelectSpeakerDevice = (props: SelectSpeakerDeviceProps) => {
254
- const {selectedSpeaker, setSelectedSpeaker, deviceList} =
255
- useContext(DeviceContext);
256
- const local = useContext(LocalContext);
257
- const [isPickerDisabled, btnTheme] = useSelectDevice();
258
- const [isFocussed, setIsFocussed] = React.useState(false);
259
- const [isPendingUpdate, setIsPendingUpdate] = useState(isPickerDisabled);
260
- const newRandomDeviceId = randomNameGenerator(64).toUpperCase();
261
-
262
- const data = useMemo(() => {
263
- return deviceList
264
- .filter((device) => {
265
- if (device.kind === 'audiooutput') {
266
- return true;
267
- }
268
- })
269
- ?.map((device) => {
270
- if (device.kind === 'audiooutput') {
271
- return {
272
- label: applyDefaultPrefixConditionally(device),
273
- value: device.deviceId,
274
- };
90
+ <Picker
91
+ enabled={!isPickerDisabled}
92
+ selectedValue={selectedMic}
93
+ style={[{borderColor: btnTheme}, style.popupPicker]}
94
+ onValueChange={(itemValue) => setSelectedMic(itemValue)}>
95
+ {deviceList.map((device: any) => {
96
+ if (device.kind === 'audioinput') {
97
+ return (
98
+ <Picker.Item
99
+ label={device.label}
100
+ value={device.deviceId}
101
+ key={device.deviceId}
102
+ />
103
+ );
275
104
  }
276
- });
277
- }, [deviceList]);
278
-
279
- useEffect(() => {
280
- const selectedDeviceExists = Boolean(
281
- data.find((device) => device.value === selectedSpeaker),
282
- );
283
- if (isPendingUpdate) {
284
- selectedDeviceExists && setIsPendingUpdate(false);
285
- } else {
286
- !selectedDeviceExists && data?.length && setIsPendingUpdate(true);
287
- }
288
- }, [selectedSpeaker, data]);
289
-
290
- return props?.render ? (
291
- props.render(
292
- selectedSpeaker,
293
- setSelectedSpeaker,
294
- deviceList,
295
- isPickerDisabled,
296
- )
297
- ) : (
298
- <View>
299
- <Text style={style.label}>Speaker</Text>
300
- {(local.permissionStatus === PermissionState.GRANTED_FOR_CAM_AND_MIC ||
301
- local.permissionStatus === PermissionState.GRANTED_FOR_MIC_ONLY) &&
302
- (!data || data.length === 0) ? (
303
- <Dropdown
304
- icon={props?.isIconDropdown ? 'speaker' : undefined}
305
- enabled={!isPickerDisabled}
306
- selectedValue={newRandomDeviceId}
307
- label={''}
308
- data={[
309
- {
310
- value: newRandomDeviceId,
311
- label: 'System Default Speaker Device',
312
- },
313
- ]}
314
- onSelect={({label, value}) => {
315
- setIsFocussed(true);
316
- try {
317
- pendingStateUpdateHelper(
318
- async () => await setSelectedSpeaker(value),
319
- setIsPendingUpdate,
320
- );
321
- } catch (e) {
322
- setIsPendingUpdate(false);
323
- }
324
- }}
325
- />
326
- ) : (
327
- <Dropdown
328
- icon={
329
- isPendingUpdate
330
- ? 'connection-loading'
331
- : props?.isIconDropdown
332
- ? 'speaker'
333
- : undefined
334
- }
335
- enabled={data && data.length && !isPendingUpdate}
336
- selectedValue={selectedSpeaker}
337
- label={
338
- !data || !data.length
339
- ? 'No Speaker Detected'
340
- : isPendingUpdate
341
- ? 'Updating'
342
- : ''
343
- }
344
- data={data}
345
- onSelect={({label, value}) => {
346
- setIsFocussed(true);
347
- setSelectedSpeaker(value);
348
- }}
349
- />
350
- )}
351
- </View>
105
+ })}
106
+ </Picker>
352
107
  );
353
108
  };
354
109
 
355
- interface SelectDeviceProps {
356
- isIconDropdown?: boolean;
357
- }
358
-
359
- const SelectDevice = (props: SelectDeviceProps) => {
110
+ const SelectDevice = () => {
360
111
  const [isPickerDisabled] = useSelectDevice();
361
- const {deviceList} = useContext(DeviceContext);
362
- const {setCameraAvailable, setMicAvailable, setSpeakerAvailable} =
363
- usePreCall();
364
-
365
- const [audioDevices, videoDevices, speakerDevices] = useMemo(
366
- () =>
367
- deviceList.reduce(
368
- (prev, device) => {
369
- const [audioDevices, videoDevices, speakerDevices] = prev;
370
- if (device.kind === 'audioinput') {
371
- audioDevices.push(device);
372
- } else if (device.kind === 'videoinput') {
373
- videoDevices.push(device);
374
- } else if (device.kind === 'audiooutput') {
375
- speakerDevices.push(device);
376
- }
377
-
378
- return [audioDevices, videoDevices, speakerDevices];
379
- },
380
- [[], [], []] as any,
381
- ),
382
- [deviceList],
383
- );
384
-
385
- // const audioDevices =
386
- // deviceList.filter((device) => {
387
- // if (device.kind === 'audioinput') {
388
- // return true;
389
- // }
390
- // });
391
- //
392
- // const videoDevices = deviceList.filter((device) => {
393
- // if (device.kind === 'videoinput') {
394
- // return true;
395
- // }
396
- // });
397
- // const speakerDevices = deviceList.filter((device) => {
398
- // if (device.kind === 'audiooutput') {
399
- // return true;
400
- // }
401
- // });
402
-
403
- useEffect(() => {
404
- if (audioDevices && audioDevices.length) {
405
- setMicAvailable(true);
406
- }
407
- }, [audioDevices]);
408
-
409
- useEffect(() => {
410
- if (videoDevices && videoDevices.length) {
411
- setCameraAvailable(true);
412
- }
413
- }, [videoDevices]);
414
-
415
- useEffect(() => {
416
- if (speakerDevices && speakerDevices.length) {
417
- setSpeakerAvailable(true);
418
- }
419
- }, [speakerDevices]);
420
-
421
112
  //commented for v1 release
422
113
  // const settingScreenInfoMessage = useString('settingScreenInfoMessage')();
423
- // const settingScreenInfoMessage = $config.AUDIO_ROOM
424
- // ? 'Audio sharing is disabled for attendees. Raise hand to request permission to share.'
425
- // : 'Video and Audio sharing is disabled for attendees. Raise hand to request permission to share.';
426
- const settingScreenInfoMessage =
427
- 'Attendees need to raise their hand to access the devices.';
114
+ const settingScreenInfoMessage = $config.AUDIO_ROOM
115
+ ? 'Audio sharing is disabled for attendees. Raise hand to request permission to share.'
116
+ : 'Video and Audio sharing is disabled for attendees. Raise hand to request permission to share.';
428
117
  return (
429
- <>
430
- <>
431
- {$config.EVENT_MODE && isPickerDisabled && (
432
- <>
433
- <Spacer size={24} />
434
- <View style={style.infoTxtContainer}>
435
- <Text style={style.infoTxt}>{settingScreenInfoMessage}</Text>
436
- </View>
437
- </>
438
- )}
439
- <Spacer size={24} />
440
- {!$config.AUDIO_ROOM && (
441
- <>
442
- <SelectVideoDevice {...props} />
443
- <Spacer size={24} />
444
- </>
445
- )}
446
- <SelectAudioDevice {...props} />
447
- <Spacer size={24} />
448
- <SelectSpeakerDevice {...props} />
449
- <Spacer size={24} />
450
- </>
451
- </>
118
+ <View>
119
+ <View style={{marginTop: 15}}></View>
120
+ <View>
121
+ {!$config.AUDIO_ROOM && <SelectVideoDevice />}
122
+ <SelectAudioDevice />
123
+ </View>
124
+ <View style={{marginTop: 15}}></View>
125
+ {$config.EVENT_MODE && isPickerDisabled && (
126
+ <View>
127
+ <Text style={style.infoTxt}>{settingScreenInfoMessage}</Text>
128
+ </View>
129
+ )}
130
+ </View>
452
131
  );
453
132
  };
454
133
  export const SelectDeviceComponentsArray: [
455
134
  (props: SelectVideoDeviceProps) => JSX.Element,
456
135
  (props: SelectAudioDeviceProps) => JSX.Element,
457
- (props: SelectSpeakerDeviceProps) => JSX.Element,
458
- ] = [SelectVideoDevice, SelectAudioDevice, SelectSpeakerDevice];
136
+ ] = [SelectVideoDevice, SelectAudioDevice];
459
137
 
460
138
  const style = StyleSheet.create({
461
139
  popupPicker: {
462
- // height: 30,
463
- borderRadius: 12,
140
+ height: 30,
141
+ marginBottom: 10,
142
+ borderRadius: 50,
464
143
  paddingHorizontal: 15,
465
- paddingVertical: 20,
466
- fontSize: 14,
467
- fontFamily: 'Source Sans Pro',
468
- },
469
- pickerItem: {
470
- paddingLeft: 12,
471
- paddingVertical: 24,
472
- marginHorizontal: 8,
473
- marginVertical: 20,
474
- backgroundColor: '#FFFFFF',
475
- },
476
- infoTxtContainer: {
477
- backgroundColor: $config.CARD_LAYER_4_COLOR,
478
- borderRadius: 4,
144
+ fontSize: 15,
145
+ minHeight: 35,
479
146
  },
480
147
  infoTxt: {
481
- textAlign: 'left',
482
- fontSize: 16,
483
- color: $config.FONT_COLOR,
484
- fontFamily: 'Source Sans Pro',
485
- fontWeight: '400',
486
- padding: 12,
487
- },
488
- label: {
489
- fontWeight: '400',
490
- fontSize: ThemeConfig.FontSize.small,
491
- color: $config.FONT_COLOR,
492
- fontFamily: ThemeConfig.FontFamily.sansPro,
493
- marginBottom: 12,
148
+ textAlign: 'center',
149
+ fontSize: 12,
150
+ color: '#FF0000',
494
151
  },
495
152
  });
496
153
 
@@ -23,7 +23,6 @@ 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';
27
26
 
28
27
  const SelectOAuth = ({onSelectOAuth}) => {
29
28
  const hasBrandLogo = useHasBrandLogo();
@@ -54,7 +53,7 @@ const SelectOAuth = ({onSelectOAuth}) => {
54
53
  fontSize: 16,
55
54
  fontWeight: '500',
56
55
  marginBottom: 20,
57
- color: $config.FONT_COLOR,
56
+ color: $config.PRIMARY_FONT_COLOR,
58
57
  }}>
59
58
  {oauthLoginLabel}
60
59
  </Text>
@@ -131,7 +130,7 @@ const style = StyleSheet.create({
131
130
  },
132
131
  secondaryBtn: {
133
132
  minWidth: 200,
134
- borderColor: $config.PRIMARY_ACTION_BRAND_COLOR,
133
+ borderColor: $config.PRIMARY_COLOR,
135
134
  borderWidth: 1,
136
135
  display: 'flex',
137
136
  justifyContent: 'center',
@@ -139,7 +138,7 @@ const style = StyleSheet.create({
139
138
  alignItems: 'center',
140
139
  alignContent: 'space-around',
141
140
  // paddingTop: 20,
142
- backgroundColor: $config.SECONDARY_ACTION_COLOR,
141
+ backgroundColor: $config.SECONDARY_FONT_COLOR,
143
142
  paddingHorizontal: 30,
144
143
  margin: 10,
145
144
  borderRadius: 100,
@@ -149,7 +148,7 @@ const style = StyleSheet.create({
149
148
  height: 45,
150
149
  lineHeight: 45,
151
150
  fontSize: 16,
152
- color: $config.PRIMARY_ACTION_BRAND_COLOR,
151
+ color: $config.PRIMARY_COLOR,
153
152
  textAlign: 'center',
154
153
  fontWeight: '500',
155
154
  textAlignVertical: 'center',
@@ -188,14 +187,14 @@ const style = StyleSheet.create({
188
187
  fontSize: 32,
189
188
  fontWeight: '700',
190
189
  textAlign: 'center',
191
- color: $config.FONT_COLOR,
190
+ color: $config.PRIMARY_FONT_COLOR,
192
191
  marginBottom: 20,
193
192
  },
194
193
  headline: {
195
194
  fontSize: 18,
196
195
  fontWeight: '400',
197
196
  textAlign: 'center',
198
- color: $config.FONT_COLOR,
197
+ color: $config.PRIMARY_FONT_COLOR,
199
198
  marginBottom: 20,
200
199
  },
201
200
  inputs: {
@@ -220,14 +219,14 @@ const style = StyleSheet.create({
220
219
  // alignItems: 'flex-start',
221
220
  },
222
221
  checkboxTitle: {
223
- color: $config.FONT_COLOR + hexadecimalTransparency['80%'],
222
+ color: $config.PRIMARY_FONT_COLOR + 80,
224
223
  paddingHorizontal: 5,
225
224
  alignSelf: 'center',
226
225
  // marginVertical: 'auto',
227
226
  // fontWeight: '700',
228
227
  },
229
228
  checkboxCaption: {
230
- color: $config.FONT_COLOR + hexadecimalTransparency['80%'],
229
+ color: $config.PRIMARY_FONT_COLOR + 80,
231
230
  paddingHorizontal: 5,
232
231
  },
233
232
  checkboxTextHolder: {