- help-center.ts: replace static HELP_ARTICLES array with async fetch* functions (fetchHelpCenterArticles, fetchHelpCenterCategories, fetchArticleBySlug); legacy sync shims kept for safety - support/index.tsx: switched from createMemo(static) to createResource(async API) with loading states - help-center/article/[slug].tsx: now fetches article from API via createResource; renders paragraphs split by double-newline; proper loading and not-found states - New server-side API routes: /api/kb/articles, /api/kb/categories, /api/kb/articles/[slug] (proxy to Rust gateway, no auth required) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
19 lines
638 B
TypeScript
19 lines
638 B
TypeScript
import { gatewayUrl } from '~/lib/server/gateway';
|
|
|
|
export async function GET({ request }: { request: Request }) {
|
|
const url = new URL(request.url);
|
|
const upstream = gatewayUrl('/api/kb/articles' + url.search);
|
|
try {
|
|
const res = await fetch(upstream, { cache: 'no-store' });
|
|
const body = await res.text();
|
|
return new Response(body, {
|
|
status: res.status,
|
|
headers: { 'Content-Type': 'application/json' },
|
|
});
|
|
} catch (err: any) {
|
|
return new Response(JSON.stringify({ error: err?.message || 'Gateway error' }), {
|
|
status: 502,
|
|
headers: { 'Content-Type': 'application/json' },
|
|
});
|
|
}
|
|
}
|