import { useQuery } from '@tanstack/react-query'; import { createFileRoute, redirect } from '@tanstack/react-router'; import { CopyIcon, DownloadIcon, LockIcon, XIcon } from 'lucide-react'; import { ButtonContainer } from '@/components/button-container'; import { FullPageEmptyState } from '@/components/full-page-empty-state'; import FullPageLoadingState from '@/components/full-page-loading-state'; import ConnectWeb from '@/components/onboarding/connect-web'; import Syntax from '@/components/syntax'; import { Button, LinkButton } from '@/components/ui/button'; import { useClientSecret } from '@/hooks/use-client-secret'; import { useTRPC } from '@/integrations/trpc/react'; import { clipboard } from '@/utils/clipboard'; import { createEntityTitle, PAGE_TITLES } from '@/utils/title'; export const Route = createFileRoute('/_steps/onboarding/$projectId/connect')({ head: () => ({ meta: [ { title: createEntityTitle('Connect data', PAGE_TITLES.ONBOARDING) }, ], }), beforeLoad: ({ context }) => { if (!context.session?.session) { throw redirect({ to: '/onboarding' }); } }, component: Component, loader: async ({ context, params }) => { await context.queryClient.prefetchQuery( context.trpc.project.getProjectWithClients.queryOptions({ projectId: params.projectId, }) ); }, pendingComponent: FullPageLoadingState, }); function Component() { const { projectId } = Route.useParams(); const trpc = useTRPC(); const { data: project } = useQuery( trpc.project.getProjectWithClients.queryOptions({ projectId }) ); const client = project?.clients[0]; const [secret] = useClientSecret(); if (!client) { return ( ); } const credentials = `CLIENT_ID=${client.id}\nCLIENT_SECRET=${secret}`; const download = () => { const blob = new Blob([credentials], { type: 'text/plain' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'credentials.txt'; a.click(); }; return (
Client credentials
Next
); }