import { mediaDevices, MediaStream, RTCIceCandidate, RTCPeerConnection, RTCSessionDescription } from "react-native-webrtc"; import { IPlatformWebRTC } from "./adapter.inteerfce"; export class PlatformAdapter implements IPlatformWebRTC { createPeerConnection(config: RTCConfiguration) { return new RTCPeerConnection(config); } createSessionDescription(init: RTCSessionDescriptionInit) { return new RTCSessionDescription(init as any); } createIceCandidate(init: RTCIceCandidateInit) { return new RTCIceCandidate(init); } async getUserMedia(): Promise { return mediaDevices.getUserMedia({ audio: true, video: { width: { min: 360, ideal: 540, max: 960 }, height: { min: 480, ideal: 720, max: 1280 }, frameRate: { ideal: 30, max: 30 }, facingMode: 'user', }, }); } async switchCamera(mediaStream: MediaStream): Promise { if (!mediaStream) return false; const videoTrack = mediaStream.getVideoTracks()[0]; if (!videoTrack) return false; try { await (videoTrack as any)._switchCamera(); return true; } catch (error) { console.error("[PlatformAdapter] 카메라 전환 실패: ", error); return false; } } }