@docus/admin
Version:
The Docus admin module.
29 lines (28 loc) • 973 B
JavaScript
import { useConfig } from "@docus/app";
import { withBase } from "./utils.mjs";
import { defineNuxtPlugin } from "#app";
export default defineNuxtPlugin(async () => {
const $config = useConfig();
if (!$config.value.preview) {
return;
}
const [baseId, branch, userId] = $config.value.preview.split("/");
const ref = branch + "/" + userId;
const [base, id] = baseId.includes("_") ? baseId.split("_") : ["prod", baseId];
const _io = await import("socket.io-client");
const socket = _io.connect(withBase(`/preview-${id}-${decodeURIComponent(ref)}`, base), {
transports: ["websocket", "polling"]
});
socket.on("files", (files) => {
console.log("[SOCKET] file changed");
for (const file of files) {
window.$nuxt.$emit("docus:content:preview", { key: file.key });
}
});
socket.on("connect", () => {
console.log("[SOCKET] connected");
});
socket.on("disconnect", () => {
console.log("[SOCKET] disconnected");
});
});