优化音视频的样式

This commit is contained in:
kura 2026-05-07 22:02:25 +08:00
parent 0de25a0544
commit e98cd2844d
3 changed files with 702 additions and 116 deletions

File diff suppressed because it is too large Load Diff

View File

@ -83,7 +83,7 @@ const updateTasks = () => {
tasks.value = Array.from( tasks.value = Array.from(
fileTransferMgrInstance fileTransferMgrInstance
.getAllFileTransfers() .getAllFileTransfers()
.flatMap((transfer) => transfer.getTasks()) .flatMap((transfer) => transfer.getTasks()),
); );
// newTasks.forEach((task) => { // newTasks.forEach((task) => {
// const index = tasks.value.findIndex( // const index = tasks.value.findIndex(
@ -109,7 +109,7 @@ updateTasks();
right: 0; right: 0;
background: white; background: white;
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1); box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);
z-index: 1000; z-index: 10;
} }
.transfer-header { .transfer-header {

View File

@ -7,7 +7,7 @@ import {
TransferStatus, TransferStatus,
TransferTask, TransferTask,
} from "./fileTransfer"; } from "./fileTransfer";
import { message, Modal, notification } from "ant-design-vue"; import { message, notification } from "ant-design-vue";
import { import {
randomChars, randomChars,
sign2peerid, sign2peerid,
@ -86,7 +86,10 @@ class Peer extends EventTarget {
// 保存 this 引用 // 保存 this 引用
const self = this; const self = this;
let handled = false;
const onOk = async () => { const onOk = async () => {
if (handled) return;
handled = true;
try { try {
let stream: MediaStream; let stream: MediaStream;
@ -112,6 +115,7 @@ class Peer extends EventTarget {
{ {
detail: { detail: {
peerId: call.peer, peerId: call.peer,
role: type === "desktop" ? "sharer" : "caller",
}, },
}, },
), ),
@ -126,20 +130,34 @@ class Peer extends EventTarget {
message.error("无法访问" + (type === "desktop" ? "屏幕" : "麦克风")); message.error("无法访问" + (type === "desktop" ? "屏幕" : "麦克风"));
} }
}; };
const onReject = () => {
if (handled) return;
handled = true;
call.close();
message.info(
"已拒绝" + (type === "desktop" ? "屏幕共享" : "语音通话") + "请求",
);
};
if (getPermissionSet()[permission]) { if (getPermissionSet()[permission]) {
await onOk(); await onOk();
} else if (type === "call") {
this.dispatchEvent(
new CustomEvent("media-request", {
detail: {
peerId: call.peer,
type,
accept: onOk,
reject: onReject,
},
}),
);
} else { } else {
confirmWin(title, content, "接受", "拒绝") confirmWin(title, content, "接受", "拒绝")
.then(async () => { .then(async () => {
await onOk(); await onOk();
}) })
.catch(() => { .catch(() => {
call.close(); onReject();
message.info(
"已拒绝" +
(type === "desktop" ? "屏幕共享" : "语音通话") +
"请求",
);
}); });
} }
}); });
@ -211,6 +229,7 @@ class Peer extends EventTarget {
new CustomEvent("desktop-started", { new CustomEvent("desktop-started", {
detail: { detail: {
peerId: call.peer, peerId: call.peer,
role: "viewer",
}, },
}), }),
); );