refactor: güncellenmiş profil çerezi ile sonuç sayfası yönlendirmeleri
Some checks failed
Deploy / deploy (push) Has been cancelled
Some checks failed
Deploy / deploy (push) Has been cancelled
Profil çerezinin SSR'da kullanılmasını sağlayarak, sonuç sayfasındaki yönlendirmeleri güncelledik. Artık profil bilgileri URL parametreleri yerine çerezden alınarak işleniyor. Ayrıca, profil çerezi olmayan kullanıcılar için yönlendirme mantığı iyileştirildi. Çeşitli bileşenlerdeki URL oluşturma fonksiyonları güncellenerek, profil bilgileri çerezden okunacak şekilde düzenlendi. Bu değişiklikler, kullanıcı deneyimini artırmayı ve daha tutarlı bir veri akışı sağlamayı hedefliyor.
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
import { Suspense } from "react";
|
||||
import type { Metadata } from "next";
|
||||
import { cookies } from "next/headers";
|
||||
import { PUAN_TURLERI, type PuanTuruKey } from "@/types/yokatlas";
|
||||
import {
|
||||
cerezdenTercihProfili,
|
||||
PROFIL_CEREZ_ADI,
|
||||
} from "@/features/sihirbaz/sihirbaz-sabitler";
|
||||
import {
|
||||
SonucProgramTablosu,
|
||||
SonucProgramTablosuSkeleton,
|
||||
@@ -14,9 +19,9 @@ import { Skeleton } from "@/components/ui/skeleton";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "Tercih Listeni Kur",
|
||||
// Param uzayı sonsuz + içerik sıralamaya göre kişisel: indexlenmez ama
|
||||
// link değeri follow ile geri akar. robots.txt'te ENGELLEME — noindex'in
|
||||
// görülebilmesi için sayfa taranabilir kalmalı.
|
||||
// İçerik profil çerezine göre kişisel (eski linklerde param uzayı sonsuz):
|
||||
// indexlenmez ama link değeri follow ile geri akar. robots.txt'te
|
||||
// ENGELLEME — noindex'in görülebilmesi için sayfa taranabilir kalmalı.
|
||||
robots: { index: false, follow: true },
|
||||
};
|
||||
|
||||
@@ -47,28 +52,37 @@ export default function SonucPage({
|
||||
</main>
|
||||
}
|
||||
>
|
||||
{searchParams.then((params) => {
|
||||
const sira = Number.parseInt(params.sira ?? "", 10);
|
||||
{Promise.all([searchParams, cookies()]).then(([params, cerezler]) => {
|
||||
// Profil (sıra/tür/il/tip) normalde PROFIL_CEREZ_ADI çerezinden gelir;
|
||||
// URL param taşımaz (bkz. sonucHref). Query'de sira varsa eski
|
||||
// paylaşılan/yer imli link demektir — açık URL niyeti çerezi ezer,
|
||||
// eski linkler çalışmayı sürdürür.
|
||||
const eskiLinkSira = Number.parseInt(params.sira ?? "", 10);
|
||||
const eskiLink = Number.isFinite(eskiLinkSira);
|
||||
const profil = eskiLink
|
||||
? null
|
||||
: cerezdenTercihProfili(cerezler.get(PROFIL_CEREZ_ADI)?.value);
|
||||
|
||||
const sira = eskiLink ? eskiLinkSira : (profil?.sira ?? Number.NaN);
|
||||
const turHam = eskiLink ? params.tur : profil?.tur;
|
||||
const turKey: PuanTuruKey =
|
||||
params.tur && params.tur in PUAN_TURLERI
|
||||
? (params.tur as PuanTuruKey)
|
||||
: "say";
|
||||
// Sihirbaz seçimlerinden gelen tablo filtreleri (bkz. sonucHref):
|
||||
// il tekrarlı param, tip devlet|vakif allowlist'li
|
||||
turHam && turHam in PUAN_TURLERI ? (turHam as PuanTuruKey) : "say";
|
||||
// Tablo filtreleri: il en fazla 5 tekrarsız, tip devlet|vakif
|
||||
// allowlist'li (çerez tarafı tercihProfiliDogrula'dan zaten geçmiş
|
||||
// olsa da iki kaynak aynı süzgeçten akar).
|
||||
const hamIller = eskiLink
|
||||
? Array.isArray(params.il)
|
||||
? params.il
|
||||
: params.il
|
||||
? [params.il]
|
||||
: []
|
||||
: (profil?.secimler.iller ?? []);
|
||||
const iller = [
|
||||
...new Set(
|
||||
(Array.isArray(params.il)
|
||||
? params.il
|
||||
: params.il
|
||||
? [params.il]
|
||||
: []
|
||||
).filter((i) => i.trim().length > 0),
|
||||
),
|
||||
...new Set(hamIller.filter((i) => i.trim().length > 0)),
|
||||
].slice(0, 5);
|
||||
const tipHam = eskiLink ? params.tip : profil?.secimler.universiteTipi;
|
||||
const uniturGrubu =
|
||||
params.tip === "devlet" || params.tip === "vakif"
|
||||
? params.tip
|
||||
: undefined;
|
||||
tipHam === "devlet" || tipHam === "vakif" ? tipHam : undefined;
|
||||
|
||||
if (!Number.isFinite(sira) || sira < 1 || sira > 4_000_000) {
|
||||
return (
|
||||
@@ -90,7 +104,7 @@ export default function SonucPage({
|
||||
{/* Yapay Zeka'dan bağımsız ham tablo — haritanın hemen altında,
|
||||
sayfanın ana gövdesi; puan türü navbar'daki sıralama
|
||||
rozetinden değiştirilir. Sihirbaz seçimleri (il, devlet/
|
||||
vakıf) URL paramlarıyla tabloya uygulanır. */}
|
||||
vakıf) profil çerezinden tabloya uygulanır. */}
|
||||
<SonucProgramTablosu
|
||||
sira={sira}
|
||||
tur={turKey}
|
||||
|
||||
Reference in New Issue
Block a user