feat: 30 günlük havuz referansı (kalıcı erime) + 25 sektör, çoklu sektör seçimi ve sunucudan gelen tek kaynaklı liste

This commit is contained in:
2026-08-30 00:24:33 +03:00
parent 8ced4d73d5
commit fd78b6e7d9
9 changed files with 264 additions and 81 deletions
+27 -2
View File
@@ -3,6 +3,7 @@ import { parseWebsiteCapabilitiesDynamically } from '../services/webScraperServi
import { fetchLiveTenders, fetchTenderDetail, mergeUserState } from '../services/tenderApi';
import { restoreSession, clearSession, getStoredUser } from '../services/auth';
import { getAllUserData, setUserData, getPlan } from '../services/account';
import { SECTORS_LIST, INSTITUTION_TYPES_LIST } from '../data/constants';
const AppContext = createContext();
@@ -51,7 +52,26 @@ export const AppProvider = ({ children }) => {
const [selectedCity, setSelectedCity] = useState('');
const [selectedAlimTuru, setSelectedAlimTuru] = useState('');
const [selectedKurumTipi, setSelectedKurumTipi] = useState('');
const [selectedSektor, setSelectedSektor] = useState('');
// Çoklu sektör seçimi. Tek seçimlik eski API (selectedSektor) uyumluluk
// için korunur: dizinin ilk elemanını okur, yazınca diziyi tek elemana indirir.
const [selectedSektorler, setSelectedSektorler] = useState([]);
const selectedSektor = selectedSektorler[0] || '';
const setSelectedSektor = (v) => setSelectedSektorler(v ? [v] : []);
const toggleSektor = (sek) =>
setSelectedSektorler((prev) => (prev.includes(sek) ? prev.filter((s) => s !== sek) : [...prev, sek]));
// Sektör/kurum listeleri sunucudan gelir; sabit liste yalnızca yedektir.
const [sektorListesi, setSektorListesi] = useState(SECTORS_LIST);
const [kurumTipiListesi, setKurumTipiListesi] = useState(INSTITUTION_TYPES_LIST);
useEffect(() => {
fetch('/api/meta/filtreler')
.then((r) => r.json())
.then((d) => {
if (d?.sektorler?.length) setSektorListesi(d.sektorler);
if (d?.kurumTipleri?.length) setKurumTipiListesi(d.kurumTipleri);
})
.catch(() => {});
}, []);
const [onlyValidOnly, setOnlyValidOnly] = useState(true);
const [quickFilter, setQuickFilter] = useState('all');
@@ -447,7 +467,7 @@ export const AppProvider = ({ children }) => {
setSelectedCity('');
setSelectedAlimTuru('');
setSelectedKurumTipi('');
setSelectedSektor('');
setSelectedSektorler([]);
setQuickFilter('all');
};
@@ -480,6 +500,11 @@ export const AppProvider = ({ children }) => {
setSelectedKurumTipi,
selectedSektor,
setSelectedSektor,
selectedSektorler,
setSelectedSektorler,
toggleSektor,
sektorListesi,
kurumTipiListesi,
onlyValidOnly,
setOnlyValidOnly,
quickFilter,