- liste-queries.ts (siraylaProgramAra) ve sihirbaz-queries.ts (getSihirbazFacetleri) eklendi — /sonuc'un SQLite okumaları feature sorgularına indi - Yeni sunucu sarmalayıcıları: SonucProgramTablosu (+skeleton), TadimlikBolumu (girişliyse null — gruplu sınırda skeleton bilerek yok), SonucSihirbazi (session + rapor-varlığı + facetler içeride; client orkestratöre çözülmüş değerler iner) - Sayfa senkron: searchParams.then() içinde sıra doğrulaması; geçersiz sıra SiraGerekli'ye düşer; geçerli akışta tablo+tadımlık+sihirbaz+dipnot+footer tek gruplu Suspense'te (bugünkü tek await'li akışla aynı anda belirir) - sonuc/loading.tsx silindi; geometrisi sayfadaki fallback'te yaşıyor - Davranış değişikliği yok (getSession React cache ile tek okuma) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { getSession } from "@/lib/session";
|
||
import { kullanicininRaporu } from "@/features/rapor/rapor-queries";
|
||
import { getSihirbazFacetleri } from "../sihirbaz-queries";
|
||
import { SihirbazBolumu } from "./sihirbaz-cagri-karti";
|
||
import type { PuanTuruKey } from "@/types/yokatlas";
|
||
|
||
// /sonuc'taki sihirbaz funnel'ının sunucu sarmalayıcısı: session, rapor-var-mı
|
||
// ve SSR facetleri burada okunur; client orkestratör (SihirbazBolumu,
|
||
// sihirbaz-cagri-karti.tsx) yalnızca çözülmüş değerleri alır. Üretim ve
|
||
// listenin kendisi /listem'de yaşar.
|
||
export async function SonucSihirbazi({
|
||
sira,
|
||
tur,
|
||
otomatikAc,
|
||
secimlerHazir,
|
||
}: {
|
||
sira: number;
|
||
tur: PuanTuruKey;
|
||
otomatikAc: boolean;
|
||
secimlerHazir: boolean;
|
||
}) {
|
||
// Kullanıcının kayıtlı raporu var mı? Yalnızca CTA'nın hangi hâlde render
|
||
// edileceği için varlık bilgisi gerekir.
|
||
const session = await getSession();
|
||
const raporSatiri = session
|
||
? await kullanicininRaporu(session.user.id)
|
||
: null;
|
||
const facetler = getSihirbazFacetleri(sira, tur);
|
||
|
||
return (
|
||
<SihirbazBolumu
|
||
sira={sira}
|
||
tur={tur}
|
||
facetler={facetler}
|
||
girisliMi={Boolean(session)}
|
||
raporVar={Boolean(raporSatiri?.result)}
|
||
otomatikAc={otomatikAc}
|
||
secimlerHazir={secimlerHazir}
|
||
/>
|
||
);
|
||
}
|