Files
kolaytercih/src/features/sihirbaz/components/sihirbaz-bolumu.tsx
bilalgursen 22e2fde058 refactor: /sonuc senkron kompozisyona geçti (Faz 9)
- 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>
2026-08-08 01:42:32 +03:00

42 lines
1.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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}
/>
);
}