mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-10-31 08:15:24 +00:00
Add a clear all button to recent searches
Lets users wipe their whole search history at once from the recent searches section header, as per the designs.
This commit is contained in:
@@ -52,6 +52,7 @@ enum SearchScreenViewAction: CustomStringConvertible {
|
||||
case selectRoom(roomID: String)
|
||||
case selectMessage(roomID: String, eventID: String)
|
||||
case removeBreadcrumb(SearchScreenBreadcrumb)
|
||||
case clearBreadcrumbs
|
||||
case reachedTop
|
||||
case reachedBottom
|
||||
case cancel
|
||||
@@ -63,6 +64,7 @@ enum SearchScreenViewAction: CustomStringConvertible {
|
||||
case .selectRoom(let roomID): "selectRoom(\(roomID))"
|
||||
case .selectMessage(let roomID, let eventID): "selectMessage(\(roomID), \(eventID))"
|
||||
case .removeBreadcrumb: "removeBreadcrumb"
|
||||
case .clearBreadcrumbs: "clearBreadcrumbs"
|
||||
case .reachedTop: "reachedTop"
|
||||
case .reachedBottom: "reachedBottom"
|
||||
case .cancel: "cancel"
|
||||
|
||||
@@ -149,6 +149,8 @@ class SearchScreenViewModel: SearchScreenViewModelType, SearchScreenViewModelPro
|
||||
actionsSubject.send(.presentRoom(roomID: roomID, eventID: eventID))
|
||||
case .removeBreadcrumb(let breadcrumb):
|
||||
removeBreadcrumb(breadcrumb)
|
||||
case .clearBreadcrumbs:
|
||||
userSettings.searchBreadcrumbs = []
|
||||
case .reachedTop:
|
||||
if state.bindings.searchMode == .rooms {
|
||||
updateVisibleRange(edge: .top)
|
||||
|
||||
@@ -209,8 +209,19 @@ struct SearchScreen: View {
|
||||
}
|
||||
}
|
||||
} header: {
|
||||
Text(UntranslatedL10n.screenSearchRecentSearches)
|
||||
.compoundListSectionHeader()
|
||||
HStack(spacing: 8) {
|
||||
Text(UntranslatedL10n.screenSearchRecentSearches)
|
||||
.compoundListSectionHeader()
|
||||
|
||||
Spacer()
|
||||
|
||||
// The compound text link style has no accent colour variant.
|
||||
Button { context.send(viewAction: .clearBreadcrumbs) } label: {
|
||||
Text(L10n.actionClearAll)
|
||||
.font(.compound.bodyMDSemibold)
|
||||
.foregroundStyle(.compound.textActionAccent)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.compoundList(.plain)
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4bc96637d784a679d6be590589758889a367355ee32bfe970a82e2f6079c3bbe
|
||||
size 107266
|
||||
oid sha256:8c8463b5471ab15009f661652b237cc61f540eea5c4c7d51d26e462487b52892
|
||||
size 109550
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:37dc8e32e88ead1940ae69f7b21426e0ec93136061fef5aa217962f8a2b3a9a8
|
||||
size 109477
|
||||
oid sha256:768478153a8dfe9d455fbb87269e79c3698c56cc3515ccb4b8c610ec91f204e6
|
||||
size 112054
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:316e278e53ff463ac5a232b4767a420b31c09cc2da2d22e302dccee9d36f6520
|
||||
size 61192
|
||||
oid sha256:34c519522df41c5b63319d85a14bea386321922e5e208988d258f2df07ad7578
|
||||
size 63101
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:437431e2bf9b05ebedb52638034bb367ab6990ec3ecdeb4d930b8a3d9078ed11
|
||||
size 63703
|
||||
oid sha256:cdc345436b48af82e9543daffc720db8d1c91bb10caf16e490eef4eecf2a4af5
|
||||
size 67108
|
||||
|
||||
@@ -162,6 +162,15 @@ struct SearchScreenViewModelTests {
|
||||
#expect(userSettings.searchBreadcrumbs.isEmpty)
|
||||
}
|
||||
|
||||
@Test
|
||||
func clearingBreadcrumbs() {
|
||||
userSettings.searchBreadcrumbs = [.query("Second"), .room(roomID: "2")]
|
||||
|
||||
context.send(viewAction: .clearBreadcrumbs)
|
||||
|
||||
#expect(userSettings.searchBreadcrumbs.isEmpty)
|
||||
}
|
||||
|
||||
@Test
|
||||
func breadcrumbsAreDisplayed() async throws {
|
||||
staticRoomListSubject.send([.mock(id: "2", name: "Second")])
|
||||
|
||||
Reference in New Issue
Block a user