refactor: güncellenmiş profil çerezi ile sonuç sayfası yönlendirmeleri
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:
bilalgursen
2026-08-09 03:31:42 +03:00
parent 3a8c049092
commit ce6871d623
26 changed files with 702 additions and 145 deletions

View File

@@ -2,6 +2,7 @@
// Şema, doğrulama ve sabitler sihirbaz-sabitler.ts'te yaşar.
import {
PROFIL_CEREZ_ADI,
PROFIL_DEGISTI_EVENT,
SIHIRBAZ_STORAGE_KEY,
tercihProfiliDogrula,
@@ -42,6 +43,24 @@ export function tercihProfiliOku(): TercihProfili | null {
return profilCache;
}
/**
* Profilin sunucu aynası: /sonuc SSR'ı tabloyu bu çerezden filtreler
* (bkz. PROFIL_CEREZ_ADI). localStorage'ı olup çerezi olmayan eski
* kullanıcıların taşınması için SiraGerekli de bunu çağırır.
*/
export function profilCerezineYaz(profil: TercihProfili): void {
if (typeof document === "undefined") return;
const guvenli = window.location.protocol === "https:" ? "; secure" : "";
document.cookie = `${PROFIL_CEREZ_ADI}=${encodeURIComponent(
JSON.stringify(profil),
)}; path=/; max-age=31536000; samesite=lax${guvenli}`;
}
function profilCereziniSil(): void {
if (typeof document === "undefined") return;
document.cookie = `${PROFIL_CEREZ_ADI}=; path=/; max-age=0`;
}
/** Ortak profili yazar; hero ve Yapay Zeka sihirbazıyla aynı anahtarı kullanır. */
export function tercihProfiliYaz(profil: TercihProfili): void {
if (typeof window === "undefined") return;
@@ -50,6 +69,7 @@ export function tercihProfiliYaz(profil: TercihProfili): void {
try {
localStorage.setItem(SIHIRBAZ_STORAGE_KEY, JSON.stringify(dogru));
} catch {}
profilCerezineYaz(dogru);
profilCache = dogru;
profilDegistiginiYayinla();
}
@@ -60,6 +80,7 @@ export function tercihProfiliSil(): void {
try {
localStorage.removeItem(SIHIRBAZ_STORAGE_KEY);
} catch {}
profilCereziniSil();
profilCache = null;
profilDegistiginiYayinla();
}