Wait for saved filter persistence before reporting success

This commit is contained in:
2026-09-06 13:38:08 +03:00
parent 65efd981c5
commit 2a9281c9a5
5 changed files with 61 additions and 31 deletions
+13 -14
View File
@@ -593,9 +593,6 @@ export const AppProvider = ({ children }) => {
}
}, [tenders]);
useEffect(() => {
if (veriSenkron) ilkYazmaDegil('saved_filters', savedFilters);
}, [savedFilters, veriSenkron]);
// (Sahte "online kullanıcı" rastgele sayacı kaldırıldı — canlı istatistikler
// gerçek /api/stats verisinden gelir.)
@@ -677,18 +674,20 @@ export const AppProvider = ({ children }) => {
return mutateTender(tenderId, {kanbanStatus:newStatus,atananPersonel:assignedUser ?? t?.atananPersonel ?? null,takipte:true});
};
const addSavedFilter = (newFilter) => {
const filterObj = {
id: 'sf-' + Date.now(),
user: userProfile.username,
...newFilter
};
setSavedFilters(prev => [filterObj, ...prev]);
};
const deleteSavedFilter = (id) => {
setSavedFilters(prev => prev.filter(f => f.id !== id));
const filterSaveLock=useRef(false);
const persistSavedFilters=async next=>{
if(!authUser||!veriSenkron){setSaveError('Hesap verileri yüklenmeden filtre kaydedilemez.');return false;}
if(filterSaveLock.current){setSaveError('Önceki filtre kaydı sürüyor.');return false;}
const session=getToken();filterSaveLock.current=true;setSavingCount(n=>n+1);setSaveError(null);
try{
await setUserData('saved_filters',next);
if(getToken()!==session)return false;
setSavedFilters(next);return true;
}catch(error){if(getToken()===session)setSaveError(error.message);return false;}
finally{filterSaveLock.current=false;setSavingCount(n=>n-1);}
};
const addSavedFilter = newFilter => persistSavedFilters([{...newFilter,id:'sf-'+crypto.randomUUID(),user:userProfile.username},...savedFilters]);
const deleteSavedFilter = id => persistSavedFilters(savedFilters.filter(filter=>filter.id!==id));
const clearAllFilters = () => {
setSearchQuery('');