Skip to content

feat: allow attendees to add guests to an event - #8719

Open
kesselb wants to merge 1 commit into
mainfrom
invitation-forwarding-by-attendee-ui
Open

feat: allow attendees to add guests to an event#8719
kesselb wants to merge 1 commit into
mainfrom
invitation-forwarding-by-attendee-ui

Conversation

@kesselb

@kesselb kesselb commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Needs nextcloud/server#63167

Organizers get a setting to let attendees of an event invite further people. Attendees can then add guests even though the event is otherwise read-only for them, and remove them again until the event is saved.

The server reports guests off the base instance only, so the option needs the dav attendee_guests capability and is hidden for recurring events.

🤖 AI (if applicable)

  • The content of this PR was partly or fully generated using AI

@kesselb kesselb self-assigned this Aug 11, 2026
@kesselb kesselb added the 3. to review Waiting for reviews label Aug 11, 2026
@kesselb kesselb added the enhancement New feature request label Aug 11, 2026
@kesselb
kesselb requested a review from tcitworld as a code owner August 11, 2026 19:27
@kesselb
kesselb requested a balanced review from Copilot and removed request for GVodyanov, SebastianKrupinski and tcitworld August 11, 2026 19:28
@codecov

codecov Bot commented Aug 11, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 73.33333% with 4 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/store/calendarObjectInstance.js 0.00% 3 Missing ⚠️
src/models/event.js 50.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds attendee-managed guest invitations, gated by the dependent server capability.

Changes:

  • Adds the organizer setting and event-property persistence.
  • Allows attendees to add and temporarily remove guests.
  • Adds capability and eligibility tests.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/components/Editor/Invitees/InviteesList.vue Enables guest management.
src/components/Editor/Invitees/InviteesListItem.vue Adds temporary guest removal.
src/mixins/EditorMixin.js Computes guest-invitation eligibility.
src/mixins/PropertyMixin.js Registers the setting icon.
src/models/event.js Maps the new event property.
src/store/calendarObjectInstance.js Updates the persisted property.
src/views/EditFull.vue Adds setting and guest controls.
src/views/EditSimple.vue Enables guest controls.
tests/javascript/unit/mixins/EditorMixin.test.js Tests eligibility rules.
tests/javascript/unit/models/event.test.js Updates model expectations.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +452 to +456
isForwardedByMe(attendee) {
// Not once the editor switched to viewing, because the guest reached
// the organizer by then and only they can remove an attendee
return this.canAddGuests
&& this.forwardedAttendees.includes(removeMailtoPrefix(attendee.uri))
Comment thread src/views/EditFull.vue
:value="invitationForwarding"
@update:value="updateInvitationForwarding" />
<PropertySelect
v-if="showAllowAttendeeGuests"
@ChristophWurst

Copy link
Copy Markdown
Member

Not sure about the approach tbh. Why do we need an additional "setting"/property and can not leverage the forwarding allowed condition?

Comment on lines 52 to 74
<InviteesListSearch
v-if="!isReadOnly && hasUserEmailAddress"
v-if="(!isReadOnly || canAddGuests) && hasUserEmailAddress"
:alreadyInvitedEmails="alreadyInvitedEmails"
:organizer="calendarObjectInstance.organizer"
@addAttendee="addAttendee" />
<OrganizerListItem
v-if="hasOrganizer"
:isReadOnly="isReadOnly"
:isSharedWithMe="isSharedWithMe"
:organizer="calendarObjectInstance.organizer"
:organizerSelection="organizerSelection"
:isViewedByOrganizer="isViewedByOrganizer"
@changeOrganizer="changeOrganizer" />
<InviteesListItem
v-for="invitee in limitedInviteesWithoutOrganizer"
:key="invitee.email"
:attendee="invitee"
:isReadOnly="isReadOnly"
:canRemove="isForwardedByMe(invitee)"
:organizerDisplayName="organizerDisplayName"
:members="invitee.members"
:isViewedByOrganizer="isViewedByOrganizer"
@removeAttendee="removeAttendee" />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wasn't able to test this, the ability to add a guest is not working:

Image
BEGIN:VEVENT
CREATED:20260817T025600Z
DTSTAMP:20260817T025715Z
LAST-MODIFIED:20260817T025715Z
SEQUENCE:3
UID:0c502dd7-9a7c-4488-8536-c4ba1de5db7e
DTSTART;TZID=Asia/Tashkent:20260820T100000
DTEND;TZID=Asia/Tashkent:20260820T110000
TRANSP:OPAQUE
STATUS:CONFIRMED
X-NC-INVITATION-FORWARDING:TRUE
SUMMARY:This is a test event
ATTENDEE;CN=user2@;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;ROLE=
 REQ-PARTICIPANT;RSVP=TRUE:mailto:user2@
ORGANIZER;CN=User One:mailto:user1@
END:VEVENT

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The option to add guests as attendee is only shown when the event contains X-NC-ALLOW-ATTENDEE-GUESTS: TRUE (which is part of nextcloud/server#63167).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I created the event with the server PR active, as user 1, then set the forwarding to yes, and logged in as user 2 to add an attendee, but was not able to do so.

I think those are the correct steps??

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a new option below forwarding:

image

Should probably switch the order (guests before invitation forwarding). The original plan was to connect it to the forwarding toggle. I'd switched to a own flag, because the default for forwarding is true (to keep the behavior unchanged for 3rdparty clients) and the flag for add guests as attendee should be off by default.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this is showing for me...

I am pretty sure I have the correct branches

image image image

Comment on lines +408 to +409
calendarObjectInstance.eventComponent.updatePropertyWithValue('X-NC-ALLOW-ATTENDEE-GUESTS', allowAttendeeGuests)
calendarObjectInstance.allowAttendeeGuests = allowAttendeeGuests

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be... "X-NC-INVITATION-FORWARDING"

Comment thread src/mixins/EditorMixin.js
Comment on lines +255 to +257
if (loadState('core', 'capabilities', {})?.dav?.attendee_guests !== true) {
return false
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You prefer to check against the server version?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, this is a check to see if the server supports the guests feature. Okay, now i understand.

Ummm I am in different to it, I don't think we use this anywhere else... so we can but I would change the flag to something self exploratory... supports_attendee_guests and the comment should reflect what we are doing

Organizers get a setting to let attendees of an event invite further people.
Attendees can then add guests even though the event is otherwise read-only for
them, and remove them again until the event is saved.

The server reports guests off the base instance only, so the option needs the
dav attendee_guests capability and is hidden for recurring events.

Assisted-by: ClaudeCode:claude-opus-5

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
@kesselb
kesselb force-pushed the invitation-forwarding-by-attendee-ui branch from 1eafe63 to 4dd461e Compare August 18, 2026 13:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3. to review Waiting for reviews enhancement New feature request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants