@100mslive/react-native-room-kit 0.0.2 → 0.0.3

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 (221) hide show
  1. package/lib/commonjs/HMSRoomSetup.js +1 -1
  2. package/lib/commonjs/HMSRoomSetup.js.map +1 -1
  3. package/lib/commonjs/Icons/AnswerPhone/assets/answer-phone.png +0 -0
  4. package/lib/commonjs/Icons/AnswerPhone/assets/answer-phone@2x.png +0 -0
  5. package/lib/commonjs/Icons/AnswerPhone/assets/answer-phone@3x.png +0 -0
  6. package/lib/commonjs/Icons/AnswerPhone/index.js +30 -0
  7. package/lib/commonjs/Icons/AnswerPhone/index.js.map +1 -0
  8. package/lib/commonjs/Icons/Bluetooth/assets/bluetooth-on.png +0 -0
  9. package/lib/commonjs/Icons/Bluetooth/assets/bluetooth-on@2x.png +0 -0
  10. package/lib/commonjs/Icons/Bluetooth/assets/bluetooth-on@3x.png +0 -0
  11. package/lib/commonjs/Icons/Bluetooth/index.js +30 -0
  12. package/lib/commonjs/Icons/Bluetooth/index.js.map +1 -0
  13. package/lib/commonjs/Icons/GenericLogo/assets/generic-logo.png +0 -0
  14. package/lib/commonjs/Icons/GenericLogo/assets/generic-logo@2x.png +0 -0
  15. package/lib/commonjs/Icons/GenericLogo/assets/generic-logo@3x.png +0 -0
  16. package/lib/commonjs/Icons/GenericLogo/index.js +30 -0
  17. package/lib/commonjs/Icons/GenericLogo/index.js.map +1 -0
  18. package/lib/commonjs/Icons/Headphones/assets/headphones.png +0 -0
  19. package/lib/commonjs/Icons/Headphones/assets/headphones@2x.png +0 -0
  20. package/lib/commonjs/Icons/Headphones/assets/headphones@3x.png +0 -0
  21. package/lib/commonjs/Icons/Headphones/index.js +30 -0
  22. package/lib/commonjs/Icons/Headphones/index.js.map +1 -0
  23. package/lib/commonjs/Icons/Person/assets/person.png +0 -0
  24. package/lib/commonjs/Icons/Person/assets/person@2x.png +0 -0
  25. package/lib/commonjs/Icons/Person/assets/person@3x.png +0 -0
  26. package/lib/commonjs/Icons/Person/index.js +30 -0
  27. package/lib/commonjs/Icons/Person/index.js.map +1 -0
  28. package/lib/commonjs/Icons/Speaker/assets/speaker-large.png +0 -0
  29. package/lib/commonjs/Icons/Speaker/assets/speaker-large@2x.png +0 -0
  30. package/lib/commonjs/Icons/Speaker/assets/speaker-large@3x.png +0 -0
  31. package/lib/commonjs/Icons/Speaker/index.js +7 -2
  32. package/lib/commonjs/Icons/Speaker/index.js.map +1 -1
  33. package/lib/commonjs/Icons/Wave/assets/wave.png +0 -0
  34. package/lib/commonjs/Icons/Wave/assets/wave@2x.png +0 -0
  35. package/lib/commonjs/Icons/Wave/assets/wave@3x.png +0 -0
  36. package/lib/commonjs/Icons/Wave/index.js +30 -0
  37. package/lib/commonjs/Icons/Wave/index.js.map +1 -0
  38. package/lib/commonjs/Icons/index.js +66 -0
  39. package/lib/commonjs/Icons/index.js.map +1 -1
  40. package/lib/commonjs/components/BackButton.js +1 -1
  41. package/lib/commonjs/components/BackButton.js.map +1 -1
  42. package/lib/commonjs/components/HMSPreviewEditName.js +1 -1
  43. package/lib/commonjs/components/HMSPreviewEditName.js.map +1 -1
  44. package/lib/commonjs/components/HMSPreviewJoinButton.js +11 -4
  45. package/lib/commonjs/components/HMSPreviewJoinButton.js.map +1 -1
  46. package/lib/commonjs/components/HMSPreviewPeersList.js +9 -32
  47. package/lib/commonjs/components/HMSPreviewPeersList.js.map +1 -1
  48. package/lib/commonjs/components/HMSPreviewSubtitle.js +1 -1
  49. package/lib/commonjs/components/HMSPreviewSubtitle.js.map +1 -1
  50. package/lib/commonjs/components/HMSPreviewTile.js +11 -61
  51. package/lib/commonjs/components/HMSPreviewTile.js.map +1 -1
  52. package/lib/commonjs/components/HMSPreviewTitle.js +0 -1
  53. package/lib/commonjs/components/HMSPreviewTitle.js.map +1 -1
  54. package/lib/commonjs/components/{HMSPreviewDeviceSettings.js → HMSSpeakerSettings.js} +69 -161
  55. package/lib/commonjs/components/HMSSpeakerSettings.js.map +1 -0
  56. package/lib/commonjs/components/Preview.js +72 -21
  57. package/lib/commonjs/components/Preview.js.map +1 -1
  58. package/lib/commonjs/hooks-util.js +17 -60
  59. package/lib/commonjs/hooks-util.js.map +1 -1
  60. package/lib/commonjs/redux/actionTypes.js +2 -0
  61. package/lib/commonjs/redux/actionTypes.js.map +1 -1
  62. package/lib/commonjs/redux/actions/index.js +11 -1
  63. package/lib/commonjs/redux/actions/index.js.map +1 -1
  64. package/lib/commonjs/redux/reducers/hmsStates.js +12 -1
  65. package/lib/commonjs/redux/reducers/hmsStates.js.map +1 -1
  66. package/lib/commonjs/utils/theme.js +5 -1
  67. package/lib/commonjs/utils/theme.js.map +1 -1
  68. package/lib/module/HMSRoomSetup.js +1 -1
  69. package/lib/module/HMSRoomSetup.js.map +1 -1
  70. package/lib/module/Icons/AnswerPhone/assets/answer-phone.png +0 -0
  71. package/lib/module/Icons/AnswerPhone/assets/answer-phone@2x.png +0 -0
  72. package/lib/module/Icons/AnswerPhone/assets/answer-phone@3x.png +0 -0
  73. package/lib/module/Icons/AnswerPhone/index.js +22 -0
  74. package/lib/module/Icons/AnswerPhone/index.js.map +1 -0
  75. package/lib/module/Icons/Bluetooth/assets/bluetooth-on.png +0 -0
  76. package/lib/module/Icons/Bluetooth/assets/bluetooth-on@2x.png +0 -0
  77. package/lib/module/Icons/Bluetooth/assets/bluetooth-on@3x.png +0 -0
  78. package/lib/module/Icons/Bluetooth/index.js +22 -0
  79. package/lib/module/Icons/Bluetooth/index.js.map +1 -0
  80. package/lib/module/Icons/GenericLogo/assets/generic-logo.png +0 -0
  81. package/lib/module/Icons/GenericLogo/assets/generic-logo@2x.png +0 -0
  82. package/lib/module/Icons/GenericLogo/assets/generic-logo@3x.png +0 -0
  83. package/lib/module/Icons/GenericLogo/index.js +22 -0
  84. package/lib/module/Icons/GenericLogo/index.js.map +1 -0
  85. package/lib/module/Icons/Headphones/assets/headphones.png +0 -0
  86. package/lib/module/Icons/Headphones/assets/headphones@2x.png +0 -0
  87. package/lib/module/Icons/Headphones/assets/headphones@3x.png +0 -0
  88. package/lib/module/Icons/Headphones/index.js +22 -0
  89. package/lib/module/Icons/Headphones/index.js.map +1 -0
  90. package/lib/module/Icons/Person/assets/person.png +0 -0
  91. package/lib/module/Icons/Person/assets/person@2x.png +0 -0
  92. package/lib/module/Icons/Person/assets/person@3x.png +0 -0
  93. package/lib/module/Icons/Person/index.js +22 -0
  94. package/lib/module/Icons/Person/index.js.map +1 -0
  95. package/lib/module/Icons/Speaker/assets/speaker-large.png +0 -0
  96. package/lib/module/Icons/Speaker/assets/speaker-large@2x.png +0 -0
  97. package/lib/module/Icons/Speaker/assets/speaker-large@3x.png +0 -0
  98. package/lib/module/Icons/Speaker/index.js +7 -2
  99. package/lib/module/Icons/Speaker/index.js.map +1 -1
  100. package/lib/module/Icons/Wave/assets/wave.png +0 -0
  101. package/lib/module/Icons/Wave/assets/wave@2x.png +0 -0
  102. package/lib/module/Icons/Wave/assets/wave@3x.png +0 -0
  103. package/lib/module/Icons/Wave/index.js +22 -0
  104. package/lib/module/Icons/Wave/index.js.map +1 -0
  105. package/lib/module/Icons/index.js +6 -0
  106. package/lib/module/Icons/index.js.map +1 -1
  107. package/lib/module/components/BackButton.js +1 -1
  108. package/lib/module/components/BackButton.js.map +1 -1
  109. package/lib/module/components/HMSPreviewEditName.js +1 -1
  110. package/lib/module/components/HMSPreviewEditName.js.map +1 -1
  111. package/lib/module/components/HMSPreviewJoinButton.js +11 -4
  112. package/lib/module/components/HMSPreviewJoinButton.js.map +1 -1
  113. package/lib/module/components/HMSPreviewPeersList.js +9 -32
  114. package/lib/module/components/HMSPreviewPeersList.js.map +1 -1
  115. package/lib/module/components/HMSPreviewSubtitle.js +1 -1
  116. package/lib/module/components/HMSPreviewSubtitle.js.map +1 -1
  117. package/lib/module/components/HMSPreviewTile.js +12 -62
  118. package/lib/module/components/HMSPreviewTile.js.map +1 -1
  119. package/lib/module/components/HMSPreviewTitle.js +0 -1
  120. package/lib/module/components/HMSPreviewTitle.js.map +1 -1
  121. package/lib/module/components/HMSSpeakerSettings.js +204 -0
  122. package/lib/module/components/HMSSpeakerSettings.js.map +1 -0
  123. package/lib/module/components/Preview.js +73 -23
  124. package/lib/module/components/Preview.js.map +1 -1
  125. package/lib/module/hooks-util.js +18 -61
  126. package/lib/module/hooks-util.js.map +1 -1
  127. package/lib/module/redux/actionTypes.js +2 -0
  128. package/lib/module/redux/actionTypes.js.map +1 -1
  129. package/lib/module/redux/actions/index.js +8 -0
  130. package/lib/module/redux/actions/index.js.map +1 -1
  131. package/lib/module/redux/reducers/hmsStates.js +12 -1
  132. package/lib/module/redux/reducers/hmsStates.js.map +1 -1
  133. package/lib/module/utils/theme.js +5 -1
  134. package/lib/module/utils/theme.js.map +1 -1
  135. package/lib/typescript/Icons/AnswerPhone/index.d.ts +7 -0
  136. package/lib/typescript/Icons/AnswerPhone/index.d.ts.map +1 -0
  137. package/lib/typescript/Icons/Bluetooth/index.d.ts +7 -0
  138. package/lib/typescript/Icons/Bluetooth/index.d.ts.map +1 -0
  139. package/lib/typescript/Icons/GenericLogo/index.d.ts +7 -0
  140. package/lib/typescript/Icons/GenericLogo/index.d.ts.map +1 -0
  141. package/lib/typescript/Icons/Headphones/index.d.ts +7 -0
  142. package/lib/typescript/Icons/Headphones/index.d.ts.map +1 -0
  143. package/lib/typescript/Icons/Person/index.d.ts +7 -0
  144. package/lib/typescript/Icons/Person/index.d.ts.map +1 -0
  145. package/lib/typescript/Icons/Speaker/index.d.ts +1 -0
  146. package/lib/typescript/Icons/Speaker/index.d.ts.map +1 -1
  147. package/lib/typescript/Icons/Wave/index.d.ts +7 -0
  148. package/lib/typescript/Icons/Wave/index.d.ts.map +1 -0
  149. package/lib/typescript/Icons/index.d.ts +6 -0
  150. package/lib/typescript/Icons/index.d.ts.map +1 -1
  151. package/lib/typescript/components/HMSPreviewJoinButton.d.ts.map +1 -1
  152. package/lib/typescript/components/HMSPreviewPeersList.d.ts.map +1 -1
  153. package/lib/typescript/components/HMSPreviewTile.d.ts.map +1 -1
  154. package/lib/typescript/components/HMSSpeakerSettings.d.ts +3 -0
  155. package/lib/typescript/components/HMSSpeakerSettings.d.ts.map +1 -0
  156. package/lib/typescript/components/Preview.d.ts.map +1 -1
  157. package/lib/typescript/hooks-util.d.ts +1 -1
  158. package/lib/typescript/hooks-util.d.ts.map +1 -1
  159. package/lib/typescript/redux/actionTypes.d.ts +3 -1
  160. package/lib/typescript/redux/actionTypes.d.ts.map +1 -1
  161. package/lib/typescript/redux/actions/index.d.ts +8 -0
  162. package/lib/typescript/redux/actions/index.d.ts.map +1 -1
  163. package/lib/typescript/redux/index.d.ts +1 -0
  164. package/lib/typescript/redux/index.d.ts.map +1 -1
  165. package/lib/typescript/redux/reducers/hmsStates.d.ts +11 -2
  166. package/lib/typescript/redux/reducers/hmsStates.d.ts.map +1 -1
  167. package/lib/typescript/redux/reducers/index.d.ts +1 -0
  168. package/lib/typescript/redux/reducers/index.d.ts.map +1 -1
  169. package/lib/typescript/utils/theme.d.ts +4 -0
  170. package/lib/typescript/utils/theme.d.ts.map +1 -1
  171. package/package.json +4 -3
  172. package/src/HMSRoomSetup.tsx +1 -1
  173. package/src/Icons/AnswerPhone/assets/answer-phone.png +0 -0
  174. package/src/Icons/AnswerPhone/assets/answer-phone@2x.png +0 -0
  175. package/src/Icons/AnswerPhone/assets/answer-phone@3x.png +0 -0
  176. package/src/Icons/AnswerPhone/index.tsx +27 -0
  177. package/src/Icons/Bluetooth/assets/bluetooth-on.png +0 -0
  178. package/src/Icons/Bluetooth/assets/bluetooth-on@2x.png +0 -0
  179. package/src/Icons/Bluetooth/assets/bluetooth-on@3x.png +0 -0
  180. package/src/Icons/Bluetooth/index.tsx +27 -0
  181. package/src/Icons/GenericLogo/assets/generic-logo.png +0 -0
  182. package/src/Icons/GenericLogo/assets/generic-logo@2x.png +0 -0
  183. package/src/Icons/GenericLogo/assets/generic-logo@3x.png +0 -0
  184. package/src/Icons/GenericLogo/index.tsx +27 -0
  185. package/src/Icons/Headphones/assets/headphones.png +0 -0
  186. package/src/Icons/Headphones/assets/headphones@2x.png +0 -0
  187. package/src/Icons/Headphones/assets/headphones@3x.png +0 -0
  188. package/src/Icons/Headphones/index.tsx +27 -0
  189. package/src/Icons/Person/assets/person.png +0 -0
  190. package/src/Icons/Person/assets/person@2x.png +0 -0
  191. package/src/Icons/Person/assets/person@3x.png +0 -0
  192. package/src/Icons/Person/index.tsx +27 -0
  193. package/src/Icons/Speaker/assets/speaker-large.png +0 -0
  194. package/src/Icons/Speaker/assets/speaker-large@2x.png +0 -0
  195. package/src/Icons/Speaker/assets/speaker-large@3x.png +0 -0
  196. package/src/Icons/Speaker/index.tsx +10 -2
  197. package/src/Icons/Wave/assets/wave.png +0 -0
  198. package/src/Icons/Wave/assets/wave@2x.png +0 -0
  199. package/src/Icons/Wave/assets/wave@3x.png +0 -0
  200. package/src/Icons/Wave/index.tsx +24 -0
  201. package/src/Icons/index.ts +6 -0
  202. package/src/components/BackButton.tsx +1 -1
  203. package/src/components/HMSPreviewEditName.tsx +1 -1
  204. package/src/components/HMSPreviewJoinButton.tsx +21 -4
  205. package/src/components/HMSPreviewPeersList.tsx +19 -40
  206. package/src/components/HMSPreviewSubtitle.tsx +1 -1
  207. package/src/components/HMSPreviewTile.tsx +11 -67
  208. package/src/components/HMSPreviewTitle.tsx +0 -1
  209. package/src/components/HMSSpeakerSettings.tsx +259 -0
  210. package/src/components/Preview.tsx +92 -37
  211. package/src/hooks-util.ts +23 -57
  212. package/src/redux/actionTypes.ts +2 -0
  213. package/src/redux/actions/index.ts +10 -0
  214. package/src/redux/reducers/hmsStates.ts +28 -1
  215. package/src/utils/theme.ts +5 -1
  216. package/lib/commonjs/components/HMSPreviewDeviceSettings.js.map +0 -1
  217. package/lib/module/components/HMSPreviewDeviceSettings.js +0 -296
  218. package/lib/module/components/HMSPreviewDeviceSettings.js.map +0 -1
  219. package/lib/typescript/components/HMSPreviewDeviceSettings.d.ts +0 -3
  220. package/lib/typescript/components/HMSPreviewDeviceSettings.d.ts.map +0 -1
  221. package/src/components/HMSPreviewDeviceSettings.tsx +0 -387
@@ -1,387 +0,0 @@
1
- import * as React from 'react';
2
- import Modal from 'react-native-modal';
3
- import {
4
- LayoutAnimation,
5
- Platform,
6
- ScrollView,
7
- StyleSheet,
8
- Switch,
9
- Text,
10
- TouchableHighlight,
11
- TouchableOpacity,
12
- View,
13
- } from 'react-native';
14
- import Toast from 'react-native-simple-toast';
15
- import { useDispatch, useSelector } from 'react-redux';
16
- import { SafeAreaView } from 'react-native-safe-area-context';
17
- import {
18
- HMSUpdateListenerActions,
19
- HMSAudioDevice,
20
- } from '@100mslive/react-native-hms';
21
-
22
- import { ChevronIcon, SettingsIcon, SpeakerIcon } from '../Icons';
23
- import { PressableIcon } from './PressableIcon';
24
- import { COLORS } from '../utils/theme';
25
- import { CloseIcon } from '../Icons';
26
- import { useHMSInstance } from '../hooks-util';
27
- import type { RootState } from '../redux';
28
- import { setRoomLocallyMuted } from '../redux/actions';
29
-
30
- enum PreviewModalCloseActions {
31
- SWITCH_AUDIO_OUTPUT_IOS,
32
- }
33
-
34
- export const HMSPreviewDeviceSettings: React.FC = () => {
35
- const actionAfterModalHide = React.useRef<PreviewModalCloseActions | null>(
36
- null
37
- );
38
- const hmsInstance = useHMSInstance();
39
- const dispatch = useDispatch();
40
- const [settingsModalVisible, setSettingsModalVisible] = React.useState(false);
41
-
42
- /// VVV
43
- const [deviceListDropdownOpen, setDeviceListDropdownOpen] =
44
- React.useState(false);
45
- const [currentAudioOutputDevice, setCurrentAudioOutputDevice] =
46
- React.useState<HMSAudioDevice | null>(null);
47
- const [availableAudioOutputDevices, setAvailableAudioOutputDevices] =
48
- React.useState<HMSAudioDevice[]>([]);
49
- /// ^^^
50
-
51
- const roomLocallyMuted = useSelector(
52
- (state: RootState) => state.hmsStates.roomLocallyMuted
53
- );
54
-
55
- React.useEffect(() => {
56
- if (Platform.OS === 'android') {
57
- let ignore = false;
58
-
59
- const getCurrentAudioOutputDevice = async () => {
60
- const device = await hmsInstance.getAudioOutputRouteType();
61
- if (!ignore) {
62
- setCurrentAudioOutputDevice(device);
63
- }
64
- };
65
-
66
- const getAvailableAudioOutputDevices = async () => {
67
- const devices = await hmsInstance.getAudioDevicesList();
68
- if (!ignore) {
69
- setAvailableAudioOutputDevices(devices);
70
- }
71
- };
72
-
73
- getCurrentAudioOutputDevice();
74
- getAvailableAudioOutputDevices();
75
-
76
- return () => {
77
- ignore = true;
78
- };
79
- }
80
- }, [hmsInstance]);
81
-
82
- const cleanup = () => {
83
- setDeviceListDropdownOpen(false);
84
- };
85
-
86
- const closeModal = () => {
87
- setSettingsModalVisible(false);
88
- cleanup();
89
- };
90
-
91
- // closes modal and no action will be taken after modal has been closed
92
- const dismissModal = () => {
93
- actionAfterModalHide.current = null;
94
- closeModal();
95
- };
96
-
97
- const handleSpeakerChange = () => {
98
- if (Platform.OS === 'ios') {
99
- actionAfterModalHide.current =
100
- PreviewModalCloseActions.SWITCH_AUDIO_OUTPUT_IOS;
101
- closeModal();
102
- } else {
103
- LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
104
- setDeviceListDropdownOpen((prev) => !prev);
105
- }
106
- };
107
-
108
- React.useEffect(() => {
109
- if (Platform.OS === 'android') {
110
- let ignore = false;
111
- hmsInstance.setAudioDeviceChangeListener((data: any) => {
112
- if (!ignore && data) {
113
- setCurrentAudioOutputDevice(data.device);
114
- }
115
-
116
- Toast.showWithGravity(
117
- `Audio Device Output changed to: ${getDescription(data?.device)}`,
118
- Toast.LONG,
119
- Toast.TOP
120
- );
121
- });
122
-
123
- return () => {
124
- ignore = true;
125
-
126
- hmsInstance.removeEventListener(
127
- HMSUpdateListenerActions.ON_AUDIO_DEVICE_CHANGED
128
- );
129
- };
130
- }
131
- }, [hmsInstance]);
132
-
133
- const handleOnModalClose = () => {
134
- if (actionAfterModalHide.current === null) {
135
- return;
136
- }
137
-
138
- if (
139
- actionAfterModalHide.current ===
140
- PreviewModalCloseActions.SWITCH_AUDIO_OUTPUT_IOS
141
- ) {
142
- hmsInstance.switchAudioOutputUsingIOSUI();
143
- }
144
- };
145
-
146
- const handleMuteRoom = () => {
147
- hmsInstance.setPlaybackForAllAudio(!roomLocallyMuted);
148
- dispatch(setRoomLocallyMuted(!roomLocallyMuted));
149
- };
150
-
151
- const handleSelectAudioDevice = (device: HMSAudioDevice) => {
152
- hmsInstance.switchAudioOutput(device);
153
- LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
154
- setDeviceListDropdownOpen(false);
155
- };
156
-
157
- return (
158
- <View>
159
- <PressableIcon onPress={() => setSettingsModalVisible(true)}>
160
- <SettingsIcon />
161
- </PressableIcon>
162
-
163
- <Modal
164
- isVisible={settingsModalVisible}
165
- animationIn={'slideInUp'}
166
- animationOut={'slideOutDown'}
167
- backdropColor={COLORS.BACKGROUND.DIM}
168
- backdropOpacity={0.3}
169
- onBackButtonPress={dismissModal}
170
- onBackdropPress={dismissModal}
171
- useNativeDriver={true}
172
- onModalHide={handleOnModalClose}
173
- useNativeDriverForBackdrop={true}
174
- hideModalContentWhileAnimating={true}
175
- // swipeDirection={['up', 'down']}
176
- // swipe
177
- style={styles.modal}
178
- >
179
- <SafeAreaView style={styles.container}>
180
- <View style={styles.header}>
181
- <Text style={styles.headerText}>Device Settings</Text>
182
-
183
- <TouchableOpacity
184
- onPress={dismissModal}
185
- hitSlop={styles.closeIconHitSlop}
186
- >
187
- <CloseIcon />
188
- </TouchableOpacity>
189
- </View>
190
-
191
- <View style={styles.divider} />
192
-
193
- <Text style={styles.itemLabel}>Speakers</Text>
194
-
195
- <View>
196
- <TouchableHighlight
197
- underlayColor={COLORS.SURFACE.DEFAULT}
198
- style={styles.item}
199
- onPress={handleSpeakerChange}
200
- >
201
- <>
202
- <View style={styles.itemTextContainer}>
203
- <SpeakerIcon muted={false} />
204
-
205
- <Text style={styles.itemText} numberOfLines={1}>
206
- {currentAudioOutputDevice
207
- ? getDescription(currentAudioOutputDevice)
208
- : 'Switch Audio Output Device'}
209
- </Text>
210
- </View>
211
-
212
- <ChevronIcon
213
- direction="down"
214
- style={
215
- Platform.OS === 'ios'
216
- ? styles.downToRightChevronIcon
217
- : deviceListDropdownOpen
218
- ? styles.downToUpChevronIcon
219
- : null
220
- }
221
- />
222
- </>
223
- </TouchableHighlight>
224
-
225
- {Platform.OS === 'android' && deviceListDropdownOpen ? (
226
- <View
227
- style={{
228
- height: 160,
229
- marginTop: 8,
230
- overflow: 'hidden',
231
- borderRadius: 8,
232
- backgroundColor: COLORS.SURFACE.DEFAULT,
233
- }}
234
- >
235
- <ScrollView showsVerticalScrollIndicator={true}>
236
- {availableAudioOutputDevices.sort().map((device) => (
237
- <TouchableOpacity
238
- disabled={device === currentAudioOutputDevice}
239
- style={{
240
- paddingHorizontal: 16,
241
- paddingVertical: 12,
242
- backgroundColor:
243
- device === currentAudioOutputDevice
244
- ? COLORS.PRIMARY.DARK
245
- : undefined,
246
- }}
247
- onPress={() => handleSelectAudioDevice(device)}
248
- >
249
- <Text style={styles.itemText}>
250
- {getDescription(device)}
251
- </Text>
252
- </TouchableOpacity>
253
- ))}
254
- </ScrollView>
255
- </View>
256
- ) : null}
257
- </View>
258
-
259
- <TouchableOpacity
260
- style={styles.item2}
261
- onPress={handleMuteRoom}
262
- activeOpacity={0.7}
263
- >
264
- <View style={styles.itemTextContainer}>
265
- <SpeakerIcon muted={roomLocallyMuted} />
266
-
267
- <Text style={styles.itemText} numberOfLines={1}>
268
- Mute Room
269
- </Text>
270
- </View>
271
-
272
- <Switch
273
- value={roomLocallyMuted}
274
- thumbColor={COLORS.BASE.WHITE}
275
- trackColor={{
276
- true: COLORS.PRIMARY.DEFAULT,
277
- false: COLORS.SECONDARY.DISABLED,
278
- }}
279
- onValueChange={handleMuteRoom}
280
- />
281
- </TouchableOpacity>
282
- </SafeAreaView>
283
- </Modal>
284
- </View>
285
- );
286
- };
287
-
288
- const styles = StyleSheet.create({
289
- modal: {
290
- margin: 0,
291
- justifyContent: 'flex-end',
292
- },
293
- container: {
294
- backgroundColor: COLORS.SURFACE.DIM,
295
- borderTopLeftRadius: 16,
296
- borderTopRightRadius: 16,
297
- padding: 24,
298
- },
299
- header: {
300
- flexDirection: 'row',
301
- alignItems: 'center',
302
- justifyContent: 'space-between',
303
- },
304
- headerText: {
305
- color: COLORS.SURFACE.ON_SURFACE.HIGH,
306
- fontSize: 16,
307
- fontFamily: 'Inter',
308
- fontWeight: '500',
309
- lineHeight: 24,
310
- letterSpacing: 0.15,
311
- },
312
- closeIconHitSlop: {
313
- bottom: 16,
314
- left: 16,
315
- right: 16,
316
- top: 16,
317
- },
318
- divider: {
319
- marginVertical: 24,
320
- height: 1,
321
- backgroundColor: COLORS.BORDER.DEFAULT,
322
- },
323
- itemLabel: {
324
- color: COLORS.SURFACE.ON_SURFACE.HIGH,
325
- fontSize: 14,
326
- fontFamily: 'Inter',
327
- fontWeight: '400',
328
- lineHeight: 20,
329
- letterSpacing: 0.25,
330
- marginBottom: 8,
331
- },
332
- item: {
333
- paddingHorizontal: 16,
334
- paddingVertical: 12,
335
- borderRadius: 8,
336
- backgroundColor: COLORS.SURFACE.BRIGHT,
337
- flexDirection: 'row',
338
- alignItems: 'center',
339
- justifyContent: 'space-between',
340
- },
341
- item2: {
342
- marginTop: 24,
343
- paddingHorizontal: 16,
344
- paddingVertical: 12,
345
- // borderRadius: 8,
346
- // backgroundColor: COLORS.SURFACE.BRIGHT,
347
- flexDirection: 'row',
348
- alignItems: 'center',
349
- justifyContent: 'space-between',
350
- },
351
- itemTextContainer: {
352
- flex: 1,
353
- flexDirection: 'row',
354
- alignItems: 'center',
355
- },
356
- itemText: {
357
- flex: 1,
358
- marginHorizontal: 16,
359
- color: COLORS.SURFACE.ON_SURFACE.HIGH,
360
- fontSize: 16,
361
- fontFamily: 'Inter',
362
- fontWeight: '400',
363
- lineHeight: 24,
364
- letterSpacing: 0.5,
365
- },
366
- downToRightChevronIcon: {
367
- transform: [{ rotateZ: '-90deg' }],
368
- },
369
- downToUpChevronIcon: {
370
- transform: [{ rotateZ: '-180deg' }],
371
- },
372
- });
373
-
374
- const getDescription = (ofDevice: HMSAudioDevice) => {
375
- switch (ofDevice) {
376
- case HMSAudioDevice.AUTOMATIC:
377
- return 'Automatic';
378
- case HMSAudioDevice.BLUETOOTH:
379
- return 'Bluetooth';
380
- case HMSAudioDevice.EARPIECE:
381
- return 'Earpiece';
382
- case HMSAudioDevice.SPEAKER_PHONE:
383
- return 'Phone Speaker';
384
- case HMSAudioDevice.WIRED_HEADSET:
385
- return 'Wired Headset';
386
- }
387
- };