'use client'; import { useEffect, useMemo, useState } from 'react'; import { fetchPublicSettingsClient } from '@/lib/api'; import { buildOneTapExamples, buildOneTapUrls } from '@/lib/one-tap-examples'; import { resolveFrontendBase, resolveOAuthApiBase } from '@/lib/oauth-url'; import { CodeExampleTabs } from '@/components/code-example-tabs'; export function OneTapCodeTabs() { const [apiBase, setApiBase] = useState('http://localhost:3000'); const [frontendBase, setFrontendBase] = useState('http://localhost:3002'); const [projectName, setProjectName] = useState('MVK ID'); useEffect(() => { void fetchPublicSettingsClient() .then((settings) => { setApiBase(resolveOAuthApiBase(settings)); setFrontendBase(resolveFrontendBase(settings)); if (settings.PROJECT_NAME?.trim()) { setProjectName(settings.PROJECT_NAME.trim()); } }) .catch(() => undefined); }, []); const urls = useMemo(() => buildOneTapUrls(apiBase, frontendBase, projectName), [apiBase, frontendBase, projectName]); const examples = useMemo(() => buildOneTapExamples(urls), [urls]); return (
API (issuer): {apiBase}
{' · '}
Frontend / виджет: {frontendBase}
{' — '}
из настроек PUBLIC_API_URL, PUBLIC_FRONTEND_URL и PROJECT_NAME.