From 188f1905f811e58daae12d593f11ccaa25a33429 Mon Sep 17 00:00:00 2001 From: Rizky Date: Tue, 2 Jul 2024 15:00:30 +0700 Subject: [PATCH] fix --- app/srv/api/prod.ts | 4 +++- app/srv/ws/sync/actions/page_load.ts | 7 ++++++- app/srv/ws/sync/actions/yjs_sv_local.ts | 2 +- app/web/src/nova/ed/logic/comp/load.tsx | 3 +++ app/web/src/nova/ed/logic/ed-route.ts | 6 ++++++ .../src/nova/ed/panel/header/right/responsive-toggle.tsx | 3 +-- 6 files changed, 20 insertions(+), 5 deletions(-) diff --git a/app/srv/api/prod.ts b/app/srv/api/prod.ts index 5a590d18..44684179 100644 --- a/app/srv/api/prod.ts +++ b/app/srv/api/prod.ts @@ -166,7 +166,9 @@ export const _ = { } ); } catch (e) { - return new Response(""); + return new Response("location.reload", { + headers: { "content-type": "application/javascript" }, + }); } } case "route": { diff --git a/app/srv/ws/sync/actions/page_load.ts b/app/srv/ws/sync/actions/page_load.ts index c079b405..7a3ae24e 100644 --- a/app/srv/ws/sync/actions/page_load.ts +++ b/app/srv/ws/sync/actions/page_load.ts @@ -1,3 +1,4 @@ +import { g } from "utils/global"; import { SAction } from "../actions"; import { prepareComponentForPage } from "../editor/prep-comp-page"; import { prepContentTree } from "../editor/prep-page"; @@ -37,9 +38,13 @@ export const page_load: SAction["page"]["load"] = async function ( doc.on("update", async (update: Uint8Array, origin: any) => { const bin = Y.encodeStateAsUpdate(doc); snapshot.set("page", id, "bin", bin); - + snap = snapshot.get("page", id); const sv_local = await gzipAsync(update); + if (snap?.name.startsWith("layout:") && snap.id_site && g.route_cache) { + delete g.route_cache[snap.id_site]; + } + const client_ids = new Set(); user.active.findAll({ page_id: id }).forEach((e) => { client_ids.add(e.client_id); diff --git a/app/srv/ws/sync/actions/yjs_sv_local.ts b/app/srv/ws/sync/actions/yjs_sv_local.ts index 16471284..1e42f58d 100644 --- a/app/srv/ws/sync/actions/yjs_sv_local.ts +++ b/app/srv/ws/sync/actions/yjs_sv_local.ts @@ -11,7 +11,7 @@ export const yjs_sv_local: SAction["yjs"]["sv_local"] = async function ( ) { if (!docs[mode][id]) { console.log(`sv_local not found`, mode, id); - return; + return { diff: "not-found", sv: "not-found" } as any; } const doc = docs[mode][id].doc as Y.Doc; diff --git a/app/web/src/nova/ed/logic/comp/load.tsx b/app/web/src/nova/ed/logic/comp/load.tsx index 211835fd..3df626dc 100644 --- a/app/web/src/nova/ed/logic/comp/load.tsx +++ b/app/web/src/nova/ed/logic/comp/load.tsx @@ -84,6 +84,9 @@ export const loadCompSnapshot = async ( ); if (res) { + if (res.sv === res.diff && (res.sv as any) === "not-found") + location.reload(); + const diff_local = Y.encodeStateAsUpdate( doc as any, decompress(res.sv) diff --git a/app/web/src/nova/ed/logic/ed-route.ts b/app/web/src/nova/ed/logic/ed-route.ts index dc6fe4bd..a7ea0ca0 100644 --- a/app/web/src/nova/ed/logic/ed-route.ts +++ b/app/web/src/nova/ed/logic/ed-route.ts @@ -80,6 +80,9 @@ export const reloadLayout = async (p: PG, layout_id: string, note: string) => { ); if (res) { + if (res.sv === res.diff && (res.sv as any) === "not-found") + location.reload(); + const diff_local = Y.encodeStateAsUpdate( doc as any, decompress(res.sv) @@ -195,6 +198,9 @@ export const reloadPage = async ( ); if (res) { + if (res.sv === res.diff && (res.sv as any) === "not-found") + location.reload(); + const diff_local = Y.encodeStateAsUpdate( doc as any, decompress(res.sv) diff --git a/app/web/src/nova/ed/panel/header/right/responsive-toggle.tsx b/app/web/src/nova/ed/panel/header/right/responsive-toggle.tsx index ea28440d..2620ca8e 100644 --- a/app/web/src/nova/ed/panel/header/right/responsive-toggle.tsx +++ b/app/web/src/nova/ed/panel/header/right/responsive-toggle.tsx @@ -13,8 +13,7 @@ export const ResponsiveToggle = () => { const render = () => { const code = p.code["site"]?.doc; if (code) { - const src = code.getMap("map").get("files")?.get("index.js"); - applyEnv(p, src); + applyEnv(p); } treeRebuild(p);