Skip to content

feat: fetch team apps and collaborators - WPB-28430 - #5228

Open
ikotarac wants to merge 3 commits into
developfrom
feat/team-apps-collaborators
Open

ikotarac wants to merge 3 commits into
developfrom
feat/team-apps-collaborators

Conversation

@ikotarac

@ikotarac ikotarac commented Sep 14, 2026

Copy link
Copy Markdown
TaskWPB-28430 Add apps and collaborators to iOS app

Issue

  • clients are not able to show external apps to add them to conversations. External apps are returned by backend call /teams/:tid/collaborators
  • collaborators can potentially also contain regular users in the future, not only apps
  • internal apps are currently returned by /teams/:tid/members which will change because treating apps as team members incorrectly contributes to used seat count, that's why we need to add call to /teams/:tid/apps to fetch internal apps as well

This is a diagram of how different endpoints return different schemas, and how they all map to apps and people (regular users) in the end.

Screenshot 2026-09-14 at 15 08 18

Testing

I have tested it on staging backend using a testing teams with both own apps and external apps added.

External apps flow is unlocked on dev environment of teams: wire-teams-dev.zinfra.io (uses staging version of backend and dev version of wire teams).

Simulator.Screen.Recording.-.iPhone.17.Pro.-.2026-09-11.at.11.24.06.mov

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.

ikotarac and others added 3 commits August 31, 2026 16:57
listAppsAndCollaborators() (formerly listAllAppsAndCollaboratorApps())
resolved each team collaborator's profile via usersAPI.getUsers to tell
apps apart from humans, but then silently dropped every non-app profile
instead of surfacing it. Human collaborators (e.g. external users with
team permissions who aren't full team members) never appeared anywhere
in the app.

- SearchTask: split resolved collaborator profiles by `.type` instead of
  dropping non-apps; broaden the guard so the fetch also runs for
  empty-query `.contacts`/`.teamMembers` requests (previously `.apps`
  only), gating which bucket(s) get merged by the requested options so
  behavior for `.apps`-only and non-empty-query searches is unchanged.
- SearchResult: add a `collaborators` bucket and a
  `union(withCollaboratorsResult:)` merge function that dedupes by
  remoteIdentifier against contacts/teamMembers/collaborators already
  present.
- SearchResultsViewController: fold `collaborators` into the same
  contacts/team-members section as regular contacts, never through the
  apps-specific section controller.
- Tests: extend the apps/collaborators SearchTask test with a non-app
  collaborator fixture, add coverage for the new collaborators bucket
  and its dedup against existing team members, and add a regression
  test asserting the `.create` (new-conversation) flow never shows the
  apps group selector.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…rators subroutes. don't use apps that appear as team members anymore. show apps in contact picker and in add participant picker.
@ikotarac ikotarac changed the title feat: fetch team apps and collaborators [WPB-28430] feat: fetch team apps and collaborators - WPB-28430 Sep 14, 2026
@github-actions

github-actions Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Test Results

3 097 tests   3 070 ✅  3m 50s ⏱️
  437 suites     27 💤
    2 files        0 ❌

Results for commit 9f6d367.

Summary: workflow run #34847869762
Allure report (download zip): html-report-33385-feat_team-apps-collaborators

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.

1 participant