You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
1.9 KiB

"use client";
import { useEffect, useState } from "react";
import { AppLayout } from "@/components/layout/app-layout";
import { EmbeddedQuoteWidget } from "@/components/embed/embedded-quote-widget";
import { EmbedDemoLogin } from "@/components/embed/embed-demo-login";
import { Card } from "@/components/ui/card";
import { SecondaryButton } from "@/components/ui/primary-button";
import { Skeleton } from "@/components/ui/skeleton";
import {
embedDemoLogout,
type EmbedDemoSession,
} from "@/lib/frontend/api-client";
export default function EmbedDemoPage() {
const [booting, setBooting] = useState(true);
const [session, setSession] = useState<EmbedDemoSession | null>(null);
useEffect(() => {
void (async () => {
await embedDemoLogout("");
setBooting(false);
})();
}, []);
const handleLogout = async () => {
await embedDemoLogout("");
setSession(null);
};
if (booting) {
return (
<AppLayout title="宿主嵌入演示">
<Skeleton className="h-64 w-full" />
</AppLayout>
);
}
if (!session) {
return (
<AppLayout title="宿主嵌入演示">
<EmbedDemoLogin
onSuccess={(data) => {
setSession(data);
}}
/>
</AppLayout>
);
}
return (
<AppLayout title="宿主嵌入演示">
<Card className="mb-4 flex flex-wrap items-center justify-between gap-3">
<div>
<p className="text-sm text-text-secondary"></p>
<p className="text-lg font-semibold">{session.customer_id}</p>
</div>
<SecondaryButton onClick={() => void handleLogout()}>
退
</SecondaryButton>
</Card>
<p className="mb-4 text-sm text-text-secondary">
宿
</p>
<EmbeddedQuoteWidget customerId={session.customer_id} apiBaseUrl="" />
</AppLayout>
);
}