diff --git a/src/pages/file/index.vue b/src/pages/file/index.vue index c90de07..c5e3831 100644 --- a/src/pages/file/index.vue +++ b/src/pages/file/index.vue @@ -46,6 +46,22 @@ > 通话 +
+ + + + +
([]); const selectedRemoteFiles = ref([]); @@ -150,6 +167,15 @@ const requestCall = () => { } peer.requestCall(targetId.value); }; +const requestCamera = () => { + if (!isConnected.value) return; + if (isCameraActive.value) { + peer.endMedia(sign2peerid(targetId.value), "camera"); + return; + } + peer.requestCamera(targetId.value); +}; + const shareUrl = async () => { if (myId.value) { const url = @@ -289,6 +315,7 @@ onMounted(() => { clearConnectedPeer(event.detail.peer); isDesktopActive.value = false; isCallActive.value = false; + isCameraActive.value = false; notification.error({ message: event.detail.peer + "连接已断开", }); @@ -307,6 +334,8 @@ onMounted(() => { isDesktopActive.value = true; } else if (event.detail.type === "call") { isCallActive.value = true; + } else if (event.detail.type === "camera") { + isCameraActive.value = true; } }) as EventListener); @@ -322,15 +351,24 @@ onMounted(() => { } }) as EventListener); + peer.on("camera-started", ((event: CustomEvent) => { + if (isActivePeer(event.detail.peerId)) { + isCameraActive.value = true; + } + }) as EventListener); + peer.on("media-ended", ((event: CustomEvent) => { if (!isActivePeer(event.detail.peerId)) return; if (event.detail.type === "desktop") { isDesktopActive.value = false; } else if (event.detail.type === "call") { isCallActive.value = false; + } else if (event.detail.type === "camera") { + isCameraActive.value = false; } }) as EventListener); }); +