diff --git a/app/web/src/nova/ed/logic/comp/load.tsx b/app/web/src/nova/ed/logic/comp/load.tsx index 1fbc290d..692a7094 100644 --- a/app/web/src/nova/ed/logic/comp/load.tsx +++ b/app/web/src/nova/ed/logic/comp/load.tsx @@ -42,6 +42,9 @@ export const loadCompSnapshot = async ( comp_id: string, snapshot: Uint8Array ) => { + if (p.comp.list[comp_id] && p.comp.list[comp_id].doc) { + return; + } const doc = new Y.Doc() as DComp; Y.applyUpdate(doc as any, decompress(snapshot)); const mitem = doc.getMap("map").get("root"); @@ -85,7 +88,11 @@ export const loadCompSnapshot = async ( comp_id, Buffer.from(compress(diff_local)) ); - const updated = await updateComponentMeta(p, doc, comp_id); + const updated = await updateComponentMeta( + p, + p.comp.list[comp_id].doc, + comp_id + ); if (updated) { p.comp.list[comp_id].meta = updated.meta; p.comp.list[comp_id].tree = updated.tree; diff --git a/app/web/src/nova/ed/logic/ed-sync.tsx b/app/web/src/nova/ed/logic/ed-sync.tsx index fdf092b6..bcc99d4f 100644 --- a/app/web/src/nova/ed/logic/ed-sync.tsx +++ b/app/web/src/nova/ed/logic/ed-sync.tsx @@ -184,6 +184,7 @@ export const edInitSync = (p: PG) => { p.comp.list[data.id].meta = updated.meta; p.comp.list[data.id].tree = updated.tree; } + await treeRebuild(p, { note: "sv_remote" }); } p.render(); diff --git a/app/web/src/nova/ed/panel/main/main-per-item.tsx b/app/web/src/nova/ed/panel/main/main-per-item.tsx index 96d1d59c..c401cc69 100644 --- a/app/web/src/nova/ed/panel/main/main-per-item.tsx +++ b/app/web/src/nova/ed/panel/main/main-per-item.tsx @@ -41,13 +41,11 @@ export const mainPerItemVisit = ( }; parts.props.ref = (el) => { - if ( - el && - text_edit.caret && - (text_edit.id === meta.item.id || text_edit.id === meta.item.originalId) - ) { - setCaret(el, text_edit.caret); - text_edit.caret = null; + if (el && text_edit.caret) { + if (text_edit.id === meta.item.id) { + setCaret(el, text_edit.caret); + text_edit.caret = null; + } } }; @@ -71,8 +69,8 @@ export const mainPerItemVisit = ( clearTimeout(text_edit.timeout); text_edit.timeout = setTimeout(() => { + text_edit.id = meta.item.id; text_edit.caret = getCaret(el); - text_edit.id = meta.item.originalId || meta.item.id; if (active.comp_id && meta.parent?.comp_id === active.comp_id) { const comp = p.comp.list[active.comp_id]; diff --git a/app/web/src/nova/ed/panel/tree/node/item/name.tsx b/app/web/src/nova/ed/panel/tree/node/item/name.tsx index 75934ed3..db45b4b1 100644 --- a/app/web/src/nova/ed/panel/tree/node/item/name.tsx +++ b/app/web/src/nova/ed/panel/tree/node/item/name.tsx @@ -98,7 +98,7 @@ export const EdTreeName = ({ ) : (