Skip to content

chore: add support for meeting events - WPB-26733#4980

Open
caldrian wants to merge 359 commits into
developfrom
feat/support-meeting-events-WPB-26733
Open

chore: add support for meeting events - WPB-26733#4980
caldrian wants to merge 359 commits into
developfrom
feat/support-meeting-events-WPB-26733

Conversation

@caldrian

@caldrian caldrian commented Jul 8, 2026

Copy link
Copy Markdown
Contributor
TaskWPB-26733 [iOS] Support new event types for Meetings

Issue

This PR adds code for decoding meeting.create, meeting.update, meeting.delete and conversation.create-meeting events.

Testing

Unit tests are added, but these changes can only be tested together with the meeting feature as a whole.


Checklist

  • Title contains a reference JIRA issue number like [WPB-XXX].
  • Description is filled and free of optional paragraphs.
  • Adds/updates automated tests.

UI accessibility checklist

If your PR includes UI changes, please utilize this checklist:

  • Make sure you use the API for UI elements that support large fonts.
  • All colors are taken from WireDesign.ColorTheme or constructed using WireDesign.BaseColorPalette.
  • New UI elements have Accessibility strings for VoiceOver.

caldrian and others added 30 commits July 1, 2026 16:01
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…:wireapp/wire-ios into chore/create-meetings-entities-WPB-20278
…versationsAPIV8.swift

Co-authored-by: John Nguyen <28632506+johnxnguyen@users.noreply.github.com>

Copilot AI left a comment

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.

Pull request overview

This PR adds end-to-end support for new Meeting update-event types across the networking and domain layers, so the client can decode meeting.create, meeting.update, and meeting.delete events and route them into the meeting repository/local storage processing pipeline.

Changes:

  • Added MeetingEvent / Meeting{Create,Update,Delete}Event models and wired meeting.* type recognition into UpdateEventType, UpdateEventDecodingProxy, and UpdateEvent.name.
  • Implemented meeting event processors in WireDomain and integrated them into UpdateEventProcessor and ClientSessionComponent.
  • Added unit tests and JSON fixtures for decoding and domain processing/local store behavior.

Reviewed changes

Copilot reviewed 38 out of 38 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
WireNetwork/Tests/WireNetworkTests/UpdateEvent/Resources/MeetingUpdate.json Adds a JSON fixture for meeting.update decoding tests.
WireNetwork/Tests/WireNetworkTests/UpdateEvent/Resources/MeetingDelete.json Adds a JSON fixture for meeting.delete decoding tests.
WireNetwork/Tests/WireNetworkTests/UpdateEvent/Resources/MeetingCreate.json Adds a JSON fixture for meeting.create decoding tests.
WireNetwork/Tests/WireNetworkTests/UpdateEvent/MeetingEventDecodingTests.swift Adds unit tests verifying decoding of meeting events into UpdateEvent.
WireNetwork/Sources/WireNetwork/Models/UpdateEvent/UpdateEvent+Name.swift Extends UpdateEvent.name to cover meeting event variants.
WireNetwork/Sources/WireNetwork/Models/UpdateEvent/UpdateEvent.swift Adds case meeting(MeetingEvent) to the public UpdateEvent model.
WireNetwork/Sources/WireNetwork/Models/UpdateEvent/MeetingEvent/MeetingUpdateEvent.swift Introduces the meeting-update event payload model.
WireNetwork/Sources/WireNetwork/Models/UpdateEvent/MeetingEvent/MeetingEvent.swift Introduces MeetingEvent enum for create/delete/update meeting events.
WireNetwork/Sources/WireNetwork/Models/UpdateEvent/MeetingEvent/MeetingDeleteEvent.swift Introduces the meeting-delete event payload model.
WireNetwork/Sources/WireNetwork/Models/UpdateEvent/MeetingEvent/MeetingCreateEvent.swift Introduces the meeting-create event payload model.
WireNetwork/Sources/WireNetwork/APIs/Rest/UpdateEventsAPI/UpdateEventType/UpdateEventType.swift Adds meeting.* classification into update-event type parsing.
WireNetwork/Sources/WireNetwork/APIs/Rest/UpdateEventsAPI/UpdateEventType/MeetingEventType.swift Adds the MeetingEventType enum to map string event types to cases.
WireNetwork/Sources/WireNetwork/APIs/Rest/UpdateEventsAPI/UpdateEventType/ConversationEventType.swift Minor formatting-only change.
WireNetwork/Sources/WireNetwork/APIs/Rest/UpdateEventsAPI/Event decoding/UpdateEventDecodingProxy+Meeting.swift Adds meeting-specific decoding routing into UpdateEventDecodingProxy.
WireNetwork/Sources/WireNetwork/APIs/Rest/UpdateEventsAPI/Event decoding/UpdateEventDecodingProxy.swift Wires .meeting into the main decoding switch.
WireNetwork/Sources/WireNetwork/APIs/Rest/UpdateEventsAPI/Event decoding/Meeting/MeetingUpdateEventDecoder.swift Adds a decoder for meeting update payloads.
WireNetwork/Sources/WireNetwork/APIs/Rest/UpdateEventsAPI/Event decoding/Meeting/MeetingEventCodingKeys.swift Adds coding keys for meeting event payload decoding.
WireNetwork/Sources/WireNetwork/APIs/Rest/UpdateEventsAPI/Event decoding/Meeting/MeetingDeleteEventDecoder.swift Adds a decoder for meeting delete payloads.
WireNetwork/Sources/WireNetwork/APIs/Rest/UpdateEventsAPI/Event decoding/Meeting/MeetingCreateEventDecoder.swift Adds a decoder for meeting create payloads.
WireDomain/Tests/WireDomainTests/LocalStores/MeetingLocalStoreTests.swift Adds persistence/local store tests for meeting storage and deletion behavior.
WireDomain/Tests/WireDomainTests/Event Processing/MeetingEventProcessor/MeetingUpdateEventProcessorTests.swift Adds unit tests for meeting-update event processing.
WireDomain/Tests/WireDomainTests/Event Processing/MeetingEventProcessor/MeetingDeleteEventProcessorTests.swift Adds unit tests for meeting-delete event processing.
WireDomain/Tests/WireDomainTests/Event Processing/MeetingEventProcessor/MeetingCreateEventProcessorTests.swift Adds unit tests for meeting-create event processing.
WireDomain/Sources/WireUpdateEventCoding/Models/StorableUpdateEvent.swift Extends storable update-event model to include meeting events.
WireDomain/Sources/WireUpdateEventCoding/Models/MeetingEvent/StorableMeetingUpdateEvent.swift Adds storable wrapper for meeting-update events.
WireDomain/Sources/WireUpdateEventCoding/Models/MeetingEvent/StorableMeetingEvent.swift Adds storable wrapper enum for meeting events.
WireDomain/Sources/WireUpdateEventCoding/Models/MeetingEvent/StorableMeetingDeleteEvent.swift Adds storable wrapper for meeting-delete events.
WireDomain/Sources/WireUpdateEventCoding/Models/MeetingEvent/StorableMeetingCreateEvent.swift Adds storable wrapper for meeting-create events.
WireDomain/Sources/WireDomain/Event Processing/UpdateEventProcessor.swift Routes meeting events through the domain-level update-event processor.
WireDomain/Sources/WireDomain/Event Processing/MeetingEventProcessor/Protocols/MeetingUpdateEventProcessorProtocol.swift Adds protocol for meeting-update event processing.
WireDomain/Sources/WireDomain/Event Processing/MeetingEventProcessor/Protocols/MeetingEventProcessorProtocol.swift Adds protocol for meeting-event processing dispatch.
WireDomain/Sources/WireDomain/Event Processing/MeetingEventProcessor/Protocols/MeetingDeleteEventProcessorProtocol.swift Adds protocol for meeting-delete event processing.
WireDomain/Sources/WireDomain/Event Processing/MeetingEventProcessor/Protocols/MeetingCreateEventProcessorProtocol.swift Adds protocol for meeting-create event processing.
WireDomain/Sources/WireDomain/Event Processing/MeetingEventProcessor/MeetingUpdateEventProcessor.swift Implements meeting-update processing via repository pull.
WireDomain/Sources/WireDomain/Event Processing/MeetingEventProcessor/MeetingEventProcessor.swift Implements dispatch over MeetingEvent to create/delete/update processors.
WireDomain/Sources/WireDomain/Event Processing/MeetingEventProcessor/MeetingDeleteEventProcessor.swift Implements meeting-delete processing via repository local delete.
WireDomain/Sources/WireDomain/Event Processing/MeetingEventProcessor/MeetingCreateEventProcessor.swift Implements meeting-create processing via repository pull.
WireDomain/Sources/WireDomain/Components/ClientSessionComponent.swift Wires meeting processors into the session’s event-processing graph.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@sonarqubecloud

Copy link
Copy Markdown

@caldrian
caldrian marked this pull request as draft July 20, 2026 13:41
@caldrian
caldrian marked this pull request as ready for review July 21, 2026 08:55
@caldrian
caldrian enabled auto-merge July 22, 2026 07:20

@jullianm jullianm left a comment

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.

Nice work! Do we need to handle these new meeting events in the NSE as well (i.e display a push notification when a new meeting is created) ?

@caldrian

Copy link
Copy Markdown
Contributor Author

Do we need to handle these new meeting events in the NSE as well (i.e display a push notification when a new meeting is created) ?

Thanks for the hint. User facing notifications will be added as part of a separate task.

// Meeting conversations arrive as a dedicated event type but carry
// the same payload as a regular conversation creation, with the
// meeting group type, so both decode into the same event.
case .create, .createMeeting:

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.

question: should we consider the API version for createMeeting event? "meeting" type conversation should be available only from the API v16

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.

For events we don't have versioning, if I'm not mistaken.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

That is correct, no api versions unfortunately. Which is also the reason why we have a separate createMeeting event because it will be ignored by earlier clients that don't understand how to parse it.

@caldrian
caldrian disabled auto-merge July 22, 2026 15:27

@johnxnguyen johnxnguyen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good, nice work

// Meeting conversations arrive as a dedicated event type but carry
// the same payload as a regular conversation creation, with the
// meeting group type, so both decode into the same event.
case .create, .createMeeting:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

That is correct, no api versions unfortunately. Which is also the reason why we have a separate createMeeting event because it will be ignored by earlier clients that don't understand how to parse it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants