From f09f7120db29d07d367903d1bca73aa9d6020aea Mon Sep 17 00:00:00 2001 From: Innei Date: Sat, 29 Jul 2023 17:04:40 +0800 Subject: [PATCH] refactor: css preview --- .../settings/css/page-component.tsx | 34 +++++++++++++------ src/app/site/[site]/[slug]/page.tsx | 2 -- src/app/site/[site]/layout.tsx | 4 +-- src/app/site/[site]/page.tsx | 2 -- ...PreviewConnect.tsx => CustomSiteStyle.tsx} | 23 +++++++++---- 5 files changed, 42 insertions(+), 23 deletions(-) rename src/components/site/{CSSPreviewConnect.tsx => CustomSiteStyle.tsx} (60%) diff --git a/src/app/dashboard/[subdomain]/settings/css/page-component.tsx b/src/app/dashboard/[subdomain]/settings/css/page-component.tsx index a4845394..83e52a9a 100644 --- a/src/app/dashboard/[subdomain]/settings/css/page-component.tsx +++ b/src/app/dashboard/[subdomain]/settings/css/page-component.tsx @@ -4,12 +4,14 @@ import { useParams } from "next/navigation" import { FC, useEffect, useRef, useState } from "react" import toast from "react-hot-toast" +import { useQuery } from "@tanstack/react-query" + import { MonacoEditor } from "~/components/common/Monaco" import { SettingsLayout } from "~/components/dashboard/SettingsLayout" import { Button } from "~/components/ui/Button" import { FieldLabel } from "~/components/ui/FieldLabel" import { useGetState } from "~/hooks/useGetState" -import { IS_DEV } from "~/lib/constants" +import { getSiteLink } from "~/lib/helpers" import { useTranslation } from "~/lib/i18n/client" import { useGetSite, useUpdateSite } from "~/queries/site" @@ -108,7 +110,11 @@ export default function SettingsCSSPage() { />
- + @@ -121,9 +127,21 @@ export default function SettingsCSSPage() { const PreviewButton: FC<{ css: string subdomain: string -}> = ({ css, subdomain }) => { + custom_domain?: string +}> = ({ css, subdomain, custom_domain }) => { const { t } = useTranslation("dashboard") + const { data: siteLink } = useQuery({ + queryKey: ["site_link", subdomain], + + queryFn: async () => { + return getSiteLink({ + subdomain, + domain: custom_domain, + }) + }, + }) + const datasetRef = useRef({ previewWindowOrigin: "", previewWindow: null as null | Window, @@ -131,14 +149,10 @@ const PreviewButton: FC<{ const [isInPreview, setIsPreview] = useState(false) const handlePreview = () => { - let url: URL - - if (IS_DEV) { - url = new URL(`http://${subdomain}.localhost:2222/`) - } else { - url = new URL(location.href) - // TODO + if (!siteLink) { + return } + let url: URL = new URL(siteLink) url.searchParams.set("origin", location.origin) url.searchParams.set("css-preview", "true") diff --git a/src/app/site/[site]/[slug]/page.tsx b/src/app/site/[site]/[slug]/page.tsx index 7cc513aa..ba5677f4 100644 --- a/src/app/site/[site]/[slug]/page.tsx +++ b/src/app/site/[site]/[slug]/page.tsx @@ -5,7 +5,6 @@ import serialize from "serialize-javascript" import { Hydrate, dehydrate } from "@tanstack/react-query" import PageContent from "~/components/common/PageContent" -import { CSSPreviewConnect } from "~/components/site/CSSPreviewConnect" import { OIAButton } from "~/components/site/OIAButton" import { PostFooter } from "~/components/site/PostFooter" import PostMeta from "~/components/site/PostMeta" @@ -188,7 +187,6 @@ export default async function SitePagePage({ {page?.metadata && } )} -
) } diff --git a/src/app/site/[site]/layout.tsx b/src/app/site/[site]/layout.tsx index 77286ab7..5f0a7dea 100644 --- a/src/app/site/[site]/layout.tsx +++ b/src/app/site/[site]/layout.tsx @@ -6,8 +6,8 @@ import { Hydrate, dehydrate } from "@tanstack/react-query" import { BlockchainInfo } from "~/components/common/BlockchainInfo" import { SitePlayerContainer } from "~/components/common/SitePlayer" -import Style from "~/components/common/Style" import { BackToTopFAB } from "~/components/site/BackToTopFAB" +import { CustomSiteStyle } from "~/components/site/CustomSiteStyle" import SiteFooter from "~/components/site/SiteFooter" import { SiteHeader } from "~/components/site/SiteHeader" import { FABContainer } from "~/components/ui/FAB" @@ -169,7 +169,7 @@ export default async function SiteLayout({
-