Skip to content

WPB-26705: add meeting.create/update/delete lifecycle events#5330

Open
blackheaven wants to merge 10 commits into
developfrom
gdifolco/WPB-26705-meeting-events
Open

WPB-26705: add meeting.create/update/delete lifecycle events#5330
blackheaven wants to merge 10 commits into
developfrom
gdifolco/WPB-26705-meeting-events

Conversation

@blackheaven

Copy link
Copy Markdown
Contributor

https://wearezeta.atlassian.net/browse/WPB-26705

Checklist

  • Add a new entry in an appropriate subdirectory of changelog.d
  • Read and follow the PR guidelines

Add meeting lifecycle websocket notifications (meeting.create,
meeting.update, meeting.delete) emitted on every successful create,
update, and delete operation. Events are pushed to all local members
of the meeting's conversation via NotificationSubsystem.

- New Wire.API.Event.Meeting type with EventType enum and Event record
  serializing to {type, time, qualified_id}
- Golden tests for the new Event type
- MeetingsSubsystem.Interpreter emits events via pushMeetingEvent helper
- Unit tests verify event emission (and absence on failed operations)
- Integration tests await meeting.* notifications on create/update/delete
@blackheaven blackheaven requested review from a team as code owners July 9, 2026 16:13
@zebot zebot added the ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist label Jul 9, 2026
@battermann battermann requested a review from Copilot July 10, 2026 08:52

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

Adds a new meeting lifecycle event type to the public API and emits corresponding websocket notifications from the Meetings subsystem for create/update/delete operations, with unit + integration coverage and golden JSON fixtures.

Changes:

  • Introduce Wire.API.Event.Meeting (schema + JSON + golden fixtures) and expose it from wire-api.
  • Emit meeting.create, meeting.update, and meeting.delete notifications via NotificationSubsystem during meeting lifecycle operations.
  • Extend unit/integration tests and document the feature in the changelog.

Reviewed changes

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

Show a summary per file
File Description
libs/wire-subsystems/test/unit/Wire/MeetingsSubsystem/InterpreterSpec.hs Adds unit tests validating meeting lifecycle events are pushed (and not pushed on non-creator operations).
libs/wire-subsystems/src/Wire/MeetingsSubsystem/Interpreter.hs Emits meeting lifecycle push notifications on successful create/update/delete.
libs/wire-api/wire-api.cabal Exposes the new meeting event module and includes generated golden test module.
libs/wire-api/test/golden/testObject_Event_meeting_1.json Golden JSON for meeting.create event.
libs/wire-api/test/golden/testObject_Event_meeting_2.json Golden JSON for meeting.update event.
libs/wire-api/test/golden/testObject_Event_meeting_3.json Golden JSON for meeting.delete event.
libs/wire-api/test/golden/testObject_Event_meeting_4.json Additional golden JSON for meeting.create event.
libs/wire-api/test/golden/testObject_Event_meeting_5.json Additional golden JSON for meeting.update event.
libs/wire-api/test/golden/testObject_Event_meeting_6.json Additional golden JSON for meeting.delete event.
libs/wire-api/test/golden/Test/Wire/API/Golden/Generated/Event_meeting.hs Generated Haskell fixtures for meeting event golden tests.
libs/wire-api/test/golden/Test/Wire/API/Golden/Generated.hs Registers the new meeting event golden tests in the test suite.
libs/wire-api/src/Wire/API/Event/Meeting.hs Implements the new meeting lifecycle event type + schema/JSON.
integration/test/Test/Meetings.hs Updates integration tests to await new meeting lifecycle websocket notifications.
integration/test/Notifications.hs Adds websocket notification matchers for meeting lifecycle event types.
changelog.d/2-features/wpb-26705-meeting-events.md Documents the new meeting lifecycle websocket notifications.

Comment on lines +78 to +81
instance ToJSONObject Event where
toJSONObject e = case toJSON e of
Object o -> o
_ -> error "Wire.API.Event.Meeting.Event.toJSON did not produce an Object"

@battermann battermann 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.

Are events sent on meetings clean ups that run in the background?

Comment thread libs/wire-api/src/Wire/API/Event/Meeting.hs Outdated
Comment on lines 259 to 264

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.

send the event after successful deletion

--------------------------------------------------------------------------------
-- EventType

data EventType = MeetingCreate | MeetingUpdate | MeetingDelete

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 a new event type? Why not extend the conversation events with new cases?

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.

I have hesitated, given it's a distinct life-cycle, I can integrate it if you want

@blackheaven

Copy link
Copy Markdown
Contributor Author

Are events sent on meetings clean ups that run in the background?

No, they won't be shown in clients after 48h, while clean up worker remove them after 30 days, that would lead to client's confusion.

@blackheaven blackheaven requested a review from battermann July 10, 2026 11:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants