feat: add WebSocket client for export progress

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-16 18:41:12 +02:00
parent 3d484952c2
commit b12758c53c
+38
View File
@@ -0,0 +1,38 @@
import { getServer } from "./api";
import { exportStatus, exportCompleted } from "./stores";
let socket: WebSocket | null = null;
export function connectExportWs() {
const wsUrl = getServer().replace(/^http/, "ws") + "/ws/export";
socket = new WebSocket(wsUrl);
socket.onmessage = (event) => {
const msg = JSON.parse(event.data);
switch (msg.type) {
case "clip_done":
exportCompleted.update(n => n + 1);
break;
case "all_done":
exportStatus.set("done");
break;
case "error":
exportStatus.set("error");
console.error("Export error:", msg.msg);
break;
}
};
socket.onclose = () => {
// Reconnect after 2s
setTimeout(connectExportWs, 2000);
};
}
export function disconnectExportWs() {
if (socket) {
socket.onclose = null; // prevent reconnect
socket.close();
socket = null;
}
}