fix
This commit is contained in:
parent
f7611ae351
commit
ea27006085
|
|
@ -4,7 +4,7 @@ import { g } from "utils/global";
|
|||
|
||||
export const _ = {
|
||||
url: "/nova-load/:mode/:id/**",
|
||||
async api(mode: "site" | "page" | "code", id: string) {
|
||||
async api(mode: "site" | "code", id: string) {
|
||||
const { req, res } = apiContext(this);
|
||||
|
||||
if (mode === "site") {
|
||||
|
|
@ -17,10 +17,6 @@ export const _ = {
|
|||
return new Response(file as any);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mode === "page") {
|
||||
const code = await db.code_assign.findMany({ where: { id_page: id } });
|
||||
return code.map((e) => e.id);
|
||||
} else if (mode === "code") {
|
||||
const file = Bun.file(
|
||||
dir.path(`${g.datadir}/site/build/${id}/${req.params["*"]}`)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
import { VG } from "./global";
|
||||
|
||||
export const codeLoaded = new Set<string>();
|
||||
const codeMap = {
|
||||
page: {} as Record<string, string[]>,
|
||||
compGroup: {} as Record<string, string[]>,
|
||||
};
|
||||
export const vLoadCode = async (v: VG, forceLoad?: boolean) => {
|
||||
if (forceLoad) {
|
||||
codeLoaded.clear();
|
||||
|
|
@ -25,9 +29,57 @@ export const vLoadCode = async (v: VG, forceLoad?: boolean) => {
|
|||
resolve();
|
||||
}),
|
||||
];
|
||||
const code_ids: string[] = [];
|
||||
const code = await db.code.findMany({
|
||||
where: { id_site: site_id, name: { notIn: ["site", "SSR"] } },
|
||||
select: { code_assign: true },
|
||||
});
|
||||
|
||||
const code_ids = await api.nova_load("page", page_id);
|
||||
for (const id of code_ids) {
|
||||
codeMap.compGroup = {};
|
||||
codeMap.page = {};
|
||||
for (const c of code) {
|
||||
c.code_assign.forEach((e) => {
|
||||
if (e.id_page) {
|
||||
if (!codeMap.page[e.id_page]) codeMap.page[e.id_page] = [];
|
||||
codeMap.page[e.id_page].push(e.id_code);
|
||||
}
|
||||
if (e.id_component_group) {
|
||||
if (!codeMap.compGroup[e.id_component_group])
|
||||
codeMap.compGroup[e.id_component_group] = [];
|
||||
codeMap.page[e.id_component_group].push(e.id_code);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (codeMap.page[page_id]) {
|
||||
for (const id of codeMap.page[page_id]) {
|
||||
promises.push(
|
||||
new Promise<void>(async (resolve) => {
|
||||
if (!codeLoaded.has(id)) {
|
||||
codeLoaded.add(id);
|
||||
const module = await importCJS(`/nova-load/code/${id}/index.js`);
|
||||
for (const [k, v] of Object.entries(module)) {
|
||||
w[k] = v;
|
||||
}
|
||||
}
|
||||
resolve();
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
await Promise.all(promises);
|
||||
|
||||
v.mode = "rebuild";
|
||||
v.render();
|
||||
}
|
||||
};
|
||||
|
||||
const loadCGroupCode = async (cgroup_id: string) => {
|
||||
if (codeMap.compGroup[cgroup_id]) {
|
||||
const promises = [];
|
||||
const w = window as any;
|
||||
for (const id of codeMap.compGroup[cgroup_id]) {
|
||||
promises.push(
|
||||
new Promise<void>(async (resolve) => {
|
||||
if (!codeLoaded.has(id)) {
|
||||
|
|
@ -41,11 +93,7 @@ export const vLoadCode = async (v: VG, forceLoad?: boolean) => {
|
|||
})
|
||||
);
|
||||
}
|
||||
|
||||
await Promise.all(promises);
|
||||
|
||||
v.mode = "rebuild";
|
||||
v.render();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue