From 0d35668efe1e9d068ad0bae08a2c2ed11388631c Mon Sep 17 00:00:00 2001 From: Manuel Bustillo Date: Sun, 8 Jun 2025 23:36:32 +0200 Subject: [PATCH] Render the website inside an iframe to preview the changes being applied --- app/[slug]/dashboard/website/page.tsx | 33 +++++++++++++++++++++------ 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/app/[slug]/dashboard/website/page.tsx b/app/[slug]/dashboard/website/page.tsx index 989e3f1..79ee923 100644 --- a/app/[slug]/dashboard/website/page.tsx +++ b/app/[slug]/dashboard/website/page.tsx @@ -3,16 +3,23 @@ 'use client' import { AbstractApi } from '@/app/api/abstract-api'; +import { getSlug } from '@/app/lib/utils'; import { Website, WebsiteSerializer } from '@/app/lib/website'; import { useEffect, useState } from 'react'; import Tiptap from '../../../components/Tiptap'; + export default function Page() { const [website, setWebsite] = useState() const api = new AbstractApi(); const serializer = new WebsiteSerializer(); + const [slug, setSlug] = useState("default"); + useEffect(() => { setSlug(getSlug()) }, []); + + const [iframeKey, setIframeKey] = useState(Math.random()); + const [timeoutId, setTimeoutId] = useState(null); useEffect(() => { @@ -29,18 +36,30 @@ export default function Page() { setTimeoutId( setTimeout(() => { - api.update(serializer, new Website('', newContent), () => { }); + api.update(serializer, new Website('', newContent), () => { + setIframeKey(Math.random()); // Change key to force iframe reload + }); }, 500) ); } return ( -
- +
+
+ +
+
+