fix: provider icon in event modal, hide synology URL, recurring event display

- Show provider icon (Google/Apple/Outlook/Synology) left of calendar color dot
- Hide URL field when Synology calendar is selected (not supported)
- Force refresh after creating recurring events so all instances show immediately
  (previously only the first occurrence appeared until next sync cycle)

v1.74.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
mARTin 2026-03-25 11:42:26 +01:00
parent cfa4fb023c
commit 8d8ba73d17
3 changed files with 8 additions and 7 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "my-weekly-todo-list", "name": "my-weekly-todo-list",
"version": "1.74.0", "version": "1.74.1",
"description": "A web-based weekly task management application that organizes to-dos and calendar events in a single, intuitive weekly view", "description": "A web-based weekly task management application that organizes to-dos and calendar events in a single, intuitive weekly view",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {

View File

@ -156,7 +156,7 @@ export default function CalendarEventModal({
}, []); }, []);
const selectedCal = availableCalendars.find((c: any) => c.id === calendarId); const selectedCal = availableCalendars.find((c: any) => c.id === calendarId);
const supportsURL = selectedCal && (selectedCal.provider !== 'google' && selectedCal.provider !== 'outlook'); const supportsURL = selectedCal && (selectedCal.provider !== 'google' && selectedCal.provider !== 'outlook' && selectedCal.provider !== 'synology');
const supportsAttachments = selectedCal && (selectedCal.provider === 'apple' || selectedCal.provider === 'synology'); const supportsAttachments = selectedCal && (selectedCal.provider === 'apple' || selectedCal.provider === 'synology');
const getProviderIcon = (provider: string) => { const getProviderIcon = (provider: string) => {
@ -375,8 +375,9 @@ export default function CalendarEventModal({
{/* Calendar selector */} {/* Calendar selector */}
<div style={{ ...iconRow, padding: '4px 0' }}> <div style={{ ...iconRow, padding: '4px 0' }}>
<div style={iconCol}> <div style={{ ...iconCol, gap: '4px', width: 'auto', display: 'flex', alignItems: 'center' }}>
<div style={{ width: '10px', height: '10px', borderRadius: '50%', background: calColor }} /> <span style={{ fontSize: '0.8rem', opacity: 0.7 }}>{selectedCal ? getProviderIcon(selectedCal.provider) : null}</span>
<div style={{ width: '10px', height: '10px', borderRadius: '50%', background: calColor, flexShrink: 0 }} />
</div> </div>
<div ref={calendarSelectorRef} style={{ ...fieldCol, position: 'relative' }}> <div ref={calendarSelectorRef} style={{ ...fieldCol, position: 'relative' }}>
<button <button

View File

@ -2689,9 +2689,9 @@ export default function WeeklyView() {
return [...prev, frontendEvent]; return [...prev, frontendEvent];
}); });
} }
// Re-read from cache to get the canonical version // Re-read events - force refresh for recurring events so all instances expand
// The backend already cached the event via upsertCachedEvent const isRecurring = !!(eventData.recurrence && eventData.recurrence !== 'none');
await fetchCalendarEvents(false); await fetchCalendarEvents(isRecurring);
} catch (error: any) { } catch (error: any) {
console.error("Error saving event:", error); console.error("Error saving event:", error);
if (error.name === "AbortError") { if (error.name === "AbortError") {