Skip to content

Commit 07727fd

Browse files
committed
Add invites v17
1 parent 76e2ecf commit 07727fd

3 files changed

Lines changed: 16 additions & 11 deletions

File tree

src/components/managementservice/meetings/Meetings.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,12 @@ const MeetingsTable = () => {
202202
{
203203
accessorKey: 'startsAt',
204204
header: startsAtLabel(),
205+
// Coerce to Number — Postgres bigint columns come back as strings;
206+
// moment() would parse a numeric string as ISO and yield Invalid Date.
205207
Cell: ({ cell }) => {
206-
const v = cell.getValue<number>();
208+
const v = cell.getValue<number | string>();
207209

208-
return v ? moment(v).format('YYYY-MM-DD HH:mm') : '';
210+
return v ? moment(Number(v)).format('YYYY-MM-DD HH:mm') : '';
209211
}
210212
},
211213
{
@@ -268,8 +270,8 @@ const MeetingsTable = () => {
268270
setRoomId(m.roomId);
269271
setTitle(m.title ?? '');
270272
setDescription(m.description ?? '');
271-
setStartsAt(m.startsAt ? moment(m.startsAt) : null);
272-
setEndsAt(m.endsAt ? moment(m.endsAt) : null);
273+
setStartsAt(m.startsAt ? moment(Number(m.startsAt)) : null);
274+
setEndsAt(m.endsAt ? moment(Number(m.endsAt)) : null);
273275
setTimezone(m.timezone ?? browserTimezone());
274276
setLocale(m.locale ?? defaultLocale);
275277
const p = parseRrule(m.rrule);

src/components/managementservice/rooms/RoomMeetings.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,11 @@ const RoomMeetingsTable = (props: RoomProp) => {
179179
{
180180
accessorKey: 'startsAt',
181181
header: startsAtLabel(),
182+
// Postgres bigint serializes as string — coerce before moment() to avoid Invalid Date.
182183
Cell: ({ cell }) => {
183-
const v = cell.getValue<number>();
184+
const v = cell.getValue<number | string>();
184185

185-
return v ? moment(v).format('YYYY-MM-DD HH:mm') : '';
186+
return v ? moment(Number(v)).format('YYYY-MM-DD HH:mm') : '';
186187
}
187188
},
188189
{
@@ -243,8 +244,8 @@ const RoomMeetingsTable = (props: RoomProp) => {
243244
setId(m.id ?? 0);
244245
setTitle(m.title ?? '');
245246
setDescription(m.description ?? '');
246-
setStartsAt(m.startsAt ? moment(m.startsAt) : null);
247-
setEndsAt(m.endsAt ? moment(m.endsAt) : null);
247+
setStartsAt(m.startsAt ? moment(Number(m.startsAt)) : null);
248+
setEndsAt(m.endsAt ? moment(Number(m.endsAt)) : null);
248249
setTimezone(m.timezone ?? browserTimezone());
249250
setLocale(m.locale ?? defaultLocale);
250251
const p = parseRrule(m.rrule);

src/components/meetingsdialog/MeetingsDialog.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,17 @@ import {
2828

2929
const nextOccurrence = (m: Meeting): number => {
3030
const now = Date.now();
31+
// Coerce — Postgres bigint comes back as string; Date/rrule would misparse.
32+
const startsAt = Number(m.startsAt);
3133

32-
if (!m.rrule) return m.startsAt >= now ? m.startsAt : 0;
34+
if (!m.rrule) return startsAt >= now ? startsAt : 0;
3335
try {
34-
const rule = rrulestr(m.rrule, { dtstart: new Date(m.startsAt) });
36+
const rule = rrulestr(m.rrule, { dtstart: new Date(startsAt) });
3537
const next = rule.after(new Date(now), true);
3638

3739
return next ? next.getTime() : 0;
3840
} catch {
39-
return m.startsAt >= now ? m.startsAt : 0;
41+
return startsAt >= now ? startsAt : 0;
4042
}
4143
};
4244

0 commit comments

Comments
 (0)