-
Notifications
You must be signed in to change notification settings - Fork 0
Multi-value property support (ATTENDEE, CATEGORIES) #2
Copy link
Copy link
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Problem
Properties like ATTENDEE and CATEGORIES can have multiple values, but current implementation only handles single string values.
Example
BEGIN:VEVENT
ATTENDEE;CN=Alice:mailto:alice@example.com
ATTENDEE;CN=Bob:mailto:bob@example.com
ATTENDEE;CN=Charlie:mailto:charlie@example.com
CATEGORIES:MEETING,WORK,IMPORTANT
END:VEVENTCurrent Behavior
// Only updates the first ATTENDEE
updateFields(event, {
'ATTENDEE': 'mailto:newperson@example.com'
});Desired Behavior
// Support array of values
updateFields(event, {
'ATTENDEE': [
'mailto:alice@example.com',
'mailto:bob@example.com'
],
'CATEGORIES': ['MEETING', 'WORK']
});Implementation Considerations
- Need to detect multi-value properties
- Handle both single string and array inputs
- Preserve property parameters (CN, ROLE, etc. for ATTENDEE)
- Stay true to field-agnostic philosophy
Workaround
Use ical.js directly for multi-value properties:
import ICAL from 'ical.js';
const component = new ICAL.Component(ICAL.parse(event.data));
const vevent = component.getFirstSubcomponent('vevent');
// Add multiple attendees
const attendees = [
'mailto:alice@example.com',
'mailto:bob@example.com'
];
// Remove existing
vevent.removeAllProperties('attendee');
// Add new ones
attendees.forEach(email => {
vevent.addPropertyWithValue('attendee', email);
});
// Use tsdav-utils for other fields
const updated = updateFields(component.toString(), {
'SUMMARY': 'Team Meeting'
});Related
- RFC 5545 Section 3.8.4.1 (ATTENDEE)
- RFC 5545 Section 3.8.1.2 (CATEGORIES)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request