Skip to content

fix: add correct empty results screen for app - WPB-24393#4518

Open
caldrian wants to merge 23 commits intodevelopfrom
fix/apps-search-results-empty-screen-WPB-24393
Open

fix: add correct empty results screen for app - WPB-24393#4518
caldrian wants to merge 23 commits intodevelopfrom
fix/apps-search-results-empty-screen-WPB-24393

Conversation

@caldrian
Copy link
Copy Markdown
Contributor

@caldrian caldrian commented Mar 31, 2026

BugWPB-24393 [iOS] - Apps empty screen is wrong - Align with right design

Issue

We have EmptySearchResultsView.swift‎ which seems to be used for both, bots and users, for displaying an empty list as well as an empty search result.
For apps we need a different screen without icon, just text.

This PR adds a view which replaces the existing view in case apps are searched/listed.

Testing

Try to start a 1:1 conversation or add an app to an existing MLS conversation and observe that the empty screen is shown if no apps have been added or no app matches the search text.


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.

Comment on lines -111 to -114
var searchResults: SearchResultsViewController {
searchResultsViewController
}

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.

Deleted redundant computed property.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 31, 2026

Test Results

4 238 tests   4 211 ✅  6m 27s ⏱️
  544 suites     27 💤
    2 files        0 ❌

Results for commit c75ad13.

♻️ This comment has been updated with latest results.

Summary: workflow run #23889956887
Allure report (download zip): html-report-29000-fix_apps-search-results-empty-screen-WPB-24393

@datadog-wireapp
Copy link
Copy Markdown

⚠️ Tests

Fix all issues with Cursor

⚠️ Warnings

🧪 1 Test failed

testAppearance() from Wire-iOS-Tests.EmptyAppsSearchResultViewSnapshotTests   View in Datadog   (Fix with Cursor)
EmptyAppsSearchResultViewSnapshotTests.swift:69: XCTAssertNil failed: "Snapshot "DarkTheme" does not match reference.

@−
"file:///Users/admin/actions-runner/_work/wire-ios/wire-ios/wire-ios/Wire-iOS Tests/ReferenceImages/EmptyAppsSearchResultViewSnapshotTests/testAppearance.DarkTheme.png"
@+
"file:///Users/admin/actions-runner/_work/wire-ios/wire-ios/wire-ios/SnapshotResults/EmptyAppsSearchResultViewSnapshotTests/testAppearance.DarkTheme.png"

To configure output for a custom diff tool, use 'withSnapshotTesting'. For example:

    withSnapshotTesting(diffTool: .ksdiff) {
...

ℹ️ Info

No other issues found (see more)

❄️ No new flaky tests detected

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 7af9489 | Docs | Was this helpful? Give us feedback!

@caldrian caldrian changed the title fix: add correct empty results screen for app - WPB-24393 fix: add correct empty results screen for app - WPB-24393x Apr 1, 2026
@caldrian caldrian changed the title fix: add correct empty results screen for app - WPB-24393x fix: add correct empty results screen for app - WPB-24393 Apr 1, 2026
@caldrian caldrian enabled auto-merge April 1, 2026 07:53
@caldrian caldrian requested review from a team, Copilot, johnxnguyen and netbe and removed request for a team April 1, 2026 08:02
@caldrian caldrian requested review from a team, David-Henner, jullianm and samwyndham and removed request for a team, johnxnguyen, netbe and samwyndham April 1, 2026 08:02
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

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 addresses WPB-24393 by introducing a dedicated empty-state UI for Apps in the people/app picker flows, aligning the empty results screen with the updated design (text-only, no icon).

Changes:

  • Added a new EmptyAppsSearchResultView and switched the search UI to use it when the active group is Apps.
  • Updated EmptySearchResultsView / callers to treat the legacy empty-state as bots/services-oriented.
  • Added localization + snapshot coverage for the new empty apps view, and included a sizeable WireDataModel.xcodeproj restructuring.

Reviewed changes

Copilot reviewed 15 out of 16 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
wire-ios/Wire-iOS/Sources/UserInterface/StartUI/StartUI/StartUIViewController.swift Switches empty-state view depending on selected group (apps vs people/bots); minor refactors.
wire-ios/Wire-iOS/Sources/UserInterface/StartUI/Common/EmptySearchResultsView.swift Renames/remaps internal states to reflect bots/services-only usage.
wire-ios/Wire-iOS/Sources/UserInterface/SearchUI/EmptyAppsSearchResultView.swift New text-only empty-state view for apps.
wire-ios/Wire-iOS/Sources/UserInterface/AddContacts/AddParticipantsViewController.swift Uses the apps-specific empty-state when searching/adding apps.
wire-ios/Wire-iOS/Resources/Localization/Base.lproj/Localizable.strings Adds strings for the “no apps added yet” message.
wire-ios/Wire-iOS/Generated/Strings+Generated.swift Regenerates typed string accessors for new localization keys.
wire-ios/Wire-iOS.xcodeproj/project.pbxproj Adds new snapshot test file to the test target.
wire-ios/Wire-iOS Tests/EmptyAppsSearchResultViewSnapshotTests.swift Adds snapshot tests (light/dark) for the new empty apps view.
wire-ios/Wire-iOS Tests/ReferenceImages/... Adds reference images for the new snapshots (LFS).
wire-ios/Wire-iOS Tests/EmptySearchResultsViewTests.swift Updates tests to match renamed API (searchingForBots).
wire-ios/Wire-iOS Tests/AddParticipantsViewControllerSnapshotTests.swift Minor test setup cleanup (super calls removed).
wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj Migrates MLS/E2EIdentity tests to file-system synchronized groups; removes many explicit file refs/build files.
wire-ios-data-model/Tests/Source/E2EIdentity/E2EIVerificationStatusServiceTests.swift Makes test class final.
wire-ios-data-model/Tests/Source/E2EIdentity/E2EIServiceTests.swift Whitespace-only change.
wire-ios-data-model/Tests/MLS/MLSClientIdTests.swift Makes test class final.
Comments suppressed due to low confidence (2)

wire-ios/Wire-iOS/Sources/UserInterface/StartUI/StartUI/StartUIViewController.swift:27

  • StartUIViewController uses UIViewController, UISearchController, UINavigationController, etc., but the file no longer imports UIKit. Since UIKit isn’t re-exported anywhere in this repo, this will fail to compile unless a transitive module explicitly re-exports UIKit. Add import UIKit back (or ensure an explicit re-export exists).
import SwiftUI
import WireCommonComponents
import WireDesign
import WireFoundation
import WireMainNavigationUI
import WireMessagingAssembly
import WireMessagingDomain
import WireMessagingUI
import WireReusableUIComponents

wire-ios-data-model/WireDataModel.xcodeproj/project.pbxproj:3195

  • This PR includes a large refactor of WireDataModel.xcodeproj moving the MLS/E2EIdentity test files to file-system synchronized groups (and removing many explicit PBXFileReference/PBXBuildFile entries). This isn’t mentioned in the PR description and can easily affect which tests are compiled/run. Consider splitting these project-structure changes into a separate PR, or at least confirm that the WireDataModelTests target still includes the same test sources after the migration.
			fileSystemSynchronizedGroups = (
				594C4E382CCAAB9B00F13D03 /* AccountImageSource */,
				5968441A2F7BC89600833ACA /* MLS */,
				5968442E2F7BC8FF00833ACA /* E2EIdentity */,
				59B705A92EAA611F0075ACE1 /* Migration */,
				CB5273202D9C0FA000CF8099 /* Channels */,
				CB9615DC2D47B0E10016389E /* EntityValidation */,
				CBAE486D2DC5140300C62C4E /* WireCellsMessageAttachmentDraftEntity */,
				CBC41A252EB50889000769CE /* SchemaTests */,
			);

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

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Apr 2, 2026

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.

2 participants