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);
});
+