- desktop/ → examples/django-react-desktop-app/ - e2e/ → examples/django-react-site/ - example/ → examples/django-react-site/backend/ - Update Dockerfile.test, Makefile, playwright config, and django.config.mjs path references Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
63 lines
2.2 KiB
TypeScript
63 lines
2.2 KiB
TypeScript
// AUTO-GENERATED by mizan - do not edit manually
|
|
// Regenerate with: npm run schemas
|
|
//
|
|
// Server-side functions for SSR hydration.
|
|
// These run in Next.js server components/layouts.
|
|
|
|
import type { currentUserOutput, greetOutput } from './generated.mizan'
|
|
|
|
// ============================================================================
|
|
// Hydration Types
|
|
// ============================================================================
|
|
|
|
/** Typed hydration data for SSR */
|
|
export interface DjangoHydration {
|
|
currentUser?: currentUserOutput
|
|
greet?: greetOutput
|
|
}
|
|
|
|
// ============================================================================
|
|
// SSR Hydration Helper
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Fetch hydration data for SSR.
|
|
*
|
|
* Call this in your server component:
|
|
* const hydration = await getDjangoHydration(client)
|
|
* return <DjangoContext hydration={hydration}>...</DjangoContext>
|
|
*/
|
|
export async function getDjangoHydration(
|
|
client: { request: (method: string, url: string, body?: unknown) => Promise<Response> }
|
|
): Promise<DjangoHydration> {
|
|
const hydration: DjangoHydration = {}
|
|
|
|
const results = await Promise.allSettled([
|
|
client.request('POST', '/api/mizan/call/', { fn: 'current_user', args: {} }),
|
|
client.request('POST', '/api/mizan/call/', { fn: 'greet', args: {} }),
|
|
])
|
|
|
|
if (results[0].status === 'fulfilled') {
|
|
const data = await (results[0] as PromiseFulfilledResult<Response>).value.json()
|
|
if (data.error) {
|
|
console.error('[getDjangoHydration] current_user failed:', data.code, data.message)
|
|
} else {
|
|
hydration.currentUser = data.data
|
|
}
|
|
} else {
|
|
console.error('[getDjangoHydration] current_user request failed:', (results[0] as PromiseRejectedResult).reason)
|
|
}
|
|
if (results[1].status === 'fulfilled') {
|
|
const data = await (results[1] as PromiseFulfilledResult<Response>).value.json()
|
|
if (data.error) {
|
|
console.error('[getDjangoHydration] greet failed:', data.code, data.message)
|
|
} else {
|
|
hydration.greet = data.data
|
|
}
|
|
} else {
|
|
console.error('[getDjangoHydration] greet request failed:', (results[1] as PromiseRejectedResult).reason)
|
|
}
|
|
|
|
return hydration
|
|
}
|