mirror of
https://github.com/fromchat-messenger/web.git
synced 2026-09-22 19:15:08 +03:00
Make WebRTC call a class
This commit is contained in:
@@ -139,4 +139,8 @@ export async function ensureKeysOnLogin(password: string, token: string): Promis
|
|||||||
export function restoreKeys() {
|
export function restoreKeys() {
|
||||||
currentPublicKey = ub64(localStorage.getItem("publicKey")!);
|
currentPublicKey = ub64(localStorage.getItem("publicKey")!);
|
||||||
currentPrivateKey = ub64(localStorage.getItem("privateKey")!);
|
currentPrivateKey = ub64(localStorage.getItem("privateKey")!);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getAuthToken(): string | null {
|
||||||
|
return localStorage.getItem("authToken");
|
||||||
}
|
}
|
||||||
@@ -25,7 +25,6 @@ export class CallSignalingHandler {
|
|||||||
handleWebSocketMessage(message: CallSignalingMessage) {
|
handleWebSocketMessage(message: CallSignalingMessage) {
|
||||||
const { data } = message;
|
const { data } = message;
|
||||||
if (!data) {
|
if (!data) {
|
||||||
console.warn("Received call signaling message with no data:", message);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+781
-750
File diff suppressed because it is too large
Load Diff
@@ -18,11 +18,11 @@ export default function useCall() {
|
|||||||
chat,
|
chat,
|
||||||
startCall,
|
startCall,
|
||||||
endCall,
|
endCall,
|
||||||
setCallStatus,
|
setCallStatus,
|
||||||
toggleMute,
|
toggleMute,
|
||||||
toggleVideo,
|
toggleVideo,
|
||||||
toggleScreenShare,
|
toggleScreenShare,
|
||||||
setCallEncryption,
|
setCallEncryption,
|
||||||
setCallSessionKeyHash,
|
setCallSessionKeyHash,
|
||||||
setRemoteVideoEnabled,
|
setRemoteVideoEnabled,
|
||||||
setRemoteScreenSharing,
|
setRemoteScreenSharing,
|
||||||
@@ -36,10 +36,6 @@ export default function useCall() {
|
|||||||
const remoteScreenShareRef = globalRemoteScreenShareRef;
|
const remoteScreenShareRef = globalRemoteScreenShareRef;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (user.authToken) {
|
|
||||||
WebRTC.setAuthToken(user.authToken);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize call signaling handler
|
// Initialize call signaling handler
|
||||||
const signalingHandler = new CallSignalingHandler(() => ({
|
const signalingHandler = new CallSignalingHandler(() => ({
|
||||||
receiveCall: (userId: number, username: string) => {
|
receiveCall: (userId: number, username: string) => {
|
||||||
@@ -55,7 +51,7 @@ export default function useCall() {
|
|||||||
setCallSignalingHandler(signalingHandler);
|
setCallSignalingHandler(signalingHandler);
|
||||||
|
|
||||||
// Set up call state change handler
|
// Set up call state change handler
|
||||||
WebRTC.setCallStateChangeHandler((userId: number, state: string) => {
|
WebRTC.callbacks.onCallStateChange = (userId: number, state: string) => {
|
||||||
const call = chat.call;
|
const call = chat.call;
|
||||||
if (call.remoteUserId === userId) {
|
if (call.remoteUserId === userId) {
|
||||||
switch (state) {
|
switch (state) {
|
||||||
@@ -72,10 +68,10 @@ export default function useCall() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
// Set up remote audio stream handler
|
// Set up remote audio stream handler
|
||||||
WebRTC.setRemoteStreamHandler((_userId: number, stream: MediaStream) => {
|
WebRTC.callbacks.onRemoteStream = (_userId: number, stream: MediaStream) => {
|
||||||
if (!remoteAudioRef.current) {
|
if (!remoteAudioRef.current) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -97,10 +93,10 @@ export default function useCall() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn("failed to attach remote stream:", e);
|
console.warn("failed to attach remote stream:", e);
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
// Set up local video stream handler
|
// Set up local video stream handler
|
||||||
WebRTC.setLocalVideoStreamHandler((_userId: number, stream: MediaStream | null) => {
|
WebRTC.callbacks.onLocalVideoStream = (_userId: number, stream: MediaStream | null) => {
|
||||||
if (!localVideoRef.current) {
|
if (!localVideoRef.current) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -118,10 +114,10 @@ export default function useCall() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn("failed to attach local video stream:", e);
|
console.warn("failed to attach local video stream:", e);
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
// Set up remote video stream handler
|
// Set up remote video stream handler
|
||||||
WebRTC.setRemoteVideoStreamHandler((_userId: number, stream: MediaStream | null) => {
|
WebRTC.callbacks.onRemoteVideoStream = (_userId: number, stream: MediaStream | null) => {
|
||||||
if (!remoteVideoRef.current) {
|
if (!remoteVideoRef.current) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -139,10 +135,10 @@ export default function useCall() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn("failed to attach remote video stream:", e);
|
console.warn("failed to attach remote video stream:", e);
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
// Set up local screen share handler
|
// Set up local screen share handler
|
||||||
WebRTC.setLocalScreenShareHandler((_userId: number, stream: MediaStream | null) => {
|
WebRTC.callbacks.onLocalScreenShare = (_userId: number, stream: MediaStream | null) => {
|
||||||
if (!localScreenShareRef.current) {
|
if (!localScreenShareRef.current) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -160,10 +156,10 @@ export default function useCall() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn("failed to attach local screen share stream:", e);
|
console.warn("failed to attach local screen share stream:", e);
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
// Set up remote screen share handler
|
// Set up remote screen share handler
|
||||||
WebRTC.setRemoteScreenShareHandler((_userId: number, stream: MediaStream | null) => {
|
WebRTC.callbacks.onRemoteScreenShare = (_userId: number, stream: MediaStream | null) => {
|
||||||
if (!remoteScreenShareRef.current) {
|
if (!remoteScreenShareRef.current) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -181,7 +177,7 @@ export default function useCall() {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn("failed to attach remote screen share stream:", e);
|
console.warn("failed to attach remote screen share stream:", e);
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
WebRTC.cleanup();
|
WebRTC.cleanup();
|
||||||
|
|||||||
Reference in New Issue
Block a user