persist imported calendar events across reloads
This commit is contained in:
@@ -16,13 +16,13 @@ export const TenderCalendar = () => {
|
||||
React.useEffect(() => {
|
||||
if (!calendarStorageKey) { setImported([]); setLoadedCalendarKey(null); return; }
|
||||
let saved = null;
|
||||
try { saved = JSON.parse(sessionStorage.getItem(calendarStorageKey) || '[]'); } catch { saved = []; }
|
||||
try { saved = JSON.parse(localStorage.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 */ }
|
||||
try { localStorage.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]);
|
||||
@@ -65,7 +65,7 @@ export const TenderCalendar = () => {
|
||||
</label>
|
||||
<section className="border border-slate-200 rounded-xl bg-white p-4 space-y-2" aria-label="Harici takvim içe aktarma">
|
||||
<h2 className="text-sm font-bold">Harici takvimden içe aktar</h2>
|
||||
<p className="text-xs text-slate-600">Google veya Outlook’tan indirdiğiniz .ics dosyasını yalnız bu tarayıcı oturumunda görüntüler. Kaynak ihale kaydını değiştirmez.</p>
|
||||
<p className="text-xs text-slate-600">Google veya Outlook’tan indirdiğiniz .ics dosyası bu tarayıcıda hesabınıza özel saklanır; yenileme sonrası yeniden yüklenir. Kaynak ihale kaydını değiştirmez.</p>
|
||||
<input type="file" accept=".ics,text/calendar" aria-label="ICS takvim dosyası seç" onChange={async event=>{
|
||||
const file=event.target.files?.[0]; if(!file) return;
|
||||
try { const parsed=parseTenderICS(await file.text()); setImported(parsed); setImportError(''); }
|
||||
|
||||
Reference in New Issue
Block a user