Skip to content

Commit c0ec765

Browse files
authored
Merge pull request #13 from vanbui1995/feat/video-call-override-options
chore: allow custom video, audio element, override session manager op…
2 parents 68cc585 + 34354bc commit c0ec765

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

src/sip-provider/SIPProvider.tsx

+13-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ReactNode, useCallback, useRef, useState } from "react";
22
import React from "react";
33
import { Session } from "sip.js/lib/api/session";
4-
import { SessionManager } from "sip.js/lib/platform/web";
4+
import { SessionManager, SessionManagerOptions } from "sip.js/lib/platform/web";
55
import { ErrorMessageLevel1, ErrorMessageLevel2 } from "../enums/error";
66
import { ProviderContext } from "./SIPProviderContext";
77
import {
@@ -15,9 +15,11 @@ import {
1515
export const SIPProvider = (props: {
1616
options: SIPProviderOptions;
1717
children: ReactNode | JSX.Element;
18+
mergedSessionManagerOptions?: SessionManagerOptions;
1819
}): React.ReactNode => {
19-
const { options, children } = props;
20+
const { options, mergedSessionManagerOptions = {}, children } = props;
2021
const refAudioRemote = useRef<HTMLAudioElement>(null);
22+
const refVideoRemote = useRef<HTMLVideoElement>(null);
2123

2224
const [sessions, setSessions] = useState<Record<string, Session>>({});
2325
const [sessionTimer, setSessionTimer] = useState<SessionTimer>({});
@@ -51,10 +53,15 @@ export const SIPProvider = (props: {
5153
media: {
5254
constraints: {
5355
audio: true,
54-
video: false,
56+
video: true,
5557
},
5658
remote: {
57-
audio: refAudioRemote.current as HTMLAudioElement,
59+
audio:
60+
props.options.refAudioRemote ??
61+
(refAudioRemote.current as HTMLAudioElement),
62+
video:
63+
props.options.refVideoRemote ??
64+
(refVideoRemote.current as HTMLVideoElement),
5865
},
5966
},
6067
delegate: {
@@ -123,6 +130,7 @@ export const SIPProvider = (props: {
123130
setStatus(CONNECT_STATUS.DISCONNECTED);
124131
},
125132
},
133+
...mergedSessionManagerOptions,
126134
});
127135
setSessionManager(sessionManager);
128136
sessionManager.connect();
@@ -142,8 +150,8 @@ export const SIPProvider = (props: {
142150
>
143151
{children}
144152
</ProviderContext.Provider>
145-
146153
<audio ref={refAudioRemote} />
154+
<video ref={refVideoRemote} />
147155
</>
148156
);
149157
};

src/type/index.ts

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { SessionManager } from "sip.js/lib/platform/web";
44
export interface SIPProviderOptions {
55
webSocketServer: string;
66
domain: string;
7+
refAudioRemote?: HTMLAudioElement;
8+
refVideoRemote?: HTMLVideoElement;
79
}
810

911
export enum CONNECT_STATUS {

0 commit comments

Comments
 (0)