From ef7830662e78043705178fdfe4449f9486af4c62 Mon Sep 17 00:00:00 2001 From: Zef Hemel Date: Mon, 16 Jan 2023 10:40:16 +0100 Subject: [PATCH] Support syscalls in sandboxed iframes --- plugs/core/core.plug.yaml | 4 +- plugs/core/debug.ts | 125 ++++++++++---------------------------- web/components/panel.tsx | 61 ++++++++++++++++++- web/editor.tsx | 4 +- web/index.html | 1 - web/styles/main.scss | 1 + web/styles/theme.scss | 2 + 7 files changed, 98 insertions(+), 100 deletions(-) diff --git a/plugs/core/core.plug.yaml b/plugs/core/core.plug.yaml index 617d147..574ab5c 100644 --- a/plugs/core/core.plug.yaml +++ b/plugs/core/core.plug.yaml @@ -374,11 +374,9 @@ functions: showLogsCommand: path: ./debug.ts:showLogsCommand command: - name: "Debug: Show Logs" + name: "Show Logs" key: "Ctrl-Alt-l" mac: "Cmd-Alt-l" - events: - - log:reload hideBhsCommand: path: ./debug.ts:hideBhsCommand command: diff --git a/plugs/core/debug.ts b/plugs/core/debug.ts index 93d2eed..ccfa62c 100644 --- a/plugs/core/debug.ts +++ b/plugs/core/debug.ts @@ -1,10 +1,4 @@ -import { sandbox } from "$sb/plugos-syscall/mod.ts"; -import { - editor, - markdown, - sandbox as serverSandbox, - system, -} from "$sb/silverbullet-syscall/mod.ts"; +import { editor, markdown } from "$sb/silverbullet-syscall/mod.ts"; export async function parsePageCommand() { console.log( @@ -18,22 +12,13 @@ export async function parsePageCommand() { } export async function showLogsCommand() { - // Running in client/server mode? - const clientServer = !!(await system.getEnv()); - - if (clientServer) { - const clientLogs = await sandbox.getLogs(); - const serverLogs = await serverSandbox.getServerLogs(); - await editor.showPanel( - "bhs", - 1, - ` + await editor.showPanel( + "bhs", + 1, + ` -
Client logs (max 100)
-
-
${
-        clientLogs
-          .map((le) => `[${le.level}] ${le.message}`)
-          .join("\n")
-      }
-
+
Loading...
Server logs (max 100)
-
-
${
-        serverLogs
-          .map((le) => `[${le.level}] ${le.message}`)
-          .join("\n")
-      }
-
`, - ` - var clientDiv = document.getElementById("client-log"); +
Loading...
`, + ` + const clientDiv = document.getElementById("client-log"); clientDiv.scrollTop = clientDiv.scrollHeight; - var serverDiv = document.getElementById("server-log"); + const serverDiv = document.getElementById("server-log"); serverDiv.scrollTop = serverDiv.scrollHeight; - self.reloadLogs = () => { - sendEvent("log:reload"); - }; self.close = () => { sendEvent("log:hide"); }; + + syscall("system.getEnv").then((env) => { + const clientServerMode = !!env; + if (!clientServerMode) { + // Running in hybrid mode (mobile), so let's ignore server logs (they're the same as client logs) + serverDiv.style.display = "none"; + clientDiv.style.width = "100%"; + document.getElementById("server-log-header").style.display = "none"; + } + + setInterval(() => { + Promise.resolve().then(async () => { + if(clientServerMode) { + const serverLogs = await syscall("sandbox.getServerLogs"); + serverDiv.innerHTML = "
" + serverLogs.map((le) => "[" + le.level + "] " + le.message).join("\\n") + "
"; + } + const clientLogs = await syscall("sandbox.getLogs"); + clientDiv.innerHTML = "
" + clientLogs.map((le) => "[" + le.level + "] " + le.message).join("\\n") + "
"; + }).catch(console.error); + }, 1000); + }); `, - ); - } else { - const logs = await sandbox.getLogs(); - await editor.showPanel( - "bhs", - 1, - ` - - - -
Logs (max 100)
-
-
${
-        logs
-          .map((le) => `[${le.level}] ${le.message}`)
-          .join("\n")
-      }
-
`, - ` - var clientDiv = document.getElementById("log"); - clientDiv.scrollTop = clientDiv.scrollHeight; - self.reloadLogs = () => { - sendEvent("log:reload"); - }; - self.close = () => { - sendEvent("log:hide"); - }; - `, - ); - } + ); } export async function hideBhsCommand() { diff --git a/web/components/panel.tsx b/web/components/panel.tsx index bb10cce..d494e05 100644 --- a/web/components/panel.tsx +++ b/web/components/panel.tsx @@ -8,6 +8,22 @@ export const panelHtml = `