@stream-io/video-react-native-sdk 0.0.1-alpha.247 → 0.0.1-alpha.248
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 +9 -0
- package/dist/__tests__/utils/RNTLTools.d.ts +1 -3
- package/dist/__tests__/utils/RNTLTools.js +4 -16
- package/dist/__tests__/utils/RNTLTools.js.map +1 -1
- package/dist/src/components/IncomingCallView.d.ts +35 -1
- package/dist/src/components/IncomingCallView.js +4 -26
- package/dist/src/components/IncomingCallView.js.map +1 -1
- package/dist/src/components/OutgoingCallView.d.ts +21 -1
- package/dist/src/components/OutgoingCallView.js +5 -20
- package/dist/src/components/OutgoingCallView.js.map +1 -1
- package/dist/src/hooks/index.d.ts +1 -1
- package/dist/src/hooks/index.js +1 -1
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/providers/StreamCall.d.ts +1 -40
- package/dist/src/providers/StreamCall.js +3 -10
- package/dist/src/providers/StreamCall.js.map +1 -1
- package/dist/src/utils/push/utils.js +7 -14
- package/dist/src/utils/push/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/components/IncomingCallView.tsx +42 -27
- package/src/components/OutgoingCallView.tsx +29 -20
- package/src/hooks/index.ts +1 -1
- package/src/providers/StreamCall.tsx +2 -57
- package/src/utils/push/utils.ts +7 -16
- package/dist/src/hooks/useCallCycleEffect.d.ts +0 -8
- package/dist/src/hooks/useCallCycleEffect.js +0 -69
- package/dist/src/hooks/useCallCycleEffect.js.map +0 -1
- package/src/hooks/useCallCycleEffect.tsx +0 -82
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [0.0.1-alpha.248](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.0.1-alpha.247...@stream-io/video-react-native-sdk-0.0.1-alpha.248) (2023-07-06)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* Remove ringing flag from call client ([#755](https://github.com/GetStream/stream-video-js/issues/755)) ([b78c605](https://github.com/GetStream/stream-video-js/commit/b78c60500e06b39fb4dce623bde6f7b10acdd8c1)), closes [/github.com/GetStream/stream-video-android/blob/develop/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/notifications/internal/VideoPushDelegate.kt#L82](https://github.com//github.com/GetStream/stream-video-android/blob/develop/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/notifications/internal/VideoPushDelegate.kt/issues/L82)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
5
14
|
## [0.0.1-alpha.247](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.0.1-alpha.246...@stream-io/video-react-native-sdk-0.0.1-alpha.247) (2023-07-05)
|
|
6
15
|
|
|
7
16
|
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Call } from '@stream-io/video-client';
|
|
3
|
-
import { CallCycleHandlersType } from '../../src/providers';
|
|
4
3
|
import { RenderOptions } from '@testing-library/react-native';
|
|
5
4
|
import { RenderResult } from '@testing-library/react-native/build/render';
|
|
6
5
|
export interface RenderProps {
|
|
7
6
|
component: React.ReactElement<any, string | React.JSXElementConstructor<any>>;
|
|
8
7
|
options?: RenderOptions & {
|
|
9
8
|
call?: Call;
|
|
10
|
-
callCycleHandlers?: CallCycleHandlersType;
|
|
11
9
|
};
|
|
12
10
|
}
|
|
13
11
|
export * from '@testing-library/react-native';
|
|
14
|
-
declare const render: (component: RenderProps['component'], { call,
|
|
12
|
+
declare const render: (component: RenderProps['component'], { call, ...options }?: RenderProps['options']) => RenderResult;
|
|
15
13
|
export { render };
|
|
@@ -25,31 +25,19 @@ const react_native_1 = require("@testing-library/react-native");
|
|
|
25
25
|
const client_1 = require("../mocks/client");
|
|
26
26
|
const call_1 = require("../mocks/call");
|
|
27
27
|
const MediaStreamManagement_1 = require("../../src/providers/MediaStreamManagement");
|
|
28
|
-
const mockedCallCycleHandlers = {
|
|
29
|
-
onCallAccepted: jest.fn(),
|
|
30
|
-
onCallEnded: jest.fn(),
|
|
31
|
-
onCallRejected: jest.fn(),
|
|
32
|
-
onCallStarted: jest.fn(),
|
|
33
|
-
onCallTimeout: jest.fn(),
|
|
34
|
-
onCallError: jest.fn(),
|
|
35
|
-
};
|
|
36
28
|
__exportStar(require("@testing-library/react-native"), exports);
|
|
37
|
-
const Wrapper = ({ children, client,
|
|
29
|
+
const Wrapper = ({ children, client, call, }) => (<providers_1.StreamVideo client={client} language={'en'}>
|
|
38
30
|
<video_react_bindings_1.StreamCallProvider call={call}>
|
|
39
|
-
<MediaStreamManagement_1.MediaStreamManagement>
|
|
40
|
-
<providers_1.CallCycleLogicsWrapper callCycleHandlers={callCycleHandlers}>
|
|
41
|
-
{children}
|
|
42
|
-
</providers_1.CallCycleLogicsWrapper>
|
|
43
|
-
</MediaStreamManagement_1.MediaStreamManagement>
|
|
31
|
+
<MediaStreamManagement_1.MediaStreamManagement>{children}</MediaStreamManagement_1.MediaStreamManagement>
|
|
44
32
|
</video_react_bindings_1.StreamCallProvider>
|
|
45
33
|
</providers_1.StreamVideo>);
|
|
46
34
|
// override React Testing Library's render with our own
|
|
47
35
|
// that way we can wrap the component with the necessary providers
|
|
48
|
-
const render = (component, { call,
|
|
36
|
+
const render = (component, { call, ...options } = {}) => {
|
|
49
37
|
const testClient = (0, client_1.mockClientWithUser)({ id: 'test-user-id' });
|
|
50
38
|
const testCall = call || (0, call_1.mockCall)(testClient);
|
|
51
39
|
return (0, react_native_1.render)(component, {
|
|
52
|
-
wrapper: (props) => (<Wrapper {...props} client={testClient} call={testCall}
|
|
40
|
+
wrapper: (props) => (<Wrapper {...props} client={testClient} call={testCall}/>),
|
|
53
41
|
...options,
|
|
54
42
|
});
|
|
55
43
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RNTLTools.js","sourceRoot":"","sources":["../../../__tests__/utils/RNTLTools.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,kDAAiD;AAEjD,
|
|
1
|
+
{"version":3,"file":"RNTLTools.js","sourceRoot":"","sources":["../../../__tests__/utils/RNTLTools.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,kDAAiD;AAEjD,mDAAkD;AAClD,0EAAqE;AACrE,gEAGuC;AAEvC,4CAAqD;AACrD,wCAAyC;AACzC,qFAAkF;AAelF,gEAA8C;AAE9C,MAAM,OAAO,GAAG,CAAC,EACf,QAAQ,EACR,MAAM,EACN,IAAI,GAC4B,EAAE,EAAE,CAAC,CACrC,CAAC,uBAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAC1C;IAAA,CAAC,yCAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAC7B;MAAA,CAAC,6CAAqB,CAAC,CAAC,QAAQ,CAAC,EAAE,6CAAqB,CAC1D;IAAA,EAAE,yCAAkB,CACtB;EAAA,EAAE,uBAAW,CAAC,CACf,CAAC;AACF,uDAAuD;AACvD,kEAAkE;AAClE,MAAM,MAAM,GAAG,CACb,SAAmC,EACnC,EAAE,IAAI,EAAE,GAAG,OAAO,KAA6B,EAAE,EACnC,EAAE;IAChB,MAAM,UAAU,GAAG,IAAA,2BAAkB,EAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,IAAI,IAAI,IAAA,eAAQ,EAAC,UAAU,CAAC,CAAC;IAC9C,OAAO,IAAA,qBAAS,EAAC,SAAS,EAAE;QAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAClB,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAG,CAC3D;QACD,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC,CAAC;AAEO,wBAAM"}
|
|
@@ -1 +1,35 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The props for the Accept Call button in the IncomingCallView component.
|
|
3
|
+
*/
|
|
4
|
+
type AcceptCallButton = {
|
|
5
|
+
/**
|
|
6
|
+
* Handler to be called when the accept call button is pressed.
|
|
7
|
+
* @returns void
|
|
8
|
+
*/
|
|
9
|
+
onPressHandler: () => void;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* The props for the Reject Call button in the IncomingCallView component.
|
|
13
|
+
*/
|
|
14
|
+
type RejectCallButton = {
|
|
15
|
+
/**
|
|
16
|
+
* Handler to be called when the reject call button is pressed.
|
|
17
|
+
* @returns void
|
|
18
|
+
*/
|
|
19
|
+
onPressHandler: () => void;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Props for the IncomingCallView Component.
|
|
23
|
+
*/
|
|
24
|
+
export type IncomingCallViewType = {
|
|
25
|
+
/**
|
|
26
|
+
* Accept Call Button Props to be passed as an object
|
|
27
|
+
*/
|
|
28
|
+
acceptCallButton: AcceptCallButton;
|
|
29
|
+
/**
|
|
30
|
+
* Reject Call Button Props to be passed as an object
|
|
31
|
+
*/
|
|
32
|
+
rejectCallButton: RejectCallButton;
|
|
33
|
+
};
|
|
34
|
+
export declare const IncomingCallView: ({ acceptCallButton, rejectCallButton, }: IncomingCallViewType) => JSX.Element;
|
|
35
|
+
export {};
|
|
@@ -11,31 +11,9 @@ const video_react_bindings_1 = require("@stream-io/video-react-bindings");
|
|
|
11
11
|
const UserInfoView_1 = require("./UserInfoView");
|
|
12
12
|
const icons_1 = require("../icons");
|
|
13
13
|
const theme_1 = require("../theme");
|
|
14
|
-
const video_client_1 = require("@stream-io/video-client");
|
|
15
14
|
const MediaStreamManagement_1 = require("../providers/MediaStreamManagement");
|
|
16
|
-
const IncomingCallView = () => {
|
|
17
|
-
const {
|
|
18
|
-
const call = (0, video_react_bindings_1.useCall)();
|
|
19
|
-
const callingState = (0, video_react_bindings_1.useCallCallingState)();
|
|
20
|
-
const answerCallHandler = async () => {
|
|
21
|
-
try {
|
|
22
|
-
await call?.join();
|
|
23
|
-
}
|
|
24
|
-
catch (error) {
|
|
25
|
-
console.log('Error joining Call', error);
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
const rejectCallHandler = async () => {
|
|
29
|
-
try {
|
|
30
|
-
if (callingState === video_client_1.CallingState.LEFT) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
await call?.leave({ reject: true });
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
console.log('Error leaving Call', error);
|
|
37
|
-
}
|
|
38
|
-
};
|
|
15
|
+
const IncomingCallView = ({ acceptCallButton, rejectCallButton, }) => {
|
|
16
|
+
const { initialVideoEnabled, toggleInitialVideoMuteState } = (0, MediaStreamManagement_1.useMediaStreamManagement)();
|
|
39
17
|
return (<Background>
|
|
40
18
|
<react_native_1.View style={styles.content}>
|
|
41
19
|
<UserInfoView_1.UserInfoView />
|
|
@@ -43,7 +21,7 @@ const IncomingCallView = () => {
|
|
|
43
21
|
</react_native_1.View>
|
|
44
22
|
|
|
45
23
|
<react_native_1.View style={styles.buttonGroup}>
|
|
46
|
-
<CallControlsButton_1.CallControlsButton onPress={
|
|
24
|
+
<CallControlsButton_1.CallControlsButton onPress={rejectCallButton.onPressHandler} color={theme_1.theme.light.error} style={[styles.button, theme_1.theme.button.lg]} svgContainerStyle={[styles.svgContainerStyle, theme_1.theme.icon.lg]}>
|
|
47
25
|
<icons_1.PhoneDown color={theme_1.theme.light.static_white}/>
|
|
48
26
|
</CallControlsButton_1.CallControlsButton>
|
|
49
27
|
<CallControlsButton_1.CallControlsButton onPress={toggleInitialVideoMuteState} color={initialVideoEnabled
|
|
@@ -51,7 +29,7 @@ const IncomingCallView = () => {
|
|
|
51
29
|
: theme_1.theme.light.overlay_dark} style={[styles.button, theme_1.theme.button.lg]} svgContainerStyle={[styles.svgContainerStyle, theme_1.theme.icon.lg]}>
|
|
52
30
|
{!initialVideoEnabled ? (<icons_1.VideoSlash color={theme_1.theme.light.static_white}/>) : (<icons_1.Video color={theme_1.theme.light.static_black}/>)}
|
|
53
31
|
</CallControlsButton_1.CallControlsButton>
|
|
54
|
-
<CallControlsButton_1.CallControlsButton onPress={
|
|
32
|
+
<CallControlsButton_1.CallControlsButton onPress={acceptCallButton.onPressHandler} color={theme_1.theme.light.info} style={[styles.button, theme_1.theme.button.lg]} svgContainerStyle={[styles.svgContainerStyle, theme_1.theme.icon.lg]}>
|
|
55
33
|
<icons_1.Phone color={theme_1.theme.light.static_white}/>
|
|
56
34
|
</CallControlsButton_1.CallControlsButton>
|
|
57
35
|
</react_native_1.View>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IncomingCallView.js","sourceRoot":"","sources":["../../../src/components/IncomingCallView.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,+CAAuE;AACvE,6DAA0D;AAC1D,
|
|
1
|
+
{"version":3,"file":"IncomingCallView.js","sourceRoot":"","sources":["../../../src/components/IncomingCallView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* The props for the Cancel Call button in the OutgoingCallView component.
|
|
3
|
+
*/
|
|
4
|
+
type CancelCallButton = {
|
|
5
|
+
/**
|
|
6
|
+
* Handler to be called when the cancel/hungup call button is pressed.
|
|
7
|
+
* @returns void
|
|
8
|
+
*/
|
|
9
|
+
onPressHandler: () => void;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Props for the OutgoingCallView Component.
|
|
13
|
+
*/
|
|
14
|
+
export type OutgoingCallViewType = {
|
|
15
|
+
/**
|
|
16
|
+
* Cancel/Reject Call Button Props to be passed as an object
|
|
17
|
+
*/
|
|
18
|
+
cancelCallHandler: CancelCallButton;
|
|
19
|
+
};
|
|
20
|
+
export declare const OutgoingCallView: ({ cancelCallHandler, }: OutgoingCallViewType) => JSX.Element;
|
|
21
|
+
export {};
|
|
@@ -12,27 +12,12 @@ const icons_1 = require("../icons");
|
|
|
12
12
|
const VideoRenderer_1 = require("./VideoRenderer");
|
|
13
13
|
const useLocalVideoStream_1 = require("../hooks/useLocalVideoStream");
|
|
14
14
|
const theme_1 = require("../theme");
|
|
15
|
-
const video_react_bindings_1 = require("@stream-io/video-react-bindings");
|
|
16
|
-
const video_client_1 = require("@stream-io/video-client");
|
|
17
15
|
const constants_1 = require("../constants");
|
|
18
16
|
const MediaStreamManagement_1 = require("../providers/MediaStreamManagement");
|
|
19
|
-
const OutgoingCallView = () => {
|
|
17
|
+
const OutgoingCallView = ({ cancelCallHandler, }) => {
|
|
20
18
|
const { initialAudioEnabled, initialVideoEnabled, toggleInitialAudioMuteState, toggleInitialVideoMuteState, } = (0, MediaStreamManagement_1.useMediaStreamManagement)();
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
const hangupCallHandler = async () => {
|
|
24
|
-
try {
|
|
25
|
-
if (callingState === video_client_1.CallingState.LEFT) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
await call?.leave();
|
|
29
|
-
}
|
|
30
|
-
catch (error) {
|
|
31
|
-
console.log('Error leaving Call', error);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
const muteStatusColor = (muted) => {
|
|
35
|
-
return muted ? theme_1.theme.light.overlay_dark : theme_1.theme.light.static_white;
|
|
19
|
+
const muteStatusColor = (status) => {
|
|
20
|
+
return status ? theme_1.theme.light.overlay_dark : theme_1.theme.light.static_white;
|
|
36
21
|
};
|
|
37
22
|
return (<>
|
|
38
23
|
<react_native_1.View style={[react_native_1.StyleSheet.absoluteFill, styles.container]}>
|
|
@@ -50,7 +35,7 @@ const OutgoingCallView = () => {
|
|
|
50
35
|
</CallControlsButton_1.CallControlsButton>
|
|
51
36
|
</react_native_1.View>
|
|
52
37
|
|
|
53
|
-
<CallControlsButton_1.CallControlsButton onPress={
|
|
38
|
+
<CallControlsButton_1.CallControlsButton onPress={cancelCallHandler.onPressHandler} color={theme_1.theme.light.error} style={[styles.button, styles.cancelCallButton, theme_1.theme.button.lg]} svgContainerStyle={[styles.svgContainerStyle, theme_1.theme.icon.lg]}>
|
|
54
39
|
<icons_1.PhoneDown color={theme_1.theme.light.static_white}/>
|
|
55
40
|
</CallControlsButton_1.CallControlsButton>
|
|
56
41
|
</react_native_1.View>
|
|
@@ -93,7 +78,7 @@ const styles = react_native_1.StyleSheet.create({
|
|
|
93
78
|
justifyContent: 'space-around',
|
|
94
79
|
marginBottom: theme_1.theme.margin.md,
|
|
95
80
|
},
|
|
96
|
-
|
|
81
|
+
cancelCallButton: {
|
|
97
82
|
alignSelf: 'center',
|
|
98
83
|
},
|
|
99
84
|
button: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutgoingCallView.js","sourceRoot":"","sources":["../../../src/components/OutgoingCallView.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,+CAAsD;AACtD,iDAA8C;AAC9C,6DAA0D;AAC1D,oCAAqE;AACrE,mDAAgD;AAChD,sEAAmE;AACnE,oCAAiC;AACjC,
|
|
1
|
+
{"version":3,"file":"OutgoingCallView.js","sourceRoot":"","sources":["../../../src/components/OutgoingCallView.tsx"],"names":[],"mappings":"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"}
|
package/dist/src/hooks/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./useCallControls"), exports);
|
|
18
18
|
__exportStar(require("./useLocalVideoStream"), exports);
|
|
19
19
|
__exportStar(require("./useIncallManager"), exports);
|
|
20
20
|
__exportStar(require("./usePermissionRequest"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,wDAAsC;AACtC,qDAAmC;AACnC,yDAAuC;AACvC,8DAA4C;AAC5C,yCAAuB;AACvB,kEAAgD;AAChD,oDAAkC"}
|
|
@@ -2,7 +2,6 @@ import { PropsWithChildren } from 'react';
|
|
|
2
2
|
import { Call } from '@stream-io/video-client';
|
|
3
3
|
export type StreamCallProps = {
|
|
4
4
|
call: Call;
|
|
5
|
-
callCycleHandlers?: CallCycleHandlersType;
|
|
6
5
|
};
|
|
7
6
|
/**
|
|
8
7
|
* StreamCall is a wrapper component that orchestrates the call life cycle logic and
|
|
@@ -11,42 +10,4 @@ export type StreamCallProps = {
|
|
|
11
10
|
*
|
|
12
11
|
* @category Client State
|
|
13
12
|
*/
|
|
14
|
-
export declare const StreamCall: ({ call,
|
|
15
|
-
/**
|
|
16
|
-
* Exclude types from documentation site, but we should still add doc comments
|
|
17
|
-
* @internal
|
|
18
|
-
*/
|
|
19
|
-
export type CallCycleHandlersType = {
|
|
20
|
-
/**
|
|
21
|
-
* Handler called after a call is joined. Mostly used for navigation and related actions.
|
|
22
|
-
*/
|
|
23
|
-
onCallJoined?: () => void;
|
|
24
|
-
/**
|
|
25
|
-
* Handler called after a callee receives a call. Mostly used for navigation and related actions.
|
|
26
|
-
*/
|
|
27
|
-
onCallIncoming?: () => void;
|
|
28
|
-
/**
|
|
29
|
-
* Handler called after a call is hung up by the caller. Mostly used for navigation and cleanup actions.
|
|
30
|
-
*/
|
|
31
|
-
onCallHungUp?: () => void;
|
|
32
|
-
/**
|
|
33
|
-
* Handler called after a caller initiates a call. Mostly used for navigation and related actions.
|
|
34
|
-
*/
|
|
35
|
-
onCallOutgoing?: () => void;
|
|
36
|
-
/**
|
|
37
|
-
* Handler called after a call is rejected. Mostly used for navigation and cleanup actions.
|
|
38
|
-
*/
|
|
39
|
-
onCallRejected?: () => void;
|
|
40
|
-
/**
|
|
41
|
-
* Handler called when the call is in joining state. Mostly used for navigation and related actions.
|
|
42
|
-
*/
|
|
43
|
-
onCallJoining?: () => void;
|
|
44
|
-
};
|
|
45
|
-
/**
|
|
46
|
-
* Exclude types from documentaiton site, but we should still add doc comments
|
|
47
|
-
* @internal
|
|
48
|
-
*/
|
|
49
|
-
export type CallCycleLogicsWrapperProps = {
|
|
50
|
-
callCycleHandlers: CallCycleHandlersType;
|
|
51
|
-
};
|
|
52
|
-
export declare const CallCycleLogicsWrapper: ({ callCycleHandlers, children, }: PropsWithChildren<CallCycleLogicsWrapperProps>) => JSX.Element;
|
|
13
|
+
export declare const StreamCall: ({ call, children, }: PropsWithChildren<StreamCallProps>) => JSX.Element;
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.StreamCall = void 0;
|
|
7
7
|
const video_react_bindings_1 = require("@stream-io/video-react-bindings");
|
|
8
8
|
const react_1 = __importDefault(require("react"));
|
|
9
9
|
const hooks_1 = require("../hooks");
|
|
@@ -16,24 +16,17 @@ const MediaStreamManagement_1 = require("./MediaStreamManagement");
|
|
|
16
16
|
*
|
|
17
17
|
* @category Client State
|
|
18
18
|
*/
|
|
19
|
-
const StreamCall = ({ call,
|
|
19
|
+
const StreamCall = ({ call, children, }) => {
|
|
20
20
|
return (<video_react_bindings_1.StreamCallProvider call={call}>
|
|
21
21
|
<MediaStreamManagement_1.MediaStreamManagement>
|
|
22
22
|
<PermissionRequest />
|
|
23
23
|
<AndroidKeepCallAlive />
|
|
24
24
|
<IosInformCallkeepCallEnd />
|
|
25
|
-
|
|
26
|
-
{children}
|
|
27
|
-
</exports.CallCycleLogicsWrapper>
|
|
25
|
+
{children}
|
|
28
26
|
</MediaStreamManagement_1.MediaStreamManagement>
|
|
29
27
|
</video_react_bindings_1.StreamCallProvider>);
|
|
30
28
|
};
|
|
31
29
|
exports.StreamCall = StreamCall;
|
|
32
|
-
const CallCycleLogicsWrapper = ({ callCycleHandlers, children, }) => {
|
|
33
|
-
(0, hooks_1.useCallCycleEffect)(callCycleHandlers);
|
|
34
|
-
return <>{children}</>;
|
|
35
|
-
};
|
|
36
|
-
exports.CallCycleLogicsWrapper = CallCycleLogicsWrapper;
|
|
37
30
|
/**
|
|
38
31
|
* This is a renderless component that is used to handler the permission requests using the usePermissionRequest hook.
|
|
39
32
|
* usePermissionRequest needs to be called as a child of StreamCallProvider.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StreamCall.js","sourceRoot":"","sources":["../../../src/providers/StreamCall.tsx"],"names":[],"mappings":";;;;;;AAAA,0EAAqE;AACrE,kDAAiD;AAEjD,
|
|
1
|
+
{"version":3,"file":"StreamCall.js","sourceRoot":"","sources":["../../../src/providers/StreamCall.tsx"],"names":[],"mappings":";;;;;;AAAA,0EAAqE;AACrE,kDAAiD;AAEjD,oCAA+E;AAC/E,8EAA2E;AAC3E,mEAAgE;AAKhE;;;;;;GAMG;AACI,MAAM,UAAU,GAAG,CAAC,EACzB,IAAI,EACJ,QAAQ,GAC2B,EAAE,EAAE;IACvC,OAAO,CACL,CAAC,yCAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAC7B;MAAA,CAAC,6CAAqB,CACpB;QAAA,CAAC,iBAAiB,CAAC,AAAD,EAClB;QAAA,CAAC,oBAAoB,CAAC,AAAD,EACrB;QAAA,CAAC,wBAAwB,CAAC,AAAD,EACzB;QAAA,CAAC,QAAQ,CACX;MAAA,EAAE,6CAAqB,CACzB;IAAA,EAAE,yCAAkB,CAAC,CACtB,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,UAAU,cAcrB;AAEF;;;GAGG;AACH,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAC7B,IAAA,4BAAoB,GAAE,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,oBAAoB,GAAG,GAAG,EAAE;IAChC,IAAA,qCAA6B,GAAE,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,wBAAwB,GAAG,GAAG,EAAE;IACpC,IAAA,iDAAuB,GAAE,CAAC;IAC1B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -29,20 +29,13 @@ exports.processCallFromPushInBackground = processCallFromPushInBackground;
|
|
|
29
29
|
* 3. Join or leave the call based on the user's action.
|
|
30
30
|
*/
|
|
31
31
|
const processCallFromPush = async (client, call_cid, action) => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
try {
|
|
40
|
-
await callFromPush.get();
|
|
41
|
-
}
|
|
42
|
-
catch (e) {
|
|
43
|
-
console.log('failed to fetch call from push notification', e);
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
32
|
+
let callFromPush;
|
|
33
|
+
try {
|
|
34
|
+
callFromPush = await client.onRingingCall(call_cid);
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
console.log('failed to fetch call from push notification', e);
|
|
38
|
+
return;
|
|
46
39
|
}
|
|
47
40
|
// note: when action was pressed, we dont need to do anything as the only thing is to do is to get the call which adds it to the client
|
|
48
41
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/push/utils.ts"],"names":[],"mappings":";;;AAKA;;;EAGE;AACK,MAAM,+BAA+B,GAAG,KAAK,EAClD,UAAsB,EACtB,QAAgB,EAChB,MAAiD,EACjD,EAAE;IACF,IAAI,WAA0C,CAAC;IAE/C,IAAI;QACF,WAAW,GAAG,MAAM,UAAU,CAAC,uBAAuB,EAAE,CAAC;QACzD,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO;SACR;QACD,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC;KACjC;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO;KACR;IACD,MAAM,IAAA,2BAAmB,EAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC,CAAC;AAlBW,QAAA,+BAA+B,mCAkB1C;AAEF;;;;;;GAMG;AACI,MAAM,mBAAmB,GAAG,KAAK,EACtC,MAAyB,EACzB,QAAgB,EAChB,MAAwC,EACxC,EAAE;IACF,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/push/utils.ts"],"names":[],"mappings":";;;AAKA;;;EAGE;AACK,MAAM,+BAA+B,GAAG,KAAK,EAClD,UAAsB,EACtB,QAAgB,EAChB,MAAiD,EACjD,EAAE;IACF,IAAI,WAA0C,CAAC;IAE/C,IAAI;QACF,WAAW,GAAG,MAAM,UAAU,CAAC,uBAAuB,EAAE,CAAC;QACzD,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO;SACR;QACD,MAAM,WAAW,CAAC,WAAW,EAAE,CAAC;KACjC;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE,CAAC,CAAC,CAAC;QACjE,OAAO;KACR;IACD,MAAM,IAAA,2BAAmB,EAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC,CAAC;AAlBW,QAAA,+BAA+B,mCAkB1C;AAEF;;;;;;GAMG;AACI,MAAM,mBAAmB,GAAG,KAAK,EACtC,MAAyB,EACzB,QAAgB,EAChB,MAAwC,EACxC,EAAE;IACF,IAAI,YAAkB,CAAC;IACvB,IAAI;QACF,YAAY,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;KACrD;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE,CAAC,CAAC,CAAC;QAC9D,OAAO;KACR;IACD,uIAAuI;IACvI,IAAI;QACF,IAAI,MAAM,KAAK,QAAQ,EAAE;YACvB,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;SAC3B;aAAM,IAAI,MAAM,KAAK,SAAS,EAAE;YAC/B,MAAM,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;SAC5C;KACF;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;KACzE;AACH,CAAC,CAAC;AAtBW,QAAA,mBAAmB,uBAsB9B"}
|
package/package.json
CHANGED
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
],
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@stream-io/i18n": "^0.0.8",
|
|
25
|
-
"@stream-io/video-client": "^0.0.
|
|
26
|
-
"@stream-io/video-react-bindings": "^0.0.
|
|
25
|
+
"@stream-io/video-client": "^0.0.37",
|
|
26
|
+
"@stream-io/video-react-bindings": "^0.0.39"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
29
|
"@notifee/react-native": ">=7.7.0",
|
|
@@ -85,5 +85,5 @@
|
|
|
85
85
|
"typedoc-plugin-markdown": "^3.15.3",
|
|
86
86
|
"typescript": "^4.9.5"
|
|
87
87
|
},
|
|
88
|
-
"version": "0.0.1-alpha.
|
|
88
|
+
"version": "0.0.1-alpha.248"
|
|
89
89
|
}
|
|
@@ -2,41 +2,56 @@ import React from 'react';
|
|
|
2
2
|
import { ImageBackground, StyleSheet, Text, View } from 'react-native';
|
|
3
3
|
import { CallControlsButton } from './CallControlsButton';
|
|
4
4
|
import {
|
|
5
|
-
useCall,
|
|
6
|
-
useCallCallingState,
|
|
7
5
|
useCallMembers,
|
|
8
6
|
useConnectedUser,
|
|
9
7
|
} from '@stream-io/video-react-bindings';
|
|
10
8
|
import { UserInfoView } from './UserInfoView';
|
|
11
9
|
import { Phone, PhoneDown, Video, VideoSlash } from '../icons';
|
|
12
10
|
import { theme } from '../theme';
|
|
13
|
-
import { CallingState } from '@stream-io/video-client';
|
|
14
11
|
import { useMediaStreamManagement } from '../providers/MediaStreamManagement';
|
|
15
12
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
/**
|
|
14
|
+
* The props for the Accept Call button in the IncomingCallView component.
|
|
15
|
+
*/
|
|
16
|
+
type AcceptCallButton = {
|
|
17
|
+
/**
|
|
18
|
+
* Handler to be called when the accept call button is pressed.
|
|
19
|
+
* @returns void
|
|
20
|
+
*/
|
|
21
|
+
onPressHandler: () => void;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The props for the Reject Call button in the IncomingCallView component.
|
|
26
|
+
*/
|
|
27
|
+
type RejectCallButton = {
|
|
28
|
+
/**
|
|
29
|
+
* Handler to be called when the reject call button is pressed.
|
|
30
|
+
* @returns void
|
|
31
|
+
*/
|
|
32
|
+
onPressHandler: () => void;
|
|
33
|
+
};
|
|
21
34
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Props for the IncomingCallView Component.
|
|
37
|
+
*/
|
|
38
|
+
export type IncomingCallViewType = {
|
|
39
|
+
/**
|
|
40
|
+
* Accept Call Button Props to be passed as an object
|
|
41
|
+
*/
|
|
42
|
+
acceptCallButton: AcceptCallButton;
|
|
43
|
+
/**
|
|
44
|
+
* Reject Call Button Props to be passed as an object
|
|
45
|
+
*/
|
|
46
|
+
rejectCallButton: RejectCallButton;
|
|
47
|
+
};
|
|
29
48
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
} catch (error) {
|
|
37
|
-
console.log('Error leaving Call', error);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
49
|
+
export const IncomingCallView = ({
|
|
50
|
+
acceptCallButton,
|
|
51
|
+
rejectCallButton,
|
|
52
|
+
}: IncomingCallViewType) => {
|
|
53
|
+
const { initialVideoEnabled, toggleInitialVideoMuteState } =
|
|
54
|
+
useMediaStreamManagement();
|
|
40
55
|
|
|
41
56
|
return (
|
|
42
57
|
<Background>
|
|
@@ -47,7 +62,7 @@ export const IncomingCallView = () => {
|
|
|
47
62
|
|
|
48
63
|
<View style={styles.buttonGroup}>
|
|
49
64
|
<CallControlsButton
|
|
50
|
-
onPress={
|
|
65
|
+
onPress={rejectCallButton.onPressHandler}
|
|
51
66
|
color={theme.light.error}
|
|
52
67
|
style={[styles.button, theme.button.lg]}
|
|
53
68
|
svgContainerStyle={[styles.svgContainerStyle, theme.icon.lg]}
|
|
@@ -71,7 +86,7 @@ export const IncomingCallView = () => {
|
|
|
71
86
|
)}
|
|
72
87
|
</CallControlsButton>
|
|
73
88
|
<CallControlsButton
|
|
74
|
-
onPress={
|
|
89
|
+
onPress={acceptCallButton.onPressHandler}
|
|
75
90
|
color={theme.light.info}
|
|
76
91
|
style={[styles.button, theme.button.lg]}
|
|
77
92
|
svgContainerStyle={[styles.svgContainerStyle, theme.icon.lg]}
|
|
@@ -6,33 +6,42 @@ import { Mic, MicOff, PhoneDown, Video, VideoSlash } from '../icons';
|
|
|
6
6
|
import { VideoRenderer } from './VideoRenderer';
|
|
7
7
|
import { useLocalVideoStream } from '../hooks/useLocalVideoStream';
|
|
8
8
|
import { theme } from '../theme';
|
|
9
|
-
import { useCall, useCallCallingState } from '@stream-io/video-react-bindings';
|
|
10
|
-
import { CallingState } from '@stream-io/video-client';
|
|
11
9
|
import { Z_INDEX } from '../constants';
|
|
12
10
|
import { useMediaStreamManagement } from '../providers/MediaStreamManagement';
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
/**
|
|
13
|
+
* The props for the Cancel Call button in the OutgoingCallView component.
|
|
14
|
+
*/
|
|
15
|
+
type CancelCallButton = {
|
|
16
|
+
/**
|
|
17
|
+
* Handler to be called when the cancel/hungup call button is pressed.
|
|
18
|
+
* @returns void
|
|
19
|
+
*/
|
|
20
|
+
onPressHandler: () => void;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Props for the OutgoingCallView Component.
|
|
25
|
+
*/
|
|
26
|
+
export type OutgoingCallViewType = {
|
|
27
|
+
/**
|
|
28
|
+
* Cancel/Reject Call Button Props to be passed as an object
|
|
29
|
+
*/
|
|
30
|
+
cancelCallHandler: CancelCallButton;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export const OutgoingCallView = ({
|
|
34
|
+
cancelCallHandler,
|
|
35
|
+
}: OutgoingCallViewType) => {
|
|
15
36
|
const {
|
|
16
37
|
initialAudioEnabled,
|
|
17
38
|
initialVideoEnabled,
|
|
18
39
|
toggleInitialAudioMuteState,
|
|
19
40
|
toggleInitialVideoMuteState,
|
|
20
41
|
} = useMediaStreamManagement();
|
|
21
|
-
const call = useCall();
|
|
22
|
-
const callingState = useCallCallingState();
|
|
23
42
|
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
if (callingState === CallingState.LEFT) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
await call?.leave();
|
|
30
|
-
} catch (error) {
|
|
31
|
-
console.log('Error leaving Call', error);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
const muteStatusColor = (muted: boolean) => {
|
|
35
|
-
return muted ? theme.light.overlay_dark : theme.light.static_white;
|
|
43
|
+
const muteStatusColor = (status: boolean) => {
|
|
44
|
+
return status ? theme.light.overlay_dark : theme.light.static_white;
|
|
36
45
|
};
|
|
37
46
|
|
|
38
47
|
return (
|
|
@@ -71,9 +80,9 @@ export const OutgoingCallView = () => {
|
|
|
71
80
|
</View>
|
|
72
81
|
|
|
73
82
|
<CallControlsButton
|
|
74
|
-
onPress={
|
|
83
|
+
onPress={cancelCallHandler.onPressHandler}
|
|
75
84
|
color={theme.light.error}
|
|
76
|
-
style={[styles.button, styles.
|
|
85
|
+
style={[styles.button, styles.cancelCallButton, theme.button.lg]}
|
|
77
86
|
svgContainerStyle={[styles.svgContainerStyle, theme.icon.lg]}
|
|
78
87
|
>
|
|
79
88
|
<PhoneDown color={theme.light.static_white} />
|
|
@@ -128,7 +137,7 @@ const styles = StyleSheet.create({
|
|
|
128
137
|
justifyContent: 'space-around',
|
|
129
138
|
marginBottom: theme.margin.md,
|
|
130
139
|
},
|
|
131
|
-
|
|
140
|
+
cancelCallButton: {
|
|
132
141
|
alignSelf: 'center',
|
|
133
142
|
},
|
|
134
143
|
button: {},
|
package/src/hooks/index.ts
CHANGED
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
import { StreamCallProvider } from '@stream-io/video-react-bindings';
|
|
2
2
|
import React, { PropsWithChildren } from 'react';
|
|
3
3
|
import { Call } from '@stream-io/video-client';
|
|
4
|
-
import {
|
|
5
|
-
useAndroidKeepCallAliveEffect,
|
|
6
|
-
useCallCycleEffect,
|
|
7
|
-
usePermissionRequest,
|
|
8
|
-
} from '../hooks';
|
|
4
|
+
import { useAndroidKeepCallAliveEffect, usePermissionRequest } from '../hooks';
|
|
9
5
|
import { useIosCallkeepEndEffect } from '../hooks/useIosCallkeepEndEffect';
|
|
10
6
|
import { MediaStreamManagement } from './MediaStreamManagement';
|
|
11
7
|
|
|
12
8
|
export type StreamCallProps = {
|
|
13
9
|
call: Call;
|
|
14
|
-
callCycleHandlers?: CallCycleHandlersType;
|
|
15
10
|
};
|
|
16
11
|
/**
|
|
17
12
|
* StreamCall is a wrapper component that orchestrates the call life cycle logic and
|
|
@@ -22,7 +17,6 @@ export type StreamCallProps = {
|
|
|
22
17
|
*/
|
|
23
18
|
export const StreamCall = ({
|
|
24
19
|
call,
|
|
25
|
-
callCycleHandlers = {},
|
|
26
20
|
children,
|
|
27
21
|
}: PropsWithChildren<StreamCallProps>) => {
|
|
28
22
|
return (
|
|
@@ -31,61 +25,12 @@ export const StreamCall = ({
|
|
|
31
25
|
<PermissionRequest />
|
|
32
26
|
<AndroidKeepCallAlive />
|
|
33
27
|
<IosInformCallkeepCallEnd />
|
|
34
|
-
|
|
35
|
-
{children}
|
|
36
|
-
</CallCycleLogicsWrapper>
|
|
28
|
+
{children}
|
|
37
29
|
</MediaStreamManagement>
|
|
38
30
|
</StreamCallProvider>
|
|
39
31
|
);
|
|
40
32
|
};
|
|
41
33
|
|
|
42
|
-
/**
|
|
43
|
-
* Exclude types from documentation site, but we should still add doc comments
|
|
44
|
-
* @internal
|
|
45
|
-
*/
|
|
46
|
-
export type CallCycleHandlersType = {
|
|
47
|
-
/**
|
|
48
|
-
* Handler called after a call is joined. Mostly used for navigation and related actions.
|
|
49
|
-
*/
|
|
50
|
-
onCallJoined?: () => void;
|
|
51
|
-
/**
|
|
52
|
-
* Handler called after a callee receives a call. Mostly used for navigation and related actions.
|
|
53
|
-
*/
|
|
54
|
-
onCallIncoming?: () => void;
|
|
55
|
-
/**
|
|
56
|
-
* Handler called after a call is hung up by the caller. Mostly used for navigation and cleanup actions.
|
|
57
|
-
*/
|
|
58
|
-
onCallHungUp?: () => void;
|
|
59
|
-
/**
|
|
60
|
-
* Handler called after a caller initiates a call. Mostly used for navigation and related actions.
|
|
61
|
-
*/
|
|
62
|
-
onCallOutgoing?: () => void;
|
|
63
|
-
/**
|
|
64
|
-
* Handler called after a call is rejected. Mostly used for navigation and cleanup actions.
|
|
65
|
-
*/
|
|
66
|
-
onCallRejected?: () => void;
|
|
67
|
-
/**
|
|
68
|
-
* Handler called when the call is in joining state. Mostly used for navigation and related actions.
|
|
69
|
-
*/
|
|
70
|
-
onCallJoining?: () => void;
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Exclude types from documentaiton site, but we should still add doc comments
|
|
75
|
-
* @internal
|
|
76
|
-
*/
|
|
77
|
-
export type CallCycleLogicsWrapperProps = {
|
|
78
|
-
callCycleHandlers: CallCycleHandlersType;
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
export const CallCycleLogicsWrapper = ({
|
|
82
|
-
callCycleHandlers,
|
|
83
|
-
children,
|
|
84
|
-
}: PropsWithChildren<CallCycleLogicsWrapperProps>) => {
|
|
85
|
-
useCallCycleEffect(callCycleHandlers);
|
|
86
|
-
|
|
87
|
-
return <>{children}</>;
|
|
88
|
-
};
|
|
89
34
|
/**
|
|
90
35
|
* This is a renderless component that is used to handler the permission requests using the usePermissionRequest hook.
|
|
91
36
|
* usePermissionRequest needs to be called as a child of StreamCallProvider.
|
package/src/utils/push/utils.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { StreamVideoClient } from '@stream-io/video-client';
|
|
1
|
+
import { Call, StreamVideoClient } from '@stream-io/video-client';
|
|
2
2
|
import type { StreamVideoConfig } from '../StreamVideoRN/types';
|
|
3
3
|
|
|
4
4
|
type PushConfig = NonNullable<StreamVideoConfig['push']>;
|
|
@@ -39,21 +39,12 @@ export const processCallFromPush = async (
|
|
|
39
39
|
call_cid: string,
|
|
40
40
|
action: 'accept' | 'decline' | 'pressed',
|
|
41
41
|
) => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
// if not it means that WS is not alive when receiving the push notifications and we need to fetch the call
|
|
49
|
-
const [callType, callId] = call_cid.split(':');
|
|
50
|
-
callFromPush = client.call(callType, callId, true);
|
|
51
|
-
try {
|
|
52
|
-
await callFromPush.get();
|
|
53
|
-
} catch (e) {
|
|
54
|
-
console.log('failed to fetch call from push notification', e);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
42
|
+
let callFromPush: Call;
|
|
43
|
+
try {
|
|
44
|
+
callFromPush = await client.onRingingCall(call_cid);
|
|
45
|
+
} catch (e) {
|
|
46
|
+
console.log('failed to fetch call from push notification', e);
|
|
47
|
+
return;
|
|
57
48
|
}
|
|
58
49
|
// note: when action was pressed, we dont need to do anything as the only thing is to do is to get the call which adds it to the client
|
|
59
50
|
try {
|
|
@@ -1,69 +0,0 @@
|
|
|
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
|
-
}
|
|
24
|
-
const isCallCreatedByMe = call.data?.created_by.id === call?.currentUserId;
|
|
25
|
-
const isCallCreatedByOther = !!call.data?.created_by.id && !isCallCreatedByMe;
|
|
26
|
-
const isIncomingCall = callingState === video_client_1.CallingState.RINGING &&
|
|
27
|
-
!isCallCreatedByMe &&
|
|
28
|
-
onCallIncoming;
|
|
29
|
-
const isOutgoingCall = callingState === video_client_1.CallingState.RINGING &&
|
|
30
|
-
isCallCreatedByMe &&
|
|
31
|
-
onCallOutgoing;
|
|
32
|
-
const isActiveCall = callingState === video_client_1.CallingState.JOINED && onCallJoined;
|
|
33
|
-
const isCallHungUp = callingState === video_client_1.CallingState.LEFT && onCallHungUp;
|
|
34
|
-
const isCallRejected = callingState === video_client_1.CallingState.LEFT &&
|
|
35
|
-
isCallCreatedByOther &&
|
|
36
|
-
onCallRejected;
|
|
37
|
-
const isCallJoining = callingState === video_client_1.CallingState.JOINING && onCallJoining;
|
|
38
|
-
if (isIncomingCall) {
|
|
39
|
-
return onCallIncoming();
|
|
40
|
-
}
|
|
41
|
-
if (isOutgoingCall) {
|
|
42
|
-
return onCallOutgoing();
|
|
43
|
-
}
|
|
44
|
-
if (isActiveCall) {
|
|
45
|
-
return onCallJoined();
|
|
46
|
-
}
|
|
47
|
-
if (isCallHungUp) {
|
|
48
|
-
return onCallHungUp();
|
|
49
|
-
}
|
|
50
|
-
if (isCallRejected) {
|
|
51
|
-
return onCallRejected();
|
|
52
|
-
}
|
|
53
|
-
if (isCallJoining) {
|
|
54
|
-
return onCallJoining();
|
|
55
|
-
}
|
|
56
|
-
}, [
|
|
57
|
-
callingState,
|
|
58
|
-
prevCallingState,
|
|
59
|
-
call,
|
|
60
|
-
onCallIncoming,
|
|
61
|
-
onCallOutgoing,
|
|
62
|
-
onCallJoined,
|
|
63
|
-
onCallHungUp,
|
|
64
|
-
onCallRejected,
|
|
65
|
-
onCallJoining,
|
|
66
|
-
]);
|
|
67
|
-
};
|
|
68
|
-
exports.useCallCycleEffect = useCallCycleEffect;
|
|
69
|
-
//# sourceMappingURL=useCallCycleEffect.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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,EAAE;YAC7D,OAAO;SACR;QACD,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,EAAE;YAClB,OAAO,cAAc,EAAE,CAAC;SACzB;QACD,IAAI,cAAc,EAAE;YAClB,OAAO,cAAc,EAAE,CAAC;SACzB;QACD,IAAI,YAAY,EAAE;YAChB,OAAO,YAAY,EAAE,CAAC;SACvB;QACD,IAAI,YAAY,EAAE;YAChB,OAAO,YAAY,EAAE,CAAC;SACvB;QACD,IAAI,cAAc,EAAE;YAClB,OAAO,cAAc,EAAE,CAAC;SACzB;QACD,IAAI,aAAa,EAAE;YACjB,OAAO,aAAa,EAAE,CAAC;SACxB;IACH,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;AApEW,QAAA,kBAAkB,sBAoE7B"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { useCall, useCallCallingState } from '@stream-io/video-react-bindings';
|
|
2
|
-
import { useEffect } from 'react';
|
|
3
|
-
import { CallingState } from '@stream-io/video-client';
|
|
4
|
-
import { CallCycleHandlersType } from '../providers';
|
|
5
|
-
import { usePrevious } from '../utils/hooks/usePrevious';
|
|
6
|
-
|
|
7
|
-
const NON_ACTIVE_CALLING_STATES = [CallingState.UNKNOWN, CallingState.IDLE];
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* @param callCycleHandlers
|
|
11
|
-
*
|
|
12
|
-
* @category Client State
|
|
13
|
-
*/
|
|
14
|
-
export const useCallCycleEffect = (
|
|
15
|
-
callCycleHandlers: CallCycleHandlersType,
|
|
16
|
-
) => {
|
|
17
|
-
const call = useCall();
|
|
18
|
-
const callingState = useCallCallingState();
|
|
19
|
-
const prevCallingState = usePrevious(callingState);
|
|
20
|
-
const {
|
|
21
|
-
onCallJoined,
|
|
22
|
-
onCallIncoming,
|
|
23
|
-
onCallOutgoing,
|
|
24
|
-
onCallHungUp,
|
|
25
|
-
onCallRejected,
|
|
26
|
-
onCallJoining,
|
|
27
|
-
} = callCycleHandlers;
|
|
28
|
-
|
|
29
|
-
useEffect(() => {
|
|
30
|
-
if (!call || NON_ACTIVE_CALLING_STATES.includes(callingState)) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
const isCallCreatedByMe = call.data?.created_by.id === call?.currentUserId;
|
|
34
|
-
const isCallCreatedByOther =
|
|
35
|
-
!!call.data?.created_by.id && !isCallCreatedByMe;
|
|
36
|
-
const isIncomingCall =
|
|
37
|
-
callingState === CallingState.RINGING &&
|
|
38
|
-
!isCallCreatedByMe &&
|
|
39
|
-
onCallIncoming;
|
|
40
|
-
const isOutgoingCall =
|
|
41
|
-
callingState === CallingState.RINGING &&
|
|
42
|
-
isCallCreatedByMe &&
|
|
43
|
-
onCallOutgoing;
|
|
44
|
-
const isActiveCall = callingState === CallingState.JOINED && onCallJoined;
|
|
45
|
-
const isCallHungUp = callingState === CallingState.LEFT && onCallHungUp;
|
|
46
|
-
const isCallRejected =
|
|
47
|
-
callingState === CallingState.LEFT &&
|
|
48
|
-
isCallCreatedByOther &&
|
|
49
|
-
onCallRejected;
|
|
50
|
-
const isCallJoining =
|
|
51
|
-
callingState === CallingState.JOINING && onCallJoining;
|
|
52
|
-
|
|
53
|
-
if (isIncomingCall) {
|
|
54
|
-
return onCallIncoming();
|
|
55
|
-
}
|
|
56
|
-
if (isOutgoingCall) {
|
|
57
|
-
return onCallOutgoing();
|
|
58
|
-
}
|
|
59
|
-
if (isActiveCall) {
|
|
60
|
-
return onCallJoined();
|
|
61
|
-
}
|
|
62
|
-
if (isCallHungUp) {
|
|
63
|
-
return onCallHungUp();
|
|
64
|
-
}
|
|
65
|
-
if (isCallRejected) {
|
|
66
|
-
return onCallRejected();
|
|
67
|
-
}
|
|
68
|
-
if (isCallJoining) {
|
|
69
|
-
return onCallJoining();
|
|
70
|
-
}
|
|
71
|
-
}, [
|
|
72
|
-
callingState,
|
|
73
|
-
prevCallingState,
|
|
74
|
-
call,
|
|
75
|
-
onCallIncoming,
|
|
76
|
-
onCallOutgoing,
|
|
77
|
-
onCallJoined,
|
|
78
|
-
onCallHungUp,
|
|
79
|
-
onCallRejected,
|
|
80
|
-
onCallJoining,
|
|
81
|
-
]);
|
|
82
|
-
};
|