Skip to content

Commit f42ecda

Browse files
authored
fix: incorrect empty search state - WPB-23034 (#4274)
1 parent 8a7c922 commit f42ecda

File tree

4 files changed

+57
-28
lines changed

4 files changed

+57
-28
lines changed

WireMessaging/Sources/WireMessagingUI/Resources/Localization/en.lproj/Accessibility.strings

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
"conversation.wireCells.files.loadMore.title" = "Load more";
3333
"conversation.wireCells.files.noData.title" = "There are no files or folders yet";
3434
"conversation.wireCells.files.noData.message" = "You'll find all files and folders shared in this conversation here";
35+
"conversation.wireCells.files.noSearchResults.title" = "No results found";
36+
"conversation.wireCells.files.noSearchResults.message" = "Try adjusting your search.";
3537
"conversation.wireCells.files.pendingCells.title" = "Files are loading";
3638
"conversation.wireCells.files.pendingCells.message" = "Your documents and media files will be available here once we've uploaded all files and folders.";
3739
"conversation.wireCells.allFiles.noData.message" = "You'll find all files and folders shared across your conversations here.";

WireMessaging/Sources/WireMessagingUI/Resources/Localization/en.lproj/Localizable.strings

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@
140140
"conversation.wireCells.allFiles.noData.title" = "There are no files yet";
141141
"conversation.wireCells.allFiles.noData.message" = "For conversations that use shared Drive, you'll find all files here.";
142142
"conversation.wireCells.allFiles.noData.learnMore" = "Learn more";
143+
"conversation.wireCells.files.noSearchResults.title" = "No results found";
144+
"conversation.wireCells.files.noSearchResults.message" = "Try adjusting your search.";
143145
"conversation.wireCells.files.pendingCells.title" = "Files are loading";
144146
"conversation.wireCells.files.pendingCells.message" = "Your documents and media files will be available here once we've uploaded all files and folders.";
145147
"conversation.wireCells.files.error.title" = "Can't load files";

WireMessaging/Sources/WireMessagingUI/WireDrive/Components/Files/FilesInfoView.swift

Lines changed: 48 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ struct FilesInfoView: View {
2727

2828
enum Info: Equatable {
2929
case preparingFiles
30-
case noFilesFound(scope: Scope)
30+
case noFilesFound(scope: Scope, isSearch: Bool)
3131
case error(isConnectionError: Bool)
3232

3333
enum Scope: Equatable {
@@ -47,31 +47,40 @@ struct FilesInfoView: View {
4747
}
4848
}
4949

50-
func textForScope(_ scope: Scope) -> String {
51-
switch scope {
52-
case .allConversations: Strings.AllFiles.NoData.message
53-
case .oneConversation: Strings.Files.NoData.message
54-
case .recycleBin: Strings.RecycleBin.NoData.message
50+
func textFor(scope: Scope, isSearch: Bool) -> String {
51+
if isSearch {
52+
Strings.Files.NoSearchResults.message
53+
} else {
54+
switch scope {
55+
case .allConversations: Strings.AllFiles.NoData.message
56+
case .oneConversation: Strings.Files.NoData.message
57+
case .recycleBin: Strings.RecycleBin.NoData.message
58+
}
5559
}
5660
}
5761

58-
func accessibilityTextForScope(_ scope: Scope) -> String {
59-
switch scope {
60-
case .allConversations: Accessibility.AllFiles.NoData.message
61-
case .oneConversation: Accessibility.Files.NoData.message
62-
case .recycleBin: Accessibility.RecycleBin.NoData.message
62+
func accessibilityTextFor(scope: Scope, isSearch: Bool) -> String {
63+
if isSearch {
64+
Accessibility.Files.NoSearchResults.message
65+
} else {
66+
switch scope {
67+
case .allConversations: Accessibility.AllFiles.NoData.message
68+
case .oneConversation: Accessibility.Files.NoData.message
69+
case .recycleBin: Accessibility.RecycleBin.NoData.message
70+
}
6371
}
6472
}
6573

6674
var localizedStrings: (title: String, message: String) {
6775
switch self {
6876
case .preparingFiles:
6977
(Strings.Files.PendingCells.title, Strings.Files.PendingCells.message)
70-
case let .noFilesFound(scope):
78+
case let .noFilesFound(scope, isSearch):
7179
(
72-
scope == .oneConversation || scope == .recycleBin ?
80+
isSearch ? Strings.Files.NoSearchResults.title :
81+
scope == .oneConversation || scope == .recycleBin ?
7382
Strings.Files.NoData.title : Strings.AllFiles.NoData.title,
74-
textForScope(scope)
83+
textFor(scope: scope, isSearch: isSearch)
7584
)
7685
case let .error(isConnectionError):
7786
if isConnectionError {
@@ -86,10 +95,10 @@ struct FilesInfoView: View {
8695
switch self {
8796
case .preparingFiles:
8897
(Accessibility.Files.PendingCells.title, Accessibility.Files.PendingCells.message)
89-
case let .noFilesFound(scope):
98+
case let .noFilesFound(scope, isSearch):
9099
(
91100
Accessibility.Files.NoData.title,
92-
accessibilityTextForScope(scope)
101+
accessibilityTextFor(scope: scope, isSearch: isSearch)
93102
)
94103
case let .error(isConnectionError):
95104
if isConnectionError {
@@ -104,11 +113,18 @@ struct FilesInfoView: View {
104113
switch self {
105114
case .preparingFiles:
106115
("preparing-files-title", "preparing-files-message")
107-
case let .noFilesFound(scope):
108-
(
109-
"no-files-title",
110-
scope == .allConversations ? "no-files-all-conversations-message" : "no-files-message"
111-
)
116+
case let .noFilesFound(scope, isSearch):
117+
if isSearch {
118+
(
119+
"no-files-search-title",
120+
"no-files-search-message"
121+
)
122+
} else {
123+
(
124+
"no-files-title",
125+
scope == .allConversations ? "no-files-all-conversations-message" : "no-files-message"
126+
)
127+
}
112128
case .error:
113129
("error-title", "error-message")
114130
}
@@ -138,8 +154,10 @@ struct FilesInfoView: View {
138154
.accessibilityIdentifier(info.accessibilityIdentifiers.message)
139155

140156
switch info {
141-
case let .noFilesFound(scope):
142-
learnMoreLink(scope: scope)
157+
case let .noFilesFound(scope, isSearch):
158+
if !isSearch {
159+
learnMoreLink(scope: scope)
160+
}
143161
case .error:
144162
retryButton
145163
default:
@@ -194,15 +212,19 @@ struct FilesInfoView: View {
194212
}
195213

196214
#Preview("no files found - single conversation") {
197-
FilesInfoView(info: .noFilesFound(scope: .oneConversation))
215+
FilesInfoView(info: .noFilesFound(scope: .oneConversation, isSearch: false))
198216
}
199217

200218
#Preview("no files found - all conversations") {
201-
FilesInfoView(info: .noFilesFound(scope: .allConversations))
219+
FilesInfoView(info: .noFilesFound(scope: .allConversations, isSearch: false))
202220
}
203221

204222
#Preview("no files found - recycle bin") {
205-
FilesInfoView(info: .noFilesFound(scope: .recycleBin))
223+
FilesInfoView(info: .noFilesFound(scope: .recycleBin, isSearch: false))
224+
}
225+
226+
#Preview("no files found via search - all conversations") {
227+
FilesInfoView(info: .noFilesFound(scope: .allConversations, isSearch: true))
206228
}
207229

208230
struct LoadMoreView: View {

WireMessaging/Sources/WireMessagingUI/WireDrive/Components/Files/FilesViewProtocol.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,11 @@ extension FilesViewProtocol {
6565
@ViewBuilder private var listBackgroundView: some View {
6666
switch viewModel.state {
6767
case let .received(items) where items.isEmpty:
68-
FilesInfoView(info: .noFilesFound(
69-
scope: viewModel.isRecycleBin ? .recycleBin : isBrowsing ? .allConversations : .oneConversation)
68+
FilesInfoView(
69+
info: .noFilesFound(
70+
scope: viewModel.isRecycleBin ? .recycleBin : isBrowsing ? .allConversations : .oneConversation,
71+
isSearch: !viewModel.searchText.isEmpty
72+
)
7073
)
7174
case .pending:
7275
FilesInfoView(info: .preparingFiles)

0 commit comments

Comments
 (0)