fix(page-templates): make page-embed Refresh actually re-render (#40)
The read-only embed renderer mounts a Tiptap EditorProvider with the looked-up content, but Tiptap consumes the `content` option only at initial mount. After Refresh busted the lookup cache and re-fetched fresh content, the new content prop never reached the sub-editor, so the embed appeared not to update at all. Key PageEmbedContent on result.sourceUpdatedAt (the source page's updatedAt, already returned by the lookup and bumped on every persisted content change) so the component and its EditorProvider remount and apply the refreshed content when the source changes. Note: server-side freshness vs. live collab edits is bounded by the 10s persist debounce (collaboration.gateway.ts) — that separate limitation stays documented in #40 and is out of scope here; this commit fixes the client never re-rendering. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -214,7 +214,17 @@ function PageEmbedBody({
|
||||
sourcePageId={sourcePageId}
|
||||
hostPageId={hostPageId}
|
||||
>
|
||||
<PageEmbedContent content={result.content} />
|
||||
{/*
|
||||
Tiptap's EditorProvider consumes `content` only at initial mount, so a
|
||||
changed `content` prop (e.g. after Refresh re-fetches fresh content)
|
||||
would not update the read-only sub-editor. Key on the source's
|
||||
updatedAt to remount PageEmbedContent (and its inner EditorProvider)
|
||||
whenever the source page changes, applying the refreshed content.
|
||||
*/}
|
||||
<PageEmbedContent
|
||||
key={result.sourceUpdatedAt}
|
||||
content={result.content}
|
||||
/>
|
||||
</PageEmbedAncestryProvider>
|
||||
);
|
||||
} else if (result.status === "no_access") {
|
||||
|
||||
Reference in New Issue
Block a user