fix: use calendarAddress/organizerCalendarAddress for scheduling, drop retired sendTo/replyTo #500

This commit is contained in:
Linus Rath
2026-07-07 23:18:05 +02:00
parent 29283282d5
commit c3a97de62f
6 changed files with 34 additions and 13 deletions
+4 -1
View File
@@ -285,7 +285,10 @@ describe('buildParticipantMap', () => {
expect(org!.roles).toEqual({ owner: true, attendee: true });
expect(org!.participationStatus).toBe('accepted');
expect(org!.scheduleAgent).toBe('server');
expect(org!.sendTo).toEqual({ imip: 'mailto:alice@example.com' });
// sendTo is retired in draft-ietf-calext-jscalendarbis; the scheduling
// address is carried by calendarAddress instead.
expect(org!.sendTo).toBeUndefined();
expect(org!.calendarAddress).toBe('mailto:alice@example.com');
expect(org!.expectReply).toBe(false);
const att0 = entries.find(p => p.email === 'bob@example.com');
+3 -2
View File
@@ -107,6 +107,9 @@ export function buildParticipantMap(
const generateId = () => generateUUID();
// calendarAddress is the scheduling address in draft-ietf-calext-jscalendarbis
// (implemented by Stalwart); the RFC 8984 sendTo property is retired there and
// stored as an inert JSPROP, so it is intentionally not sent.
participants[generateId()] = {
'@type': 'Participant',
name: organizer.name,
@@ -115,7 +118,6 @@ export function buildParticipantMap(
roles: { owner: true, attendee: true },
participationStatus: 'accepted',
scheduleAgent: 'server',
sendTo: { imip: `mailto:${organizer.email}` },
expectReply: false,
kind: 'individual',
};
@@ -129,7 +131,6 @@ export function buildParticipantMap(
roles: { attendee: true },
participationStatus: 'needs-action',
scheduleAgent: 'server',
sendTo: { imip: `mailto:${a.email}` },
expectReply: true,
kind: 'individual',
};