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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user