Proje: Okul.com.tr CRM · Hub: Okul.com.tr CRM — Decisions

useListFilters Merkezi Hook Kararı

Karar

useUrlFilters’ı direkt kullanan liste sayfaları pattern’i yerine useListFilters wrapper hook ile standartlaştırma.

Seçim

useListFilters aşağıdakileri kapsüller:

  1. URL senkronizasyonu (useUrlFilters)
  2. Filter state yönetimi
  3. Hierarchical filter cascading
  4. buildApiParams() — API param oluşturucu
  5. displayFilters — badge gösterimi
  6. Handlers objesi (spread edilebilir)

Gerekçe

useUrlFilters direkt kullanımı her sayfada:

  • Ayrı setFilters state
  • Ayrı useEffect sync
  • Manuel buildApiParams

Bu boilerplate kod tekrarı ve tutarsızlığa yol açıyordu.

Alternatifler

  • Reducer pattern — daha karmaşık, kısmi kapsama
  • Context — global state, gereksiz re-render riski
  • Mevcut durum (useUrlFilters direkt) — zaten bu

Not

Eski sayfalar (örn. users/page.tsx) hâlâ useUrlFilters direkt kullanıyor — migration tamamlanmamış. Yeni sayfalarda her zaman useListFilters kullan.