Skip to content

feat: display all meeting occurrences - WPB-20278 - #5081

Merged
caldrian merged 14 commits into
developfrom
feat/display-recurring-meetings-WPB-20278
Jul 31, 2026
Merged

feat: display all meeting occurrences - WPB-20278#5081
caldrian merged 14 commits into
developfrom
feat/display-recurring-meetings-WPB-20278

Conversation

@caldrian

@caldrian caldrian commented Jul 30, 2026

Copy link
Copy Markdown
Contributor
TaskWPB-20278 [iOS] Fetching, storing and providing Meeting items

Issue

This PR fixes displaying meetings including occurrences.
Also the participants are now ordered correctly.

Testing

Create a repeating meeting and observe that the list of meetings now also shows the occurrences.


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 added 6 commits July 28, 2026 17:29
…ay-recurring-meetings-WPB-20278

# Conflicts:
#	WireCalling/Sources/WireCallingUI/Views/WireMeetings/MeetingsView/MeetingsView.swift
#	WireCalling/Sources/WireCallingUI/Views/WireMeetings/MeetingsView/MeetingsViewModel.swift
Copilot AI review requested due to automatic review settings July 30, 2026 13:26

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 updates the meetings feature to display recurring meetings as individual occurrence rows (starting from the beginning of the current day) and adjusts participant presentation so the self user and other members appear in a consistent display order.

Changes:

  • Introduces MeetingOccurrence and pagination logic to expand recurring meetings into occurrence rows and page over occurrences.
  • Updates meetings list UI/view models and grouping to operate on occurrences instead of meetings.
  • Extends MeetingMember with isSelfUser and updates member ordering + tests accordingly.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
WireDomain/Sources/WireDomain/Repositories/Meetings/MeetingLocalStore.swift Populates the new isSelfUser field when mapping conversation participants to meeting members.
WireCalling/Tests/WireCallingTests/WireMeetings/PresentationTests/Views/EditMeetingFormViewSnapshotTests.swift Updates snapshot fixtures for the expanded MeetingMember initializer.
WireCalling/Tests/WireCallingTests/WireMeetings/PresentationTests/MemberSelectionViewModelTests.swift Updates MeetingMember test fixtures for the new initializer fields.
WireCalling/Tests/WireCallingTests/WireMeetings/PresentationTests/MeetingsViewModelTests.swift Adjusts paging expectations and adds coverage for deleting a meeting removing all loaded occurrences.
WireCalling/Tests/WireCallingTests/WireMeetings/PresentationTests/MeetingFormViewModelTests.swift Adds coverage for editing recurring meetings that started in the past; updates time interval usage.
WireCalling/Tests/WireCallingTests/WireMeetings/DomainTests/UpdateMeetingUseCaseTests.swift Updates fixtures for the expanded MeetingMember initializer.
WireCalling/Tests/WireCallingTests/WireMeetings/DomainTests/FetchUpcomingMeetingsUseCaseTests.swift Updates use case tests to validate occurrence expansion, pagination, until-date cutoff, and page-size capping.
WireCalling/Tests/WireCallingTests/WireMeetings/DomainTests/CreateMeetingUseCaseTests.swift Updates fixtures for the expanded MeetingMember initializer.
WireCalling/Tests/WireCallingTests/WireMeetings/DataTests/MeetingRepositoryTests.swift Updates repository test fixtures for the expanded MeetingMember initializer.
WireCalling/Sources/WireCallingUI/Views/WireMeetings/MeetingsView/MeetingsViewModel.swift Switches in-memory state and paging from meetings to occurrences and updates delete behavior accordingly.
WireCalling/Sources/WireCallingUI/Views/WireMeetings/MeetingsView/MeetingsView.swift Renders grouped sections and rows using MeetingOccurrence while preserving edit/delete actions on the series.
WireCalling/Sources/WireCallingUI/Views/WireMeetings/MeetingsView/MeetingsGrouper.swift Updates grouping/sorting to operate on occurrences.
WireCalling/Sources/WireCallingUI/Views/WireMeetings/MeetingsView/Meeting/MemberAvatarsView.swift Implements ordering rules (self user first, then by name/handle) for avatar display.
WireCalling/Sources/WireCallingUI/Views/WireMeetings/MeetingsView/Meeting/MeetingRow.swift Updates row rendering to be occurrence-based and delegates member ordering to MemberAvatarsView.
WireCalling/Sources/WireCallingUI/Views/WireMeetings/MeetingForm/MemberSelection/MemberSelectionView.swift Updates local member fixture helper for the new MeetingMember initializer fields.
WireCalling/Sources/WireCallingUI/Views/WireMeetings/MeetingForm/MeetingFormViewModel.swift Adjusts edit-mode behavior for past recurring meetings to use the next editable occurrence time.
WireCalling/Sources/WireCallingUI/Views/WireMeetings/MeetingForm/MeetingFormView.swift Updates local member fixture helper for the new MeetingMember initializer fields.
WireCalling/Sources/WireCallingDomain/WireMeetings/UseCases/MeetingOccurrencePaginator.swift Adds an occurrence expansion/pagination implementation for recurring meetings.
WireCalling/Sources/WireCallingDomain/WireMeetings/UseCases/FetchUpcomingMeetingsUseCase.swift Changes “upcoming meetings” to compute and page over occurrence rows (and caps page size).
WireCalling/Sources/WireCallingDomain/WireMeetings/Protocols/FetchUpcomingMeetingsUseCaseProtocol.swift Updates documentation to reflect occurrence-based fetching semantics.
WireCalling/Sources/WireCallingDomain/WireMeetings/Model/PaginatedGroupedMeetings.swift Switches pagination container to occurrences while keeping a derived meetings view for compatibility.
WireCalling/Sources/WireCallingDomain/WireMeetings/Model/MeetingOccurrence.swift Introduces the occurrence model + ID for stable list identity.
WireCalling/Sources/WireCallingDomain/WireMeetings/Model/MeetingMember.swift Adds isSelfUser to support self-first ordering and updates initializer contract.
wire-ios/Wire-iOS/Sources/UserInterface/Calling/Meetings/WireMeetingsMemberRepository.swift Updates meeting member search mapping to satisfy the new MeetingMember initializer.
wire-ios-sync-engine/Source/UserSession/ZMUserSession/ZMUserSession.swift Adjusts MLS recovery loop’s application-state check to run on the MainActor.

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

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Test Results – batch 0

  2 files  160 suites   21s ⏱️
714 tests 714 ✅ 0 💤 0 ❌
715 runs  715 ✅ 0 💤 0 ❌

Results for commit 5d4c255.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Test Results – batch 1

3 071 tests   3 044 ✅  3m 43s ⏱️
  438 suites     27 💤
    2 files        0 ❌

Results for commit 5d4c255.

♻️ This comment has been updated with latest results.

@caldrian
caldrian requested review from a team, KaterinaWire, acv-w and jullianm and removed request for a team July 31, 2026 07:14
Comment thread WireCalling/Sources/WireCallingDomain/WireMeetings/Model/MeetingOccurrence.swift Outdated
@KaterinaWire

KaterinaWire commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

@caldrian There is an issue with displaying "Attending" and "Join" button. We should show one of this label/button just per one recurring meeting (current day), not for all of them. Maybe this is actually an issue with "Attending" and "Join" buttons. what do you think?

@caldrian

Copy link
Copy Markdown
Contributor Author

@caldrian There is an issue with displaying "Attending" and "Join" button. We should show one of this label/button just per one recurring meeting (current day), not for all of them. Maybe this is actually an issue with "Attending" and "Join" buttons. what do you think?

I provided a fix for the attending label being shown. The join button is not implemented yet I think. @KaterinaWire

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

LGTM

@caldrian
caldrian added this pull request to the merge queue Jul 31, 2026
Merged via the queue into develop with commit e6cfe6e Jul 31, 2026
14 checks passed
@caldrian
caldrian deleted the feat/display-recurring-meetings-WPB-20278 branch July 31, 2026 14:52
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.

4 participants