agora-appbuilder-core 3.0.10 → 3.0.11

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 +0 -6
  2. package/package.json +2 -2
  3. package/template/_package-lock.json +4719 -5862
  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 -25
  36. package/template/index.rsdk.tsx +0 -1
  37. package/template/index.web.js +1 -2
  38. package/template/index.wsdk.tsx +1 -1
  39. package/template/ios/HelloWorld/Info.plist +1 -14
  40. package/template/ios/HelloWorld.xcodeproj/project.pbxproj +0 -17
  41. package/template/metro.config.js +1 -1
  42. package/template/package.json +7 -18
  43. package/template/react-native-toast-message/index.d.ts +43 -43
  44. package/template/react-native-toast-message/src/colors/index.js +2 -3
  45. package/template/react-native-toast-message/src/components/base/index.js +59 -46
  46. package/template/react-native-toast-message/src/components/base/styles.js +32 -16
  47. package/template/react-native-toast-message/src/components/error.js +2 -3
  48. package/template/react-native-toast-message/src/components/info.js +2 -3
  49. package/template/react-native-toast-message/src/components/success.js +2 -3
  50. package/template/react-native-toast-message/src/index.js +31 -122
  51. package/template/react-native-toast-message/src/index.sdk.tsx +35 -125
  52. package/template/react-native-toast-message/src/styles.js +4 -3
  53. package/template/react-native-toast-message/src/styles.sdk.ts +4 -3
  54. package/template/src/App.tsx +0 -6
  55. package/template/src/AppWrapper.tsx +28 -63
  56. package/template/src/assets/icons.ts +102 -0
  57. package/template/src/atoms/HorizontalRule.tsx +1 -3
  58. package/template/src/atoms/PrimaryButton.tsx +26 -51
  59. package/template/src/atoms/SecondaryButton.tsx +5 -8
  60. package/template/src/atoms/TextInput.tsx +14 -12
  61. package/template/src/components/Chat.tsx +214 -86
  62. package/template/src/components/ChatContext.ts +1 -8
  63. package/template/src/components/ColorConfigure.tsx +1 -1
  64. package/template/src/components/ColorContext.ts +1 -1
  65. package/template/src/components/{Controls1.native.tsx → Controls.native.tsx} +4 -6
  66. package/template/src/components/Controls.tsx +42 -342
  67. package/template/src/components/DeviceConfigure.tsx +101 -461
  68. package/template/src/components/DeviceContext.tsx +4 -8
  69. package/template/src/components/EventsConfigure.tsx +7 -144
  70. package/template/src/components/GraphQLProvider.tsx +1 -1
  71. package/template/src/components/GridVideo.tsx +44 -59
  72. package/template/src/components/HostControlView.tsx +35 -114
  73. package/template/src/components/Navbar.tsx +398 -216
  74. package/template/src/components/NetworkQualityContext.tsx +20 -20
  75. package/template/src/components/ParticipantsView.tsx +154 -177
  76. package/template/src/components/PinnedVideo.tsx +120 -207
  77. package/template/src/components/Precall.native.tsx +119 -358
  78. package/template/src/components/Precall.tsx +135 -269
  79. package/template/src/components/RTMConfigure.tsx +4 -27
  80. package/template/src/components/Router.electron.ts +0 -1
  81. package/template/src/components/Router.native.ts +0 -1
  82. package/template/src/components/Router.sdk.ts +0 -1
  83. package/template/src/components/Router.ts +0 -1
  84. package/template/src/components/Settings.tsx +95 -26
  85. package/template/src/components/SettingsView.tsx +56 -251
  86. package/template/src/components/Share.tsx +273 -302
  87. package/template/src/components/StorageContext.tsx +3 -30
  88. package/template/src/components/chat-messages/useChatMessages.tsx +23 -69
  89. package/template/src/components/chat-ui/useChatUIControl.tsx +0 -7
  90. package/template/src/components/common/Error.tsx +6 -20
  91. package/template/src/components/common/Logo.tsx +15 -16
  92. package/template/src/components/contexts/LiveStreamDataContext.tsx +5 -10
  93. package/template/src/components/contexts/VideoMeetingDataContext.tsx +7 -37
  94. package/template/src/components/livestream/LiveStreamContext.tsx +36 -270
  95. package/template/src/components/livestream/Types.ts +14 -39
  96. package/template/src/components/livestream/index.ts +0 -1
  97. package/template/src/components/livestream/views/LiveStreamControls.tsx +4 -12
  98. package/template/src/components/participants/AllAudienceParticipants.tsx +30 -101
  99. package/template/src/components/participants/AllHostParticipants.tsx +34 -103
  100. package/template/src/components/participants/MeParticipant.tsx +38 -0
  101. package/template/src/components/participants/ParticipantName.tsx +7 -13
  102. package/template/src/components/participants/ParticipantSectionTitle.tsx +10 -35
  103. package/template/src/components/participants/RemoteParticipants.tsx +71 -0
  104. package/template/src/components/participants/ScreenshareParticipants.tsx +12 -144
  105. package/template/src/components/precall/{LocalMute1.native.tsx → LocalMute.native.tsx} +5 -21
  106. package/template/src/components/precall/LocalMute.tsx +14 -84
  107. package/template/src/components/precall/VideoPreview.native.tsx +3 -48
  108. package/template/src/components/precall/VideoPreview.tsx +7 -163
  109. package/template/src/components/precall/joinCallBtn.tsx +2 -15
  110. package/template/src/components/precall/meetingTitle.tsx +12 -15
  111. package/template/src/components/precall/selectDevice.tsx +21 -1
  112. package/template/src/components/precall/textInput.tsx +4 -32
  113. package/template/src/components/precall/usePreCall.tsx +0 -16
  114. package/template/src/components/styles.ts +21 -42
  115. package/template/src/components/useShareLink.tsx +14 -12
  116. package/template/src/language/default-labels/precallScreenLabels.ts +3 -3
  117. package/template/src/pages/Authenticate.tsx +15 -5
  118. package/template/src/pages/Create.tsx +165 -293
  119. package/template/src/pages/Join.tsx +67 -93
  120. package/template/src/pages/VideoCall.tsx +64 -89
  121. package/template/src/pages/video-call/DefaultLayouts.ts +4 -4
  122. package/template/src/pages/video-call/NameWithMicIcon.tsx +44 -120
  123. package/template/src/pages/video-call/RenderComponent.tsx +2 -3
  124. package/template/src/pages/video-call/VideoCallScreen.tsx +9 -45
  125. package/template/src/pages/video-call/VideoComponent.tsx +3 -18
  126. package/template/src/pages/video-call/VideoRenderer.tsx +60 -218
  127. package/template/src/rtm-events/constants.ts +0 -2
  128. package/template/src/subComponents/ChatBubble.tsx +83 -123
  129. package/template/src/subComponents/ChatContainer.tsx +84 -257
  130. package/template/src/subComponents/ChatInput.tsx +46 -61
  131. package/template/src/subComponents/Checkbox.native.tsx +5 -16
  132. package/template/src/subComponents/Checkbox.tsx +2 -2
  133. package/template/src/subComponents/CopyJoinInfo.tsx +58 -36
  134. package/template/src/subComponents/FallbackLogo.tsx +40 -122
  135. package/template/src/subComponents/LanguageSelector.tsx +1 -1
  136. package/template/src/subComponents/{LayoutIconDropdown1.native.tsx → LayoutIconDropdown.native.tsx} +18 -4
  137. package/template/src/subComponents/LayoutIconDropdown.tsx +134 -131
  138. package/template/src/subComponents/LocalAudioMute.tsx +27 -119
  139. package/template/src/subComponents/LocalEndCall.tsx +33 -71
  140. package/template/src/subComponents/LocalSwitchCamera.tsx +30 -17
  141. package/template/src/subComponents/LocalVideoMute.tsx +27 -117
  142. package/template/src/subComponents/Logo.tsx +4 -3
  143. package/template/src/subComponents/LogoutButton.tsx +1 -1
  144. package/template/src/subComponents/NetworkQualityPill.tsx +63 -60
  145. package/template/src/subComponents/OpenInNativeButton.tsx +3 -3
  146. package/template/src/subComponents/Recording.tsx +29 -28
  147. package/template/src/subComponents/RemoteAudioMute.tsx +29 -83
  148. package/template/src/subComponents/RemoteEndCall.tsx +5 -8
  149. package/template/src/subComponents/RemoteVideoMute.tsx +21 -74
  150. package/template/src/subComponents/ScreenShareNotice.tsx +8 -83
  151. package/template/src/subComponents/SelectDevice.tsx +61 -404
  152. package/template/src/subComponents/SelectOAuth.tsx +8 -9
  153. package/template/src/subComponents/ToastConfig.tsx +10 -150
  154. package/template/src/subComponents/chat/ChatParticipants.tsx +78 -187
  155. package/template/src/subComponents/livestream/CurrentLiveStreamRequestsView.tsx +32 -95
  156. package/template/src/subComponents/livestream/controls/LocalRaiseHand.tsx +33 -29
  157. package/template/src/subComponents/livestream/controls/RemoteLiveStreamApprovedRequestRecall.tsx +6 -6
  158. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestApprove.tsx +11 -24
  159. package/template/src/subComponents/livestream/controls/RemoteLiveStreamRequestReject.tsx +10 -17
  160. package/template/src/subComponents/recording/useRecording.tsx +27 -79
  161. package/template/src/subComponents/screenshare/ScreenshareButton.tsx +70 -52
  162. package/template/src/subComponents/screenshare/ScreenshareConfigure.native.tsx +2 -11
  163. package/template/src/subComponents/screenshare/ScreenshareConfigure.tsx +4 -26
  164. package/template/src/utils/common.tsx +1 -155
  165. package/template/src/utils/index.tsx +0 -19
  166. package/template/src/utils/isMobileOrTablet.ts +2 -7
  167. package/template/src/utils/useButtonTemplate.tsx +0 -1
  168. package/template/src/utils/useMuteToggleLocal.ts +3 -54
  169. package/template/web/index.html +0 -5
  170. package/template/webpack.commons.js +8 -13
  171. package/template/webpack.web.config.js +0 -1
  172. package/template/agora-rn-uikit/src/Reducer/ActiveSpeakerDetected.ts +0 -11
  173. package/template/agora-rn-uikit/src/Reducer/LocalPermissionState.ts +0 -24
  174. package/template/agora-rn-uikit/src/Reducer/UserPin.ts +0 -11
  175. package/template/android/app/src/main/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  176. package/template/android/app/src/main/assets/fonts/icomoon.ttf +0 -0
  177. package/template/android/app/src/main/res/values/colors.xml +0 -7
  178. package/template/react-native-toast-message/src/components/checkbox.js +0 -178
  179. package/template/react-native.config.js +0 -7
  180. package/template/src/assets/font-styles.css +0 -329
  181. package/template/src/assets/fonts/SourceSansPro-Regular.ttf +0 -0
  182. package/template/src/assets/fonts/icomoon.ttf +0 -0
  183. package/template/src/assets/permission.png +0 -0
  184. package/template/src/assets/selection.json +0 -1
  185. package/template/src/atoms/ActionMenu.tsx +0 -236
  186. package/template/src/atoms/AnimatedActiveSpeaker.native.tsx +0 -71
  187. package/template/src/atoms/AnimatedActiveSpeaker.tsx +0 -84
  188. package/template/src/atoms/AnimatedRings.native.tsx +0 -68
  189. package/template/src/atoms/AnimatedRings.tsx +0 -70
  190. package/template/src/atoms/Card.tsx +0 -61
  191. package/template/src/atoms/CircularProgress.native.tsx +0 -121
  192. package/template/src/atoms/CircularProgress.tsx +0 -102
  193. package/template/src/atoms/CustomIcon.tsx +0 -88
  194. package/template/src/atoms/CustomSwitch.tsx +0 -287
  195. package/template/src/atoms/Dropdown.tsx +0 -306
  196. package/template/src/atoms/IconButton.tsx +0 -162
  197. package/template/src/atoms/ImageIcon.tsx +0 -98
  198. package/template/src/atoms/InfoBubble.tsx +0 -291
  199. package/template/src/atoms/Input.tsx +0 -87
  200. package/template/src/atoms/InviteInfo.tsx +0 -166
  201. package/template/src/atoms/LinkButton.tsx +0 -28
  202. package/template/src/atoms/OutlineButton.tsx +0 -61
  203. package/template/src/atoms/ParticipantsCount.tsx +0 -73
  204. package/template/src/atoms/Popup.tsx +0 -147
  205. package/template/src/atoms/RecordingInfo.tsx +0 -49
  206. package/template/src/atoms/Spacer.tsx +0 -22
  207. package/template/src/atoms/TertiaryButton.tsx +0 -78
  208. package/template/src/atoms/Toggle.tsx +0 -47
  209. package/template/src/atoms/Tooltip.native.tsx +0 -65
  210. package/template/src/atoms/Tooltip.tsx +0 -94
  211. package/template/src/atoms/UserAvatar.tsx +0 -60
  212. package/template/src/components/CommonStyles.ts +0 -44
  213. package/template/src/components/ToastComponent.tsx +0 -8
  214. package/template/src/components/participants/Participant.tsx +0 -302
  215. package/template/src/components/participants/UserActionMenuOptions.tsx +0 -398
  216. package/template/src/components/popups/InvitePopup.tsx +0 -115
  217. package/template/src/components/popups/StopRecordingPopup.tsx +0 -114
  218. package/template/src/components/precall/PermissionHelper.native.tsx +0 -5
  219. package/template/src/components/precall/PermissionHelper.tsx +0 -126
  220. package/template/src/components/precall/PreCallSettings.tsx +0 -52
  221. package/template/src/components/useToast.tsx +0 -41
  222. package/template/src/components/useVideoCall.tsx +0 -65
  223. package/template/src/pages/Endcall.tsx +0 -148
  224. package/template/src/pages/video-call/ActionSheet.native.tsx +0 -215
  225. package/template/src/pages/video-call/ActionSheet.tsx +0 -226
  226. package/template/src/pages/video-call/ActionSheetContent.tsx +0 -479
  227. package/template/src/pages/video-call/ActionSheetHandle.tsx +0 -38
  228. package/template/src/pages/video-call/ActionSheetStyles.css +0 -138
  229. package/template/src/pages/video-call/SidePanelHeader.tsx +0 -190
  230. package/template/src/pages/video-call/VideoCallMobileView.tsx +0 -139
  231. package/template/src/pages/video-call/VideoCallScreen.native.tsx +0 -37
  232. package/template/src/subComponents/ChatInput.ios.tsx +0 -237
  233. package/template/src/subComponents/EndcallPopup.tsx +0 -107
  234. package/template/src/subComponents/LayoutIconButton.tsx +0 -201
  235. package/template/src/subComponents/RemoteMutePopup.tsx +0 -193
  236. package/template/src/subComponents/RemoveMeetingPopup.tsx +0 -109
  237. package/template/src/subComponents/RemoveScreensharePopup.tsx +0 -109
  238. package/template/src/subComponents/SelectDeviceSettings.backup.tsx +0 -207
  239. package/template/src/subComponents/SidePanelHeader.tsx +0 -112
  240. package/template/src/theme/index.ts +0 -46
  241. package/template/src/utils/PlatformWrapper.tsx +0 -21
  242. package/template/src/utils/hexadecimalTransparency.ts +0 -108
  243. package/template/src/utils/pendingStateUpdateHelper.ts +0 -19
  244. package/template/src/utils/useFocus.tsx +0 -46
  245. package/template/src/utils/useIsActiveSpeaker.ts +0 -27
  246. package/template/src/utils/useIsHandRaised.ts +0 -13
  247. package/template/src/utils/useRemoteEndScreenshare.ts +0 -26
  248. 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: {