@connectycube/use-calls
Version:
A React hook for state management in ConnectyCube-powered audio/video calls solutions
89 lines • 3.5 kB
TypeScript
import { Calls, CallSessionConnectionState, Media } from "connectycube/types";
export declare enum ActiveMedia {
USER = 0,
DISPLAY = 1
}
export declare enum CallDataType {
ON_CALL = "onCall",
ON_STOP_CALLING = "onStopCalling",
ON_ACCEPT = "onAccept",
ON_REJECT = "onReject",
ON_STOP = "onStop",
ON_NOT_ANSWER = "onNotAnswer",
ON_CONNECTION_STATE = "onConnectionState"
}
export type CallData = {
userID?: number;
userInfo?: Calls.UserInfo;
connectionState?: CallSessionConnectionState;
};
export interface CallsStoreSessionState {
activeCall: Calls.Session | null;
incomingCall: Calls.Session | null;
}
export interface CallsStoreSessionDataState {
deviceChangeEvent: Event | null;
incomingCallCallData: CallData | null;
incomingCallStopData: CallData | null;
activeCallAcceptData: CallData | null;
activeCallRejectData: CallData | null;
activeCallStopData: CallData | null;
activeCallNotAnswerData: CallData | null;
activeCallConnectionStateData: CallData | null;
}
export interface CallsStoreMediaState {
localStream: MediaStream | null;
remoteStreams: {
[key: number]: MediaStream;
};
userMediaParams: Media.UserParams;
displayMediaParams: Media.DisplayParams;
activeMedia: ActiveMedia;
}
export interface CallsStoreState extends CallsStoreSessionState, CallsStoreSessionDataState, CallsStoreMediaState {
participantsIDs: Set<number>;
hasActiveListeners: boolean;
}
export interface CallsStoreSessionActions {
setActiveCall: (session: Calls.Session) => void;
resetActiveCall: () => void;
setIncomingCall: (session: Calls.Session) => void;
resetIncomingCall: () => void;
}
export interface CallsStoreSessionDataActions {
setDeviceChangeEvent: (deviceChangeEvent: Event) => void;
upsertSessionData: (type: CallDataType, data: CallData) => void;
resetSessionData: (type?: CallDataType) => void;
}
export interface CallsStoreMediaActions {
setLocalStream: (stream: MediaStream) => void;
resetLocalStream: () => void;
addRemoteStream: (key: number, stream: MediaStream) => void;
removeRemoteStream: (key: number) => void;
resetRemoteStreams: () => void;
saveUserMediaParams: (params: Media.UserParams) => void;
resetUserMediaParams: () => void;
saveDisplayMediaParams: (params: Media.DisplayParams) => void;
resetDisplayMediaParams: () => void;
saveActiveMedia: (activeMedia: ActiveMedia) => void;
}
export interface CallsStoreActions extends CallsStoreSessionActions, CallsStoreSessionDataActions, CallsStoreMediaActions {
setParticipantsIDs: (participantsIDs: number[]) => void;
participantDidEnter: (id: number) => void;
participantDidLeave: (id: number) => void;
activateCallsListeners: () => void;
resetStore: () => void;
}
interface CallsStore extends CallsStoreState, CallsStoreActions {
}
declare const useCallsStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<CallsStore>, "subscribe"> & {
subscribe: {
(listener: (selectedState: CallsStore, previousSelectedState: CallsStore) => void): () => void;
<U>(selector: (state: CallsStore) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
equalityFn?: ((a: U, b: U) => boolean) | undefined;
fireImmediately?: boolean;
} | undefined): () => void;
};
}>;
export default useCallsStore;
//# sourceMappingURL=useCallsStore.d.ts.map