wip fix code

This commit is contained in:
Rizky 2024-01-10 19:27:43 +07:00
parent 8a28aaf1ca
commit 0f4cfc87f7
7 changed files with 36 additions and 9 deletions

View File

@ -111,7 +111,7 @@ export const _ = {
}, },
}; };
function readDirectoryRecursively( export function readDirectoryRecursively(
dirPath: string, dirPath: string,
baseDir?: string[] baseDir?: string[]
): Record<string, string> { ): Record<string, string> {

View File

@ -3,6 +3,7 @@ import { prepCode } from "../editor/code/prep-code";
import { startCodeWatcher, stopCodeWatcher } from "../editor/code/watcher"; import { startCodeWatcher, stopCodeWatcher } from "../editor/code/watcher";
import { activity as a } from "../entity/activity"; import { activity as a } from "../entity/activity";
import { SyncConnection } from "../type"; import { SyncConnection } from "../type";
export const activity: SAction["activity"] = async function ( export const activity: SAction["activity"] = async function (
this: SyncConnection, this: SyncConnection,
name, name,

View File

@ -1,19 +1,41 @@
import { dir } from "dir";
import { g } from "utils/global";
import { DCode } from "../../../../web/src/utils/types/root"; import { DCode } from "../../../../web/src/utils/types/root";
import { readDirectoryRecursively } from "../../../api/site-export";
import { SAction } from "../actions"; import { SAction } from "../actions";
import { docs } from "../entity/docs"; import { docs } from "../entity/docs";
import { SyncConnection } from "../type"; import { SyncConnection } from "../type";
import { getCode } from "../editor/code/prep-code";
export const code_load: SAction["code"]["load"] = async function ( export const code_load: SAction["code"]["load"] = async function (
this: SyncConnection, this: SyncConnection,
id, site_id,
type type
) { ) {
let result = null as unknown as Awaited<ReturnType<SAction["code"]["load"]>>; let result = null as unknown as Awaited<ReturnType<SAction["code"]["load"]>>;
if (!docs.code[id]) { const code = await getCode(site_id, "site");
const src_doc = new Y.Doc() as DCode;
const built_doc = new Y.Doc() as DCode; if (code) {
docs.code[id] = { id, src: src_doc, built: built_doc }; if (!docs.code[site_id]) {
docs.code[site_id] = {
id: site_id,
src: loadFolderAsDCode(dir.path(`${g.datadir}/site/code/${code.id}`)),
build: loadFolderAsDCode(
dir.path(`${g.datadir}/site/build/${code.id}`)
),
};
}
return result;
} }
return result; return { id: site_id, snapshot: null };
};
const loadFolderAsDCode = (path: string) => {
const doc = new Y.Doc() as DCode;
const dirs = readDirectoryRecursively(path);
return doc;
}; };

View File

@ -1,6 +1,7 @@
import { dir } from "dir"; import { dir } from "dir";
import { g } from "utils/global"; import { g } from "utils/global";
import { dirAsync } from "fs-jetpack"; import { dirAsync } from "fs-jetpack";
import { docs } from "../../entity/docs";
export type DBCode = Exclude<Awaited<ReturnType<typeof getCode>>, null>; export type DBCode = Exclude<Awaited<ReturnType<typeof getCode>>, null>;
export const prepCode = async (site_id: string, name: string) => { export const prepCode = async (site_id: string, name: string) => {
@ -61,10 +62,11 @@ export const hello_world = () => {
}); });
code = await getCode(site_id); code = await getCode(site_id);
return code as DBCode; return code as DBCode;
}; };
const getCode = async (site_id: string, name?: string) => { export const getCode = async (site_id: string, name?: string) => {
return await db.code.findFirst({ return await db.code.findFirst({
where: name where: name
? { id_site: site_id, name } ? { id_site: site_id, name }

View File

@ -27,5 +27,5 @@ export const docs = {
um: Y.UndoManager; um: Y.UndoManager;
} }
>, >,
code: {} as Record<string, { id: string; src: DCode; built: DCode }>, code: {} as Record<string, { id: string; src: DCode; build: DCode }>,
}; };

View File

@ -12,6 +12,7 @@ export const EdMain = () => {
const meta = active.comp_id const meta = active.comp_id
? p.comp.list[active.comp_id].meta[active.item_id] ? p.comp.list[active.comp_id].meta[active.item_id]
: p.page.meta[active.item_id]; : p.page.meta[active.item_id];
return ( return (
<div <div
className={cx( className={cx(

View File

@ -54,6 +54,7 @@ export const viLoadLegacy = async (vi: {
await importModule(path); await importModule(path);
if (!vi.site.db.get()) { if (!vi.site.db.get()) {
} }
if (!vi.site.api.get()) { if (!vi.site.api.get()) {
} }