@stream-io/video-react-native-sdk 0.0.1-alpha.141
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.
- package/CHANGELOG.md +739 -0
- package/LICENSE +219 -0
- package/README.md +19 -0
- package/dist/__tests__/components/ActiveCall.test.d.ts +1 -0
- package/dist/__tests__/components/ActiveCall.test.js +89 -0
- package/dist/__tests__/components/ActiveCall.test.js.map +1 -0
- package/dist/__tests__/components/Avatar.test.d.ts +1 -0
- package/dist/__tests__/components/Avatar.test.js +34 -0
- package/dist/__tests__/components/Avatar.test.js.map +1 -0
- package/dist/__tests__/components/ParticipantView.test.d.ts +1 -0
- package/dist/__tests__/components/ParticipantView.test.js +66 -0
- package/dist/__tests__/components/ParticipantView.test.js.map +1 -0
- package/dist/__tests__/mocks/call.d.ts +2 -0
- package/dist/__tests__/mocks/call.js +21 -0
- package/dist/__tests__/mocks/call.js.map +1 -0
- package/dist/__tests__/mocks/client.d.ts +2 -0
- package/dist/__tests__/mocks/client.js +31 -0
- package/dist/__tests__/mocks/client.js.map +1 -0
- package/dist/__tests__/mocks/participant.d.ts +3 -0
- package/dist/__tests__/mocks/participant.js +25 -0
- package/dist/__tests__/mocks/participant.js.map +1 -0
- package/dist/__tests__/utils/RNTLTools.d.ts +15 -0
- package/dist/__tests__/utils/RNTLTools.js +54 -0
- package/dist/__tests__/utils/RNTLTools.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/jest-setup.d.ts +1 -0
- package/dist/jest-setup.js +34 -0
- package/dist/jest-setup.js.map +1 -0
- package/dist/src/components/ActiveCall.d.ts +18 -0
- package/dist/src/components/ActiveCall.js +117 -0
- package/dist/src/components/ActiveCall.js.map +1 -0
- package/dist/src/components/Avatar.d.ts +25 -0
- package/dist/src/components/Avatar.js +55 -0
- package/dist/src/components/Avatar.js.map +1 -0
- package/dist/src/components/CallControlsButton.d.ts +22 -0
- package/dist/src/components/CallControlsButton.js +43 -0
- package/dist/src/components/CallControlsButton.js.map +1 -0
- package/dist/src/components/CallControlsView.d.ts +9 -0
- package/dist/src/components/CallControlsView.js +95 -0
- package/dist/src/components/CallControlsView.js.map +1 -0
- package/dist/src/components/CallParticipantsBadge.d.ts +1 -0
- package/dist/src/components/CallParticipantsBadge.js +48 -0
- package/dist/src/components/CallParticipantsBadge.js.map +1 -0
- package/dist/src/components/CallParticipantsInfoView.d.ts +21 -0
- package/dist/src/components/CallParticipantsInfoView.js +213 -0
- package/dist/src/components/CallParticipantsInfoView.js.map +1 -0
- package/dist/src/components/CallParticipantsList.d.ts +25 -0
- package/dist/src/components/CallParticipantsList.js +124 -0
- package/dist/src/components/CallParticipantsList.js.map +1 -0
- package/dist/src/components/CallParticipantsOptions.d.ts +8 -0
- package/dist/src/components/CallParticipantsOptions.js +189 -0
- package/dist/src/components/CallParticipantsOptions.js.map +1 -0
- package/dist/src/components/CallParticipantsSpotlightView.d.ts +1 -0
- package/dist/src/components/CallParticipantsSpotlightView.js +40 -0
- package/dist/src/components/CallParticipantsSpotlightView.js.map +1 -0
- package/dist/src/components/CallParticipantsView.d.ts +1 -0
- package/dist/src/components/CallParticipantsView.js +31 -0
- package/dist/src/components/CallParticipantsView.js.map +1 -0
- package/dist/src/components/IncomingCallView.d.ts +1 -0
- package/dist/src/components/IncomingCallView.js +98 -0
- package/dist/src/components/IncomingCallView.js.map +1 -0
- package/dist/src/components/LobbyView.d.ts +1 -0
- package/dist/src/components/LobbyView.js +215 -0
- package/dist/src/components/LobbyView.js.map +1 -0
- package/dist/src/components/LocalVideoView.d.ts +34 -0
- package/dist/src/components/LocalVideoView.js +100 -0
- package/dist/src/components/LocalVideoView.js.map +1 -0
- package/dist/src/components/NetworkQualityIndicator.d.ts +8 -0
- package/dist/src/components/NetworkQualityIndicator.js +36 -0
- package/dist/src/components/NetworkQualityIndicator.js.map +1 -0
- package/dist/src/components/OutgoingCallView.d.ts +1 -0
- package/dist/src/components/OutgoingCallView.js +103 -0
- package/dist/src/components/OutgoingCallView.js.map +1 -0
- package/dist/src/components/ParticipantReaction.d.ts +7 -0
- package/dist/src/components/ParticipantReaction.js +45 -0
- package/dist/src/components/ParticipantReaction.js.map +1 -0
- package/dist/src/components/ParticipantView.d.ts +42 -0
- package/dist/src/components/ParticipantView.js +256 -0
- package/dist/src/components/ParticipantView.js.map +1 -0
- package/dist/src/components/ReactionsModal.d.ts +7 -0
- package/dist/src/components/ReactionsModal.js +65 -0
- package/dist/src/components/ReactionsModal.js.map +1 -0
- package/dist/src/components/ToggleAudioButton.d.ts +1 -0
- package/dist/src/components/ToggleAudioButton.js +78 -0
- package/dist/src/components/ToggleAudioButton.js.map +1 -0
- package/dist/src/components/ToggleVideoButton.d.ts +1 -0
- package/dist/src/components/ToggleVideoButton.js +78 -0
- package/dist/src/components/ToggleVideoButton.js.map +1 -0
- package/dist/src/components/UserInfoView.d.ts +13 -0
- package/dist/src/components/UserInfoView.js +82 -0
- package/dist/src/components/UserInfoView.js.map +1 -0
- package/dist/src/components/VideoRenderer.d.ts +65 -0
- package/dist/src/components/VideoRenderer.js +18 -0
- package/dist/src/components/VideoRenderer.js.map +1 -0
- package/dist/src/components/index.d.ts +12 -0
- package/dist/src/components/index.js +29 -0
- package/dist/src/components/index.js.map +1 -0
- package/dist/src/constants/A11yLabels.d.ts +20 -0
- package/dist/src/constants/A11yLabels.js +29 -0
- package/dist/src/constants/A11yLabels.js.map +1 -0
- package/dist/src/constants/index.d.ts +11 -0
- package/dist/src/constants/index.js +30 -0
- package/dist/src/constants/index.js.map +1 -0
- package/dist/src/contexts/StreamVideoContext/createStoreContext.d.ts +14 -0
- package/dist/src/contexts/StreamVideoContext/createStoreContext.js +100 -0
- package/dist/src/contexts/StreamVideoContext/createStoreContext.js.map +1 -0
- package/dist/src/contexts/StreamVideoContext/index.d.ts +30 -0
- package/dist/src/contexts/StreamVideoContext/index.js +18 -0
- package/dist/src/contexts/StreamVideoContext/index.js.map +1 -0
- package/dist/src/contexts/index.d.ts +1 -0
- package/dist/src/contexts/index.js +18 -0
- package/dist/src/contexts/index.js.map +1 -0
- package/dist/src/hooks/index.d.ts +10 -0
- package/dist/src/hooks/index.js +27 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/useCallControls.d.ts +14 -0
- package/dist/src/hooks/useCallControls.js +148 -0
- package/dist/src/hooks/useCallControls.js.map +1 -0
- package/dist/src/hooks/useCallCycleEffect.d.ts +8 -0
- package/dist/src/hooks/useCallCycleEffect.js +62 -0
- package/dist/src/hooks/useCallCycleEffect.js.map +1 -0
- package/dist/src/hooks/useCallKeep.d.ts +11 -0
- package/dist/src/hooks/useCallKeep.js +41 -0
- package/dist/src/hooks/useCallKeep.js.map +1 -0
- package/dist/src/hooks/useCreateStreamVideoClient.d.ts +33 -0
- package/dist/src/hooks/useCreateStreamVideoClient.js +40 -0
- package/dist/src/hooks/useCreateStreamVideoClient.js.map +1 -0
- package/dist/src/hooks/useIncallManager.d.ts +13 -0
- package/dist/src/hooks/useIncallManager.js +24 -0
- package/dist/src/hooks/useIncallManager.js.map +1 -0
- package/dist/src/hooks/useLocalVideoStream.d.ts +7 -0
- package/dist/src/hooks/useLocalVideoStream.js +34 -0
- package/dist/src/hooks/useLocalVideoStream.js.map +1 -0
- package/dist/src/hooks/useMutingState.d.ts +12 -0
- package/dist/src/hooks/useMutingState.js +25 -0
- package/dist/src/hooks/useMutingState.js.map +1 -0
- package/dist/src/hooks/usePermissionNotification.d.ts +18 -0
- package/dist/src/hooks/usePermissionNotification.js +33 -0
- package/dist/src/hooks/usePermissionNotification.js.map +1 -0
- package/dist/src/hooks/usePermissionRequest.d.ts +1 -0
- package/dist/src/hooks/usePermissionRequest.js +62 -0
- package/dist/src/hooks/usePermissionRequest.js.map +1 -0
- package/dist/src/hooks/usePublishMediaStreams.d.ts +6 -0
- package/dist/src/hooks/usePublishMediaStreams.js +49 -0
- package/dist/src/hooks/usePublishMediaStreams.js.map +1 -0
- package/dist/src/icons/ArrowRight.d.ts +5 -0
- package/dist/src/icons/ArrowRight.js +9 -0
- package/dist/src/icons/ArrowRight.js.map +1 -0
- package/dist/src/icons/CameraSwitch.d.ts +5 -0
- package/dist/src/icons/CameraSwitch.js +9 -0
- package/dist/src/icons/CameraSwitch.js.map +1 -0
- package/dist/src/icons/Chat.d.ts +5 -0
- package/dist/src/icons/Chat.js +9 -0
- package/dist/src/icons/Chat.js.map +1 -0
- package/dist/src/icons/Cross.d.ts +5 -0
- package/dist/src/icons/Cross.js +9 -0
- package/dist/src/icons/Cross.js.map +1 -0
- package/dist/src/icons/Mic.d.ts +5 -0
- package/dist/src/icons/Mic.js +10 -0
- package/dist/src/icons/Mic.js.map +1 -0
- package/dist/src/icons/MicOff.d.ts +5 -0
- package/dist/src/icons/MicOff.js +9 -0
- package/dist/src/icons/MicOff.js.map +1 -0
- package/dist/src/icons/Participants.d.ts +5 -0
- package/dist/src/icons/Participants.js +9 -0
- package/dist/src/icons/Participants.js.map +1 -0
- package/dist/src/icons/Phone.d.ts +5 -0
- package/dist/src/icons/Phone.js +9 -0
- package/dist/src/icons/Phone.js.map +1 -0
- package/dist/src/icons/PhoneDown.d.ts +5 -0
- package/dist/src/icons/PhoneDown.js +10 -0
- package/dist/src/icons/PhoneDown.js.map +1 -0
- package/dist/src/icons/Pin.d.ts +5 -0
- package/dist/src/icons/Pin.js +9 -0
- package/dist/src/icons/Pin.js.map +1 -0
- package/dist/src/icons/Reaction.d.ts +5 -0
- package/dist/src/icons/Reaction.js +9 -0
- package/dist/src/icons/Reaction.js.map +1 -0
- package/dist/src/icons/ScreenShare.d.ts +5 -0
- package/dist/src/icons/ScreenShare.js +40 -0
- package/dist/src/icons/ScreenShare.js.map +1 -0
- package/dist/src/icons/Settings.d.ts +5 -0
- package/dist/src/icons/Settings.js +34 -0
- package/dist/src/icons/Settings.js.map +1 -0
- package/dist/src/icons/Spotlight.d.ts +5 -0
- package/dist/src/icons/Spotlight.js +9 -0
- package/dist/src/icons/Spotlight.js.map +1 -0
- package/dist/src/icons/ThreeDots.d.ts +5 -0
- package/dist/src/icons/ThreeDots.js +11 -0
- package/dist/src/icons/ThreeDots.js.map +1 -0
- package/dist/src/icons/Video.d.ts +5 -0
- package/dist/src/icons/Video.js +9 -0
- package/dist/src/icons/Video.js.map +1 -0
- package/dist/src/icons/VideoDisabled.d.ts +5 -0
- package/dist/src/icons/VideoDisabled.js +10 -0
- package/dist/src/icons/VideoDisabled.js.map +1 -0
- package/dist/src/icons/VideoOff.d.ts +5 -0
- package/dist/src/icons/VideoOff.js +10 -0
- package/dist/src/icons/VideoOff.js.map +1 -0
- package/dist/src/icons/VideoSlash.d.ts +5 -0
- package/dist/src/icons/VideoSlash.js +10 -0
- package/dist/src/icons/VideoSlash.js.map +1 -0
- package/dist/src/icons/index.d.ts +19 -0
- package/dist/src/icons/index.js +36 -0
- package/dist/src/icons/index.js.map +1 -0
- package/dist/src/providers/MediaDevices.d.ts +9 -0
- package/dist/src/providers/MediaDevices.js +43 -0
- package/dist/src/providers/MediaDevices.js.map +1 -0
- package/dist/src/providers/StreamCall.d.ts +81 -0
- package/dist/src/providers/StreamCall.js +74 -0
- package/dist/src/providers/StreamCall.js.map +1 -0
- package/dist/src/providers/StreamVideo.d.ts +10 -0
- package/dist/src/providers/StreamVideo.js +66 -0
- package/dist/src/providers/StreamVideo.js.map +1 -0
- package/dist/src/providers/index.d.ts +2 -0
- package/dist/src/providers/index.js +19 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/src/theme/avatar.d.ts +2 -0
- package/dist/src/theme/avatar.js +11 -0
- package/dist/src/theme/avatar.js.map +1 -0
- package/dist/src/theme/button.d.ts +2 -0
- package/dist/src/theme/button.js +11 -0
- package/dist/src/theme/button.js.map +1 -0
- package/dist/src/theme/colors.d.ts +3 -0
- package/dist/src/theme/colors.js +49 -0
- package/dist/src/theme/colors.js.map +1 -0
- package/dist/src/theme/constants.d.ts +47 -0
- package/dist/src/theme/constants.js +54 -0
- package/dist/src/theme/constants.js.map +1 -0
- package/dist/src/theme/fonts.d.ts +2 -0
- package/dist/src/theme/fonts.js +67 -0
- package/dist/src/theme/fonts.js.map +1 -0
- package/dist/src/theme/icon.d.ts +2 -0
- package/dist/src/theme/icon.js +11 -0
- package/dist/src/theme/icon.js.map +1 -0
- package/dist/src/theme/index.d.ts +2 -0
- package/dist/src/theme/index.js +26 -0
- package/dist/src/theme/index.js.map +1 -0
- package/dist/src/theme/margin.d.ts +2 -0
- package/dist/src/theme/margin.js +11 -0
- package/dist/src/theme/margin.js.map +1 -0
- package/dist/src/theme/padding.d.ts +2 -0
- package/dist/src/theme/padding.js +11 -0
- package/dist/src/theme/padding.js.map +1 -0
- package/dist/src/theme/rounded.d.ts +2 -0
- package/dist/src/theme/rounded.js +11 -0
- package/dist/src/theme/rounded.js.map +1 -0
- package/dist/src/theme/spacing.d.ts +2 -0
- package/dist/src/theme/spacing.js +11 -0
- package/dist/src/theme/spacing.js.map +1 -0
- package/dist/src/theme/types.d.ts +45 -0
- package/dist/src/theme/types.js +3 -0
- package/dist/src/theme/types.js.map +1 -0
- package/dist/src/utils/StreamVideoRN.d.ts +25 -0
- package/dist/src/utils/StreamVideoRN.js +23 -0
- package/dist/src/utils/StreamVideoRN.js.map +1 -0
- package/dist/src/utils/hooks/index.d.ts +3 -0
- package/dist/src/utils/hooks/index.js +20 -0
- package/dist/src/utils/hooks/index.js.map +1 -0
- package/dist/src/utils/hooks/useAppStateListener.d.ts +1 -0
- package/dist/src/utils/hooks/useAppStateListener.js +41 -0
- package/dist/src/utils/hooks/useAppStateListener.js.map +1 -0
- package/dist/src/utils/hooks/useDebouncedValue.d.ts +7 -0
- package/dist/src/utils/hooks/useDebouncedValue.js +22 -0
- package/dist/src/utils/hooks/useDebouncedValue.js.map +1 -0
- package/dist/src/utils/hooks/usePrevious.d.ts +1 -0
- package/dist/src/utils/hooks/usePrevious.js +13 -0
- package/dist/src/utils/hooks/usePrevious.js.map +1 -0
- package/dist/src/utils/index.d.ts +5 -0
- package/dist/src/utils/index.js +53 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/verifyAndroidBluetoothPermissions.d.ts +1 -0
- package/dist/src/utils/verifyAndroidBluetoothPermissions.js +30 -0
- package/dist/src/utils/verifyAndroidBluetoothPermissions.js.map +1 -0
- package/index.ts +22 -0
- package/package.json +70 -0
- package/src/components/ActiveCall.tsx +122 -0
- package/src/components/Avatar.tsx +88 -0
- package/src/components/CallControlsButton.tsx +72 -0
- package/src/components/CallControlsView.tsx +128 -0
- package/src/components/CallParticipantsBadge.tsx +57 -0
- package/src/components/CallParticipantsInfoView.tsx +287 -0
- package/src/components/CallParticipantsList.tsx +172 -0
- package/src/components/CallParticipantsOptions.tsx +248 -0
- package/src/components/CallParticipantsSpotlightView.tsx +53 -0
- package/src/components/CallParticipantsView.tsx +30 -0
- package/src/components/IncomingCallView.tsx +133 -0
- package/src/components/LobbyView.tsx +236 -0
- package/src/components/LocalVideoView.tsx +141 -0
- package/src/components/NetworkQualityIndicator.tsx +72 -0
- package/src/components/OutgoingCallView.tsx +133 -0
- package/src/components/ParticipantReaction.tsx +59 -0
- package/src/components/ParticipantView.tsx +315 -0
- package/src/components/ReactionsModal.tsx +90 -0
- package/src/components/ToggleAudioButton.tsx +103 -0
- package/src/components/ToggleVideoButton.tsx +103 -0
- package/src/components/UserInfoView.tsx +118 -0
- package/src/components/VideoRenderer.tsx +85 -0
- package/src/components/index.ts +12 -0
- package/src/constants/A11yLabels.ts +24 -0
- package/src/constants/index.ts +28 -0
- package/src/contexts/StreamVideoContext/createStoreContext.tsx +117 -0
- package/src/contexts/StreamVideoContext/index.tsx +37 -0
- package/src/contexts/index.ts +1 -0
- package/src/hooks/index.ts +10 -0
- package/src/hooks/useCallControls.tsx +186 -0
- package/src/hooks/useCallCycleEffect.tsx +68 -0
- package/src/hooks/useCallKeep.tsx +51 -0
- package/src/hooks/useCreateStreamVideoClient.tsx +77 -0
- package/src/hooks/useIncallManager.tsx +23 -0
- package/src/hooks/useLocalVideoStream.ts +36 -0
- package/src/hooks/useMutingState.ts +24 -0
- package/src/hooks/usePermissionNotification.tsx +53 -0
- package/src/hooks/usePermissionRequest.tsx +67 -0
- package/src/hooks/usePublishMediaStreams.ts +59 -0
- package/src/icons/ArrowRight.tsx +16 -0
- package/src/icons/CameraSwitch.tsx +14 -0
- package/src/icons/Chat.tsx +14 -0
- package/src/icons/Cross.tsx +14 -0
- package/src/icons/Mic.tsx +18 -0
- package/src/icons/MicOff.tsx +14 -0
- package/src/icons/Participants.tsx +16 -0
- package/src/icons/Phone.tsx +14 -0
- package/src/icons/PhoneDown.tsx +15 -0
- package/src/icons/Pin.tsx +16 -0
- package/src/icons/Reaction.tsx +14 -0
- package/src/icons/ScreenShare.tsx +32 -0
- package/src/icons/Settings.tsx +13 -0
- package/src/icons/Spotlight.tsx +16 -0
- package/src/icons/ThreeDots.tsx +13 -0
- package/src/icons/Video.tsx +14 -0
- package/src/icons/VideoDisabled.tsx +22 -0
- package/src/icons/VideoOff.tsx +20 -0
- package/src/icons/VideoSlash.tsx +15 -0
- package/src/icons/index.tsx +19 -0
- package/src/providers/MediaDevices.tsx +45 -0
- package/src/providers/StreamCall.tsx +136 -0
- package/src/providers/StreamVideo.tsx +50 -0
- package/src/providers/index.ts +2 -0
- package/src/theme/avatar.ts +9 -0
- package/src/theme/button.ts +9 -0
- package/src/theme/colors.ts +49 -0
- package/src/theme/constants.ts +51 -0
- package/src/theme/fonts.ts +65 -0
- package/src/theme/icon.ts +9 -0
- package/src/theme/index.ts +25 -0
- package/src/theme/margin.ts +9 -0
- package/src/theme/padding.ts +9 -0
- package/src/theme/rounded.ts +9 -0
- package/src/theme/spacing.ts +9 -0
- package/src/theme/types.ts +64 -0
- package/src/utils/StreamVideoRN.ts +35 -0
- package/src/utils/hooks/index.ts +3 -0
- package/src/utils/hooks/useAppStateListener.ts +48 -0
- package/src/utils/hooks/useDebouncedValue.ts +21 -0
- package/src/utils/hooks/usePrevious.ts +11 -0
- package/src/utils/index.ts +45 -0
- package/src/utils/verifyAndroidBluetoothPermissions.ts +31 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './useCallControls';
|
|
2
|
+
export * from './useCallCycleEffect';
|
|
3
|
+
export * from './useMutingState';
|
|
4
|
+
export * from './useLocalVideoStream';
|
|
5
|
+
export * from './useCallKeep';
|
|
6
|
+
export * from './useIncallManager';
|
|
7
|
+
export * from './usePublishMediaStreams';
|
|
8
|
+
export * from './usePermissionRequest';
|
|
9
|
+
export * from './usePermissionNotification';
|
|
10
|
+
export * from './useCreateStreamVideoClient';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./useCallControls"), exports);
|
|
18
|
+
__exportStar(require("./useCallCycleEffect"), exports);
|
|
19
|
+
__exportStar(require("./useMutingState"), exports);
|
|
20
|
+
__exportStar(require("./useLocalVideoStream"), exports);
|
|
21
|
+
__exportStar(require("./useCallKeep"), exports);
|
|
22
|
+
__exportStar(require("./useIncallManager"), exports);
|
|
23
|
+
__exportStar(require("./usePublishMediaStreams"), exports);
|
|
24
|
+
__exportStar(require("./usePermissionRequest"), exports);
|
|
25
|
+
__exportStar(require("./usePermissionNotification"), exports);
|
|
26
|
+
__exportStar(require("./useCreateStreamVideoClient"), exports);
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,uDAAqC;AACrC,mDAAiC;AACjC,wDAAsC;AACtC,gDAA8B;AAC9B,qDAAmC;AACnC,2DAAyC;AACzC,yDAAuC;AACvC,8DAA4C;AAC5C,+DAA6C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A helper hook which exposes audio, video mute and camera facing mode and
|
|
3
|
+
* their respective functions to toggle state
|
|
4
|
+
*
|
|
5
|
+
* @category Device Management
|
|
6
|
+
*/
|
|
7
|
+
export declare const useCallControls: () => {
|
|
8
|
+
isAudioPublished: boolean | undefined;
|
|
9
|
+
isVideoPublished: boolean | undefined;
|
|
10
|
+
isCameraOnFrontFacingMode: boolean;
|
|
11
|
+
toggleAudioMuted: () => Promise<void>;
|
|
12
|
+
toggleVideoMuted: () => Promise<void>;
|
|
13
|
+
toggleCameraFacingMode: () => void;
|
|
14
|
+
};
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useCallControls = void 0;
|
|
7
|
+
const video_client_1 = require("@stream-io/video-client");
|
|
8
|
+
const video_react_bindings_1 = require("@stream-io/video-react-bindings");
|
|
9
|
+
const react_1 = require("react");
|
|
10
|
+
const contexts_1 = require("../contexts");
|
|
11
|
+
const useAppStateListener_1 = require("../utils/hooks/useAppStateListener");
|
|
12
|
+
const netinfo_1 = __importDefault(require("@react-native-community/netinfo"));
|
|
13
|
+
/**
|
|
14
|
+
* A helper hook which exposes audio, video mute and camera facing mode and
|
|
15
|
+
* their respective functions to toggle state
|
|
16
|
+
*
|
|
17
|
+
* @category Device Management
|
|
18
|
+
*/
|
|
19
|
+
const useCallControls = () => {
|
|
20
|
+
const localParticipant = (0, video_react_bindings_1.useLocalParticipant)();
|
|
21
|
+
const call = (0, video_react_bindings_1.useCall)();
|
|
22
|
+
/** Refs to keep track of the current call and whether the user is online or not */
|
|
23
|
+
const callRef = (0, react_1.useRef)(call);
|
|
24
|
+
callRef.current = call;
|
|
25
|
+
const isOnlineRef = (0, react_1.useRef)(true);
|
|
26
|
+
const setState = (0, contexts_1.useStreamVideoStoreSetState)();
|
|
27
|
+
const isCameraOnFrontFacingMode = (0, contexts_1.useStreamVideoStoreValue)((store) => store.isCameraOnFrontFacingMode);
|
|
28
|
+
const currentAudioDevice = (0, contexts_1.useStreamVideoStoreValue)((store) => store.currentAudioDevice);
|
|
29
|
+
const videoDevices = (0, contexts_1.useStreamVideoStoreValue)((store) => store.videoDevices);
|
|
30
|
+
const currentVideoDevice = (0, contexts_1.useStreamVideoStoreValue)((store) => store.currentVideoDevice);
|
|
31
|
+
const publishAudioStream = (0, react_1.useCallback)(async () => {
|
|
32
|
+
try {
|
|
33
|
+
// Client picks up the default audio stream.
|
|
34
|
+
// For mobile devices there will always be one audio input
|
|
35
|
+
if (currentAudioDevice && isOnlineRef.current) {
|
|
36
|
+
const audioStream = await (0, video_client_1.getAudioStream)(currentAudioDevice.deviceId);
|
|
37
|
+
if (call) {
|
|
38
|
+
await call.publishAudioStream(audioStream);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
console.log('Failed to publish audio stream', e);
|
|
44
|
+
}
|
|
45
|
+
}, [currentAudioDevice, call]);
|
|
46
|
+
const publishVideoStream = (0, react_1.useCallback)(async () => {
|
|
47
|
+
try {
|
|
48
|
+
if (currentVideoDevice && isOnlineRef.current) {
|
|
49
|
+
const videoStream = await (0, video_client_1.getVideoStream)(currentVideoDevice.deviceId);
|
|
50
|
+
if (call) {
|
|
51
|
+
await call.publishVideoStream(videoStream);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
console.log('Failed to publish video stream', e);
|
|
57
|
+
}
|
|
58
|
+
}, [call, currentVideoDevice]);
|
|
59
|
+
const isAudioPublished = localParticipant?.publishedTracks.includes(video_client_1.SfuModels.TrackType.AUDIO);
|
|
60
|
+
const isVideoPublished = localParticipant?.publishedTracks.includes(video_client_1.SfuModels.TrackType.VIDEO);
|
|
61
|
+
/** Refs to keep track of whether the user has published the track before going offline */
|
|
62
|
+
const isAudioPublishedRef = (0, react_1.useRef)(false);
|
|
63
|
+
const isVideoPublishedRef = (0, react_1.useRef)(false);
|
|
64
|
+
isAudioPublishedRef.current = !isAudioPublished;
|
|
65
|
+
isVideoPublishedRef.current = !isVideoPublished;
|
|
66
|
+
/** Refs to be used for useEffect that does the rejoining flow when coming back offline */
|
|
67
|
+
const publishAudioStreamRef = (0, react_1.useRef)(publishAudioStream);
|
|
68
|
+
const publishVideoStreamRef = (0, react_1.useRef)(publishVideoStream);
|
|
69
|
+
publishAudioStreamRef.current = publishAudioStream;
|
|
70
|
+
publishVideoStreamRef.current = publishVideoStream;
|
|
71
|
+
/** Attempt to republish video stream when app comes back to foreground */
|
|
72
|
+
(0, useAppStateListener_1.useAppStateListener)(isVideoPublishedRef.current ? publishVideoStream : undefined);
|
|
73
|
+
/**
|
|
74
|
+
* Effect to re-join to an existing call happens in case the user comes back online
|
|
75
|
+
*/
|
|
76
|
+
(0, react_1.useEffect)(() => {
|
|
77
|
+
const unsubscribe = netinfo_1.default.addEventListener(async (state) => {
|
|
78
|
+
const { isConnected, isInternetReachable } = state;
|
|
79
|
+
const isOnline = isConnected !== false && isInternetReachable !== false;
|
|
80
|
+
isOnlineRef.current = isOnline;
|
|
81
|
+
if (!callRef.current)
|
|
82
|
+
return;
|
|
83
|
+
const callToJoin = callRef.current;
|
|
84
|
+
await rejoinCall(callToJoin, isOnline, isAudioPublishedRef.current, isVideoPublishedRef.current, publishAudioStreamRef.current, publishVideoStreamRef.current);
|
|
85
|
+
});
|
|
86
|
+
return unsubscribe;
|
|
87
|
+
}, []);
|
|
88
|
+
const toggleVideoMuted = (0, react_1.useCallback)(async () => {
|
|
89
|
+
if (!isVideoPublished) {
|
|
90
|
+
publishVideoStream();
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
await call?.stopPublish(video_client_1.SfuModels.TrackType.VIDEO);
|
|
94
|
+
}
|
|
95
|
+
}, [call, isVideoPublished, publishVideoStream]);
|
|
96
|
+
const toggleAudioMuted = (0, react_1.useCallback)(async () => {
|
|
97
|
+
if (!isAudioPublished) {
|
|
98
|
+
publishAudioStream();
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
await call?.stopPublish(video_client_1.SfuModels.TrackType.AUDIO);
|
|
102
|
+
}
|
|
103
|
+
}, [call, isAudioPublished, publishAudioStream]);
|
|
104
|
+
const toggleCameraFacingMode = (0, react_1.useCallback)(() => {
|
|
105
|
+
const videoDevice = videoDevices.find((device) => device.kind === 'videoinput' &&
|
|
106
|
+
(!isCameraOnFrontFacingMode
|
|
107
|
+
? device.facing === 'front'
|
|
108
|
+
: device.facing === 'environment'));
|
|
109
|
+
setState((prevState) => ({
|
|
110
|
+
currentVideoDevice: videoDevice,
|
|
111
|
+
isCameraOnFrontFacingMode: !prevState.isCameraOnFrontFacingMode,
|
|
112
|
+
}));
|
|
113
|
+
}, [isCameraOnFrontFacingMode, videoDevices, setState]);
|
|
114
|
+
return {
|
|
115
|
+
isAudioPublished,
|
|
116
|
+
isVideoPublished,
|
|
117
|
+
isCameraOnFrontFacingMode,
|
|
118
|
+
toggleAudioMuted,
|
|
119
|
+
toggleVideoMuted,
|
|
120
|
+
toggleCameraFacingMode,
|
|
121
|
+
};
|
|
122
|
+
};
|
|
123
|
+
exports.useCallControls = useCallControls;
|
|
124
|
+
/**
|
|
125
|
+
* Helper function to rejoin a call and then publish the streams
|
|
126
|
+
*/
|
|
127
|
+
async function rejoinCall(callToJoin, isOnline, isAudioPublished, isVideoPublished, publishAudioStream, publishVideoStream) {
|
|
128
|
+
const isCurrentStateOffline = callToJoin.state.callingState === video_client_1.CallingState.OFFLINE;
|
|
129
|
+
if (!isOnline && !isCurrentStateOffline) {
|
|
130
|
+
callToJoin.state.setCallingState(video_client_1.CallingState.OFFLINE);
|
|
131
|
+
}
|
|
132
|
+
else if (isOnline && isCurrentStateOffline && callToJoin.rejoin) {
|
|
133
|
+
try {
|
|
134
|
+
await callToJoin.rejoin();
|
|
135
|
+
if (isAudioPublished) {
|
|
136
|
+
await publishAudioStream();
|
|
137
|
+
}
|
|
138
|
+
if (isVideoPublished) {
|
|
139
|
+
await publishVideoStream();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
console.error('Failed to rejoin', e);
|
|
144
|
+
callToJoin.state.setCallingState(video_client_1.CallingState.RECONNECTING_FAILED);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=useCallControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCallControls.js","sourceRoot":"","sources":["../../../src/hooks/useCallControls.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useCallCycleEffect = void 0;
|
|
4
|
+
const video_react_bindings_1 = require("@stream-io/video-react-bindings");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const video_client_1 = require("@stream-io/video-client");
|
|
7
|
+
const usePrevious_1 = require("../utils/hooks/usePrevious");
|
|
8
|
+
const NON_ACTIVE_CALLING_STATES = [video_client_1.CallingState.UNKNOWN, video_client_1.CallingState.IDLE];
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* @param callCycleHandlers
|
|
12
|
+
*
|
|
13
|
+
* @category Client State
|
|
14
|
+
*/
|
|
15
|
+
const useCallCycleEffect = (callCycleHandlers) => {
|
|
16
|
+
const call = (0, video_react_bindings_1.useCall)();
|
|
17
|
+
const callingState = (0, video_react_bindings_1.useCallCallingState)();
|
|
18
|
+
const prevCallingState = (0, usePrevious_1.usePrevious)(callingState);
|
|
19
|
+
const { onCallJoined, onCallIncoming, onCallOutgoing, onCallHungUp, onCallRejected, onCallJoining, } = callCycleHandlers;
|
|
20
|
+
(0, react_1.useEffect)(() => {
|
|
21
|
+
if (!call || NON_ACTIVE_CALLING_STATES.includes(callingState))
|
|
22
|
+
return;
|
|
23
|
+
const isCallCreatedByMe = call.data?.created_by.id === call?.currentUserId;
|
|
24
|
+
const isCallCreatedByOther = !!call.data?.created_by.id && !isCallCreatedByMe;
|
|
25
|
+
const isIncomingCall = callingState === video_client_1.CallingState.RINGING &&
|
|
26
|
+
!isCallCreatedByMe &&
|
|
27
|
+
onCallIncoming;
|
|
28
|
+
const isOutgoingCall = callingState === video_client_1.CallingState.RINGING &&
|
|
29
|
+
isCallCreatedByMe &&
|
|
30
|
+
onCallOutgoing;
|
|
31
|
+
const isActiveCall = callingState === video_client_1.CallingState.JOINED && onCallJoined;
|
|
32
|
+
const isCallHungUp = callingState === video_client_1.CallingState.LEFT && onCallHungUp;
|
|
33
|
+
const isCallRejected = callingState === video_client_1.CallingState.LEFT &&
|
|
34
|
+
isCallCreatedByOther &&
|
|
35
|
+
onCallRejected;
|
|
36
|
+
const isCallJoining = callingState === video_client_1.CallingState.JOINING && onCallJoining;
|
|
37
|
+
if (isIncomingCall)
|
|
38
|
+
return onCallIncoming();
|
|
39
|
+
if (isOutgoingCall)
|
|
40
|
+
return onCallOutgoing();
|
|
41
|
+
if (isActiveCall)
|
|
42
|
+
return onCallJoined();
|
|
43
|
+
if (isCallHungUp)
|
|
44
|
+
return onCallHungUp();
|
|
45
|
+
if (isCallRejected)
|
|
46
|
+
return onCallRejected();
|
|
47
|
+
if (isCallJoining)
|
|
48
|
+
return onCallJoining();
|
|
49
|
+
}, [
|
|
50
|
+
callingState,
|
|
51
|
+
prevCallingState,
|
|
52
|
+
call,
|
|
53
|
+
onCallIncoming,
|
|
54
|
+
onCallOutgoing,
|
|
55
|
+
onCallJoined,
|
|
56
|
+
onCallHungUp,
|
|
57
|
+
onCallRejected,
|
|
58
|
+
onCallJoining,
|
|
59
|
+
]);
|
|
60
|
+
};
|
|
61
|
+
exports.useCallCycleEffect = useCallCycleEffect;
|
|
62
|
+
//# sourceMappingURL=useCallCycleEffect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCallCycleEffect.js","sourceRoot":"","sources":["../../../src/hooks/useCallCycleEffect.tsx"],"names":[],"mappings":";;;AAAA,0EAA+E;AAC/E,iCAAkC;AAClC,0DAAuD;AAEvD,4DAAyD;AAEzD,MAAM,yBAAyB,GAAG,CAAC,2BAAY,CAAC,OAAO,EAAE,2BAAY,CAAC,IAAI,CAAC,CAAC;AAC5E;;;;;GAKG;AACI,MAAM,kBAAkB,GAAG,CAChC,iBAAwC,EACxC,EAAE;IACF,MAAM,IAAI,GAAG,IAAA,8BAAO,GAAE,CAAC;IACvB,MAAM,YAAY,GAAG,IAAA,0CAAmB,GAAE,CAAC;IAC3C,MAAM,gBAAgB,GAAG,IAAA,yBAAW,EAAC,YAAY,CAAC,CAAC;IACnD,MAAM,EACJ,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACZ,cAAc,EACd,aAAa,GACd,GAAG,iBAAiB,CAAC;IAEtB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,IAAI,yBAAyB,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,OAAO;QACtE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,KAAK,IAAI,EAAE,aAAa,CAAC;QAC3E,MAAM,oBAAoB,GACxB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC;QACnD,MAAM,cAAc,GAClB,YAAY,KAAK,2BAAY,CAAC,OAAO;YACrC,CAAC,iBAAiB;YAClB,cAAc,CAAC;QACjB,MAAM,cAAc,GAClB,YAAY,KAAK,2BAAY,CAAC,OAAO;YACrC,iBAAiB;YACjB,cAAc,CAAC;QACjB,MAAM,YAAY,GAAG,YAAY,KAAK,2BAAY,CAAC,MAAM,IAAI,YAAY,CAAC;QAC1E,MAAM,YAAY,GAAG,YAAY,KAAK,2BAAY,CAAC,IAAI,IAAI,YAAY,CAAC;QACxE,MAAM,cAAc,GAClB,YAAY,KAAK,2BAAY,CAAC,IAAI;YAClC,oBAAoB;YACpB,cAAc,CAAC;QACjB,MAAM,aAAa,GACjB,YAAY,KAAK,2BAAY,CAAC,OAAO,IAAI,aAAa,CAAC;QAEzD,IAAI,cAAc;YAAE,OAAO,cAAc,EAAE,CAAC;QAC5C,IAAI,cAAc;YAAE,OAAO,cAAc,EAAE,CAAC;QAC5C,IAAI,YAAY;YAAE,OAAO,YAAY,EAAE,CAAC;QACxC,IAAI,YAAY;YAAE,OAAO,YAAY,EAAE,CAAC;QACxC,IAAI,cAAc;YAAE,OAAO,cAAc,EAAE,CAAC;QAC5C,IAAI,aAAa;YAAE,OAAO,aAAa,EAAE,CAAC;IAC5C,CAAC,EAAE;QACD,YAAY;QACZ,gBAAgB;QAChB,IAAI;QACJ,cAAc;QACd,cAAc;QACd,YAAY;QACZ,YAAY;QACZ,cAAc;QACd,aAAa;KACd,CAAC,CAAC;AACL,CAAC,CAAC;AAtDW,QAAA,kBAAkB,sBAsD7B"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useCallKeep = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const react_native_1 = require("react-native");
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const video_react_bindings_1 = require("@stream-io/video-react-bindings");
|
|
8
|
+
let RNCallKeep;
|
|
9
|
+
try {
|
|
10
|
+
RNCallKeep = require('react-native-callkeep').default;
|
|
11
|
+
}
|
|
12
|
+
catch (e) { }
|
|
13
|
+
/**
|
|
14
|
+
*
|
|
15
|
+
* @returns
|
|
16
|
+
*
|
|
17
|
+
* @category Call Operations
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
const useCallKeep = () => {
|
|
21
|
+
const activeCall = (0, video_react_bindings_1.useCall)();
|
|
22
|
+
if (!RNCallKeep) {
|
|
23
|
+
throw Error("react-native-callkeep library is not installed. Please install it using 'yarn add react-native-callkeep' or 'npm install react-native-callkeep'");
|
|
24
|
+
}
|
|
25
|
+
const users = activeCall?.state.getCurrentValue(activeCall.state.members$);
|
|
26
|
+
const userIds = (0, react_1.useMemo)(() => Object.keys(users || {}), [users]);
|
|
27
|
+
const callTitle = (0, utils_1.generateCallTitle)(userIds);
|
|
28
|
+
const startCall = (0, react_1.useCallback)(async () => {
|
|
29
|
+
if (react_native_1.Platform.OS === 'ios' && activeCall) {
|
|
30
|
+
await RNCallKeep?.startCall(activeCall.id, callTitle, userIds.join(','), 'generic');
|
|
31
|
+
}
|
|
32
|
+
}, [activeCall, callTitle, userIds]);
|
|
33
|
+
const endCall = (0, react_1.useCallback)(async () => {
|
|
34
|
+
if (react_native_1.Platform.OS === 'ios' && activeCall) {
|
|
35
|
+
await RNCallKeep?.endCall(activeCall.id);
|
|
36
|
+
}
|
|
37
|
+
}, [activeCall]);
|
|
38
|
+
return { startCall, endCall };
|
|
39
|
+
};
|
|
40
|
+
exports.useCallKeep = useCallKeep;
|
|
41
|
+
//# sourceMappingURL=useCallKeep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCallKeep.js","sourceRoot":"","sources":["../../../src/hooks/useCallKeep.tsx"],"names":[],"mappings":";;;AAAA,iCAA6C;AAC7C,+CAAwC;AACxC,oCAA6C;AAC7C,0EAA0D;AAI1D,IAAI,UAAsC,CAAC;AAE3C,IAAI;IACF,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,OAAO,CAAC;CACvD;AAAC,OAAO,CAAC,EAAE,GAAE;AAEd;;;;;;GAMG;AACI,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,UAAU,GAAG,IAAA,8BAAO,GAAE,CAAC;IAC7B,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,KAAK,CACT,iJAAiJ,CAClJ,CAAC;KACH;IAED,MAAM,KAAK,GAAG,UAAU,EAAE,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC;IAE7C,MAAM,SAAS,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QACvC,IAAI,uBAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,UAAU,EAAE;YACvC,MAAM,UAAU,EAAE,SAAS,CACzB,UAAU,CAAC,EAAE,EACb,SAAS,EACT,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EACjB,SAAS,CACV,CAAC;SACH;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;IAErC,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QACrC,IAAI,uBAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,UAAU,EAAE;YACvC,MAAM,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SAC1C;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC,CAAC;AA9BW,QAAA,WAAW,eA8BtB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { StreamClientOptions, StreamVideoClient, TokenOrProvider, User } from '@stream-io/video-client';
|
|
2
|
+
/**
|
|
3
|
+
* Exclude types from documentation site, but we should still add doc comments
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export type StreamVideoClientInit = {
|
|
7
|
+
/**
|
|
8
|
+
* The Stream API key.
|
|
9
|
+
*/
|
|
10
|
+
apiKey: string;
|
|
11
|
+
/**
|
|
12
|
+
* The token or token provider.
|
|
13
|
+
*/
|
|
14
|
+
tokenOrProvider: TokenOrProvider;
|
|
15
|
+
/**
|
|
16
|
+
* The client options.
|
|
17
|
+
*/
|
|
18
|
+
options?: StreamClientOptions;
|
|
19
|
+
/**
|
|
20
|
+
* The user to connect.
|
|
21
|
+
*/
|
|
22
|
+
user: User;
|
|
23
|
+
/**
|
|
24
|
+
* Whether the user is anonymous. Defaults to `false`.
|
|
25
|
+
*/
|
|
26
|
+
isAnonymous?: boolean;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Creates a new `StreamVideoClient` instance and connects the given user.
|
|
30
|
+
*
|
|
31
|
+
* @category Client State
|
|
32
|
+
*/
|
|
33
|
+
export declare const useCreateStreamVideoClient: ({ apiKey, tokenOrProvider, user, options, isAnonymous, }: StreamVideoClientInit) => StreamVideoClient;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useCreateStreamVideoClient = void 0;
|
|
4
|
+
const video_client_1 = require("@stream-io/video-client");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
/**
|
|
7
|
+
* Creates a new `StreamVideoClient` instance and connects the given user.
|
|
8
|
+
*
|
|
9
|
+
* @category Client State
|
|
10
|
+
*/
|
|
11
|
+
const useCreateStreamVideoClient = ({ apiKey, tokenOrProvider, user, options, isAnonymous = false, }) => {
|
|
12
|
+
const [client] = (0, react_1.useState)(() => new video_client_1.StreamVideoClient(apiKey, options));
|
|
13
|
+
const disconnectRef = (0, react_1.useRef)(Promise.resolve());
|
|
14
|
+
(0, react_1.useEffect)(() => {
|
|
15
|
+
const connectionPromise = disconnectRef.current.then(() => {
|
|
16
|
+
if (isAnonymous) {
|
|
17
|
+
return client
|
|
18
|
+
.connectAnonymousUser(user, tokenOrProvider)
|
|
19
|
+
.catch((err) => {
|
|
20
|
+
console.error(`Failed to establish connection`, err);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return client.connectUser(user, tokenOrProvider).catch((err) => {
|
|
24
|
+
console.error(`Failed to establish connection`, err);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
return () => {
|
|
28
|
+
disconnectRef.current = connectionPromise
|
|
29
|
+
.then(() => client.disconnectUser())
|
|
30
|
+
.catch((err) => {
|
|
31
|
+
console.error(`Failed to disconnect`, err);
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
// we want to re-run this effect only in some special cases
|
|
35
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
36
|
+
}, [apiKey, tokenOrProvider, client, isAnonymous, user?.id]);
|
|
37
|
+
return client;
|
|
38
|
+
};
|
|
39
|
+
exports.useCreateStreamVideoClient = useCreateStreamVideoClient;
|
|
40
|
+
//# sourceMappingURL=useCreateStreamVideoClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCreateStreamVideoClient.js","sourceRoot":"","sources":["../../../src/hooks/useCreateStreamVideoClient.tsx"],"names":[],"mappings":";;;AAAA,0DAKiC;AACjC,iCAAoD;AA6BpD;;;;GAIG;AACI,MAAM,0BAA0B,GAAG,CAAC,EACzC,MAAM,EACN,eAAe,EACf,IAAI,EACJ,OAAO,EACP,WAAW,GAAG,KAAK,GACG,EAAE,EAAE;IAC1B,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,gBAAQ,EAAC,GAAG,EAAE,CAAC,IAAI,gCAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAExE,MAAM,aAAa,GAAG,IAAA,cAAM,EAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAChD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,iBAAiB,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YACxD,IAAI,WAAW,EAAE;gBACf,OAAO,MAAM;qBACV,oBAAoB,CAAC,IAAI,EAAE,eAAe,CAAC;qBAC3C,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;gBACvD,CAAC,CAAC,CAAC;aACN;YACD,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC7D,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,OAAO,GAAG,iBAAiB;iBACtC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;iBACnC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACb,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;QACF,2DAA2D;QAC3D,uDAAuD;IACzD,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAE7D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AApCW,QAAA,0BAA0B,8BAoCrC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type IncallManagerProps = {
|
|
2
|
+
media: 'audio' | 'video';
|
|
3
|
+
auto: boolean;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* A hook to handle IncallManager specs in the application.
|
|
7
|
+
*
|
|
8
|
+
* @param media
|
|
9
|
+
* @param auto
|
|
10
|
+
*
|
|
11
|
+
* @category Device Management
|
|
12
|
+
* */
|
|
13
|
+
export declare const useIncallManager: ({ auto, media }: IncallManagerProps) => void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useIncallManager = void 0;
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
const react_native_incall_manager_1 = __importDefault(require("react-native-incall-manager"));
|
|
9
|
+
/**
|
|
10
|
+
* A hook to handle IncallManager specs in the application.
|
|
11
|
+
*
|
|
12
|
+
* @param media
|
|
13
|
+
* @param auto
|
|
14
|
+
*
|
|
15
|
+
* @category Device Management
|
|
16
|
+
* */
|
|
17
|
+
const useIncallManager = ({ auto, media }) => {
|
|
18
|
+
(0, react_1.useEffect)(() => {
|
|
19
|
+
react_native_incall_manager_1.default.start({ media, auto });
|
|
20
|
+
return () => react_native_incall_manager_1.default.stop();
|
|
21
|
+
}, [auto, media]);
|
|
22
|
+
};
|
|
23
|
+
exports.useIncallManager = useIncallManager;
|
|
24
|
+
//# sourceMappingURL=useIncallManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIncallManager.js","sourceRoot":"","sources":["../../../src/hooks/useIncallManager.tsx"],"names":[],"mappings":";;;;;;AAAA,iCAAkC;AAClC,8FAAwD;AAOxD;;;;;;;MAOM;AACC,MAAM,gBAAgB,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAsB,EAAE,EAAE;IACtE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,qCAAa,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAErC,OAAO,GAAG,EAAE,CAAC,qCAAa,CAAC,IAAI,EAAE,CAAC;IACpC,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC;AANW,QAAA,gBAAgB,oBAM3B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useLocalVideoStream = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const video_client_1 = require("@stream-io/video-client");
|
|
6
|
+
const contexts_1 = require("../contexts");
|
|
7
|
+
/**
|
|
8
|
+
* A hook which provides the device's local video stream.
|
|
9
|
+
*
|
|
10
|
+
* @category Device Management
|
|
11
|
+
*/
|
|
12
|
+
const useLocalVideoStream = () => {
|
|
13
|
+
const [videoStream, setVideoStream] = (0, react_1.useState)(undefined);
|
|
14
|
+
const currentVideoDevice = (0, contexts_1.useStreamVideoStoreValue)((store) => store.currentVideoDevice);
|
|
15
|
+
(0, react_1.useEffect)(() => {
|
|
16
|
+
const loadVideoStream = async () => {
|
|
17
|
+
// If there is no video device, we don't need to load a video stream.
|
|
18
|
+
if (!currentVideoDevice?.deviceId)
|
|
19
|
+
return null;
|
|
20
|
+
const stream = await (0, video_client_1.getVideoStream)({
|
|
21
|
+
deviceId: currentVideoDevice.deviceId,
|
|
22
|
+
});
|
|
23
|
+
setVideoStream((previousStream) => {
|
|
24
|
+
if (previousStream)
|
|
25
|
+
(0, video_client_1.disposeOfMediaStream)(previousStream);
|
|
26
|
+
return stream;
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
loadVideoStream();
|
|
30
|
+
}, [currentVideoDevice?.deviceId]);
|
|
31
|
+
return videoStream;
|
|
32
|
+
};
|
|
33
|
+
exports.useLocalVideoStream = useLocalVideoStream;
|
|
34
|
+
//# sourceMappingURL=useLocalVideoStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLocalVideoStream.js","sourceRoot":"","sources":["../../../src/hooks/useLocalVideoStream.ts"],"names":[],"mappings":";;;AAAA,iCAA4C;AAC5C,0DAA+E;AAE/E,0CAAuD;AAEvD;;;;GAIG;AACI,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAC5C,SAAS,CACV,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAA,mCAAwB,EACjD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,kBAAkB,CACpC,CAAC;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;YACjC,qEAAqE;YACrE,IAAI,CAAC,kBAAkB,EAAE,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAE/C,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAc,EAAC;gBAClC,QAAQ,EAAE,kBAAkB,CAAC,QAAQ;aACtC,CAAC,CAAC;YACH,cAAc,CAAC,CAAC,cAAc,EAAE,EAAE;gBAChC,IAAI,cAAc;oBAAE,IAAA,mCAAoB,EAAC,cAAc,CAAC,CAAC;gBACzD,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,eAAe,EAAE,CAAC;IACpB,CAAC,EAAE,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEnC,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAzBW,QAAA,mBAAmB,uBAyB9B"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A helper hook which exposes audio, video mute and camera facing mode and
|
|
3
|
+
* their respective functions to toggle state
|
|
4
|
+
*
|
|
5
|
+
* @category Device Management
|
|
6
|
+
*/
|
|
7
|
+
export declare const useMutingState: () => {
|
|
8
|
+
isAudioMuted: boolean;
|
|
9
|
+
isVideoMuted: boolean;
|
|
10
|
+
toggleAudioState: () => void;
|
|
11
|
+
toggleVideoState: () => void;
|
|
12
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useMutingState = void 0;
|
|
4
|
+
const StreamVideoContext_1 = require("../contexts/StreamVideoContext");
|
|
5
|
+
/**
|
|
6
|
+
* A helper hook which exposes audio, video mute and camera facing mode and
|
|
7
|
+
* their respective functions to toggle state
|
|
8
|
+
*
|
|
9
|
+
* @category Device Management
|
|
10
|
+
*/
|
|
11
|
+
const useMutingState = () => {
|
|
12
|
+
const isAudioMuted = (0, StreamVideoContext_1.useStreamVideoStoreValue)((store) => store.isAudioMuted);
|
|
13
|
+
const isVideoMuted = (0, StreamVideoContext_1.useStreamVideoStoreValue)((store) => store.isVideoMuted);
|
|
14
|
+
const setState = (0, StreamVideoContext_1.useStreamVideoStoreSetState)();
|
|
15
|
+
const toggleAudioState = () => setState({ isAudioMuted: !isAudioMuted });
|
|
16
|
+
const toggleVideoState = () => setState({ isVideoMuted: !isVideoMuted });
|
|
17
|
+
return {
|
|
18
|
+
isAudioMuted,
|
|
19
|
+
isVideoMuted,
|
|
20
|
+
toggleAudioState,
|
|
21
|
+
toggleVideoState,
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
exports.useMutingState = useMutingState;
|
|
25
|
+
//# sourceMappingURL=useMutingState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMutingState.js","sourceRoot":"","sources":["../../../src/hooks/useMutingState.ts"],"names":[],"mappings":";;;AAAA,uEAGwC;AACxC;;;;;GAKG;AACI,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,MAAM,YAAY,GAAG,IAAA,6CAAwB,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,IAAA,6CAAwB,EAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,IAAA,gDAA2B,GAAE,CAAC;IAC/C,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;IACzE,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;IAEzE,OAAO;QACL,YAAY;QACZ,YAAY;QACZ,gBAAgB;QAChB,gBAAgB;KACjB,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,cAAc,kBAazB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { OwnCapability } from '@stream-io/video-client';
|
|
2
|
+
export type PermissionNotificationProps = {
|
|
3
|
+
/**
|
|
4
|
+
* The permission to check for.
|
|
5
|
+
*/
|
|
6
|
+
permission: OwnCapability;
|
|
7
|
+
/**
|
|
8
|
+
* The message to display in the notification once
|
|
9
|
+
* the requested permission is granted.
|
|
10
|
+
*/
|
|
11
|
+
messageApproved: string;
|
|
12
|
+
/**
|
|
13
|
+
* The message to display in the notification once a permission
|
|
14
|
+
* is revoked.
|
|
15
|
+
*/
|
|
16
|
+
messageRevoked: string;
|
|
17
|
+
};
|
|
18
|
+
export declare const usePermissionNotification: (props: PermissionNotificationProps) => void;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.usePermissionNotification = void 0;
|
|
4
|
+
const video_react_bindings_1 = require("@stream-io/video-react-bindings");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const react_native_1 = require("react-native");
|
|
7
|
+
const usePrevious_1 = require("../utils/hooks/usePrevious");
|
|
8
|
+
const usePermissionNotification = (props) => {
|
|
9
|
+
const { permission, messageApproved, messageRevoked } = props;
|
|
10
|
+
const hasPermission = (0, video_react_bindings_1.useHasPermissions)(permission);
|
|
11
|
+
const previousHasPermission = (0, usePrevious_1.usePrevious)(hasPermission);
|
|
12
|
+
const showGrantedNotification = (0, react_1.useCallback)(() => {
|
|
13
|
+
react_native_1.Alert.alert(messageApproved);
|
|
14
|
+
}, [messageApproved]);
|
|
15
|
+
const showRevokedNotification = (0, react_1.useCallback)(() => {
|
|
16
|
+
react_native_1.Alert.alert(messageRevoked);
|
|
17
|
+
}, [messageRevoked]);
|
|
18
|
+
(0, react_1.useEffect)(() => {
|
|
19
|
+
if (hasPermission && !previousHasPermission) {
|
|
20
|
+
showGrantedNotification();
|
|
21
|
+
}
|
|
22
|
+
else if (!hasPermission && previousHasPermission) {
|
|
23
|
+
showRevokedNotification();
|
|
24
|
+
}
|
|
25
|
+
}, [
|
|
26
|
+
hasPermission,
|
|
27
|
+
previousHasPermission,
|
|
28
|
+
showGrantedNotification,
|
|
29
|
+
showRevokedNotification,
|
|
30
|
+
]);
|
|
31
|
+
};
|
|
32
|
+
exports.usePermissionNotification = usePermissionNotification;
|
|
33
|
+
//# sourceMappingURL=usePermissionNotification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePermissionNotification.js","sourceRoot":"","sources":["../../../src/hooks/usePermissionNotification.tsx"],"names":[],"mappings":";;;AACA,0EAAoE;AACpE,iCAA+C;AAC/C,+CAAqC;AACrC,4DAAyD;AAqBlD,MAAM,yBAAyB,GAAG,CACvC,KAAkC,EAClC,EAAE;IACF,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAC9D,MAAM,aAAa,GAAG,IAAA,wCAAiB,EAAC,UAAU,CAAC,CAAC;IACpD,MAAM,qBAAqB,GAAG,IAAA,yBAAW,EAAC,aAAa,CAAC,CAAC;IAEzD,MAAM,uBAAuB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC/C,oBAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,MAAM,uBAAuB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QAC/C,oBAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,aAAa,IAAI,CAAC,qBAAqB,EAAE;YAC3C,uBAAuB,EAAE,CAAC;SAC3B;aAAM,IAAI,CAAC,aAAa,IAAI,qBAAqB,EAAE;YAClD,uBAAuB,EAAE,CAAC;SAC3B;IACH,CAAC,EAAE;QACD,aAAa;QACb,qBAAqB;QACrB,uBAAuB;QACvB,uBAAuB;KACxB,CAAC,CAAC;AACL,CAAC,CAAC;AA3BW,QAAA,yBAAyB,6BA2BpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const usePermissionRequest: () => void;
|