fix(calendar): use r.Route subrouter to avoid chi path ambiguity with /channels/events/{eventID}

This commit is contained in:
2026-07-09 14:43:34 -04:00
parent 9a6f15662b
commit af913b9923
4 changed files with 14 additions and 3 deletions
+7
View File
@@ -243,6 +243,13 @@ func main() {
notification.NewHandler(database.DB, logger).RegisterRoutes(r) notification.NewHandler(database.DB, logger).RegisterRoutes(r)
}) })
// Calendar events
calHandler := channel.NewHandler(database.DB, permissionsChecker)
r.Route("/channels/{channelID}/events", func(r chi.Router) {
r.Get("/", calHandler.ListEvents)
r.Post("/", calHandler.CreateEvent)
})
// Push notifications // Push notifications
pushHandler.RegisterRoutes(r) pushHandler.RegisterRoutes(r)
+1 -1
View File
@@ -39,7 +39,7 @@ type createEventRequest struct {
Color *string `json:"color"` Color *string `json:"color"`
} }
func (h *Handler) registerCalendarRoutes(r chi.Router) { func (h *Handler) RegisterCalendarRoutes(r chi.Router) {
r.Get("/{channelID}/events", h.ListEvents) r.Get("/{channelID}/events", h.ListEvents)
r.Post("/{channelID}/events", h.CreateEvent) r.Post("/{channelID}/events", h.CreateEvent)
r.Patch("/events/{eventID}", h.UpdateEvent) r.Patch("/events/{eventID}", h.UpdateEvent)
+1 -1
View File
@@ -31,7 +31,7 @@ func (h *Handler) RegisterRoutes(r chi.Router) {
r.Get("/{channelID}/threads", h.ListThreads) r.Get("/{channelID}/threads", h.ListThreads)
r.Patch("/threads/{threadID}", h.UpdateThread) r.Patch("/threads/{threadID}", h.UpdateThread)
h.registerForumRoutes(r) h.registerForumRoutes(r)
h.registerCalendarRoutes(r) h.RegisterCalendarRoutes(r)
h.registerDocRoutes(r) h.registerDocRoutes(r)
h.registerListRoutes(r) h.registerListRoutes(r)
h.registerOverrideRoutes(r) h.registerOverrideRoutes(r)
+5 -1
View File
@@ -49,7 +49,11 @@ export function CalendarView({ channelId, channelName }: CalendarViewProps) {
const to = `${date.getFullYear()}-${String(date.getMonth() + 2).padStart(2, '0')}-01T00:00:00Z`; const to = `${date.getFullYear()}-${String(date.getMonth() + 2).padStart(2, '0')}-01T00:00:00Z`;
setLoading(true); setLoading(true);
api.get<CalendarEvent[]>(`/channels/${channelId}/events?from=${encodeURIComponent(from)}&to=${encodeURIComponent(to)}`) api.get<CalendarEvent[]>(`/channels/${channelId}/events?from=${encodeURIComponent(from)}&to=${encodeURIComponent(to)}`)
.then((data) => setEvents(Array.isArray(data) ? data : [])) .then((data) => {
console.log('[calendar] loaded', data?.length, 'events for channel', channelId);
setEvents(Array.isArray(data) ? data : []);
})
.catch((err) => console.error('[calendar] fetch error:', err))
.finally(() => setLoading(false)); .finally(() => setLoading(false));
}, [channelId, date]); }, [channelId, date]);