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>
This commit is contained in:
41
src/features/sihirbaz/components/sihirbaz-bolumu.tsx
Normal file
41
src/features/sihirbaz/components/sihirbaz-bolumu.tsx
Normal file
@@ -0,0 +1,41 @@
|
||||
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}
|
||||
/>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user