isolate imported calendars by account
This commit is contained in:
@@ -6,15 +6,24 @@ import { CalendarDays } from 'lucide-react';
|
||||
|
||||
export const TenderCalendar = () => {
|
||||
const now = useDeadlineClock();
|
||||
const { tenders, setActiveTenderDetail } = useApp();
|
||||
const { tenders, setActiveTenderDetail, authUser } = useApp();
|
||||
const today = istanbulDateKey(now);
|
||||
const [month,setMonth] = useState(today.slice(0,7));
|
||||
const [selectedDay, setSelectedDay] = useState(today);
|
||||
const [imported,setImported] = useState(() => {
|
||||
try { const saved = JSON.parse(sessionStorage.getItem('ihaleist_imported_calendar') || '[]'); return Array.isArray(saved) && saved.length <= 100 ? saved : []; }
|
||||
catch { return []; }
|
||||
}), [importError,setImportError] = useState('');
|
||||
React.useEffect(() => { try { sessionStorage.setItem('ihaleist_imported_calendar', JSON.stringify(imported)); } catch { /* private browsing can deny storage */ } }, [imported]);
|
||||
const calendarStorageKey = authUser?.email ? `ihaleist_imported_calendar:${encodeURIComponent(authUser.email.toLowerCase())}` : null;
|
||||
const [imported,setImported] = useState([]), [importError,setImportError] = useState('');
|
||||
const [loadedCalendarKey, setLoadedCalendarKey] = useState(null);
|
||||
React.useEffect(() => {
|
||||
if (!calendarStorageKey) { setImported([]); setLoadedCalendarKey(null); return; }
|
||||
let saved = null;
|
||||
try { saved = JSON.parse(sessionStorage.getItem(calendarStorageKey) || '[]'); } catch { saved = []; }
|
||||
setImported(Array.isArray(saved) && saved.length <= 100 ? saved : []);
|
||||
setLoadedCalendarKey(calendarStorageKey);
|
||||
}, [calendarStorageKey]);
|
||||
React.useEffect(() => {
|
||||
if (!loadedCalendarKey || loadedCalendarKey !== calendarStorageKey) return;
|
||||
try { sessionStorage.setItem(loadedCalendarKey, JSON.stringify(imported)); } catch { /* private browsing can deny storage */ }
|
||||
}, [imported, loadedCalendarKey, calendarStorageKey]);
|
||||
const allTenders = useMemo(() => [...tenders, ...imported], [tenders, imported]);
|
||||
const agenda=useMemo(()=>calendarAgenda(allTenders,now),[allTenders,now]);
|
||||
const daysList=calendarMonthDays(month).map(day=>({...day,count:agenda.days.get(day.key)?.length || 0}));
|
||||
|
||||
Reference in New Issue
Block a user