Join room by address (#3840)

* Implemented join room by address

* improved the text field typing

* some improvements to how the text is edited

* remove navigation link

* moved room directory search to the start chat flow

* updated preview tests

* added unit tests and improved the code

* updated strings

* some pr suggestions:

- moving the file
- changing the name of the action
- reintroduce the debounce text queries
- add comments

* renamed the auth text field style to Element

updated tests
This commit is contained in:
Mauro
2025-02-28 13:35:15 +01:00
committed by GitHub
parent 2b58f57483
commit 7f6ea1c2ae
54 changed files with 611 additions and 340 deletions
@@ -25,7 +25,6 @@ enum HomeScreenCoordinatorAction {
case presentEncryptionResetScreen
case presentStartChatScreen
case presentGlobalSearch
case presentRoomDirectorySearch
case logoutWithoutConfirmation
case logout
}
@@ -75,8 +74,6 @@ final class HomeScreenCoordinator: CoordinatorProtocol {
actionsSubject.send(.presentStartChatScreen)
case .presentGlobalSearch:
actionsSubject.send(.presentGlobalSearch)
case .presentRoomDirectorySearch:
actionsSubject.send(.presentRoomDirectorySearch)
case .logoutWithoutConfirmation:
actionsSubject.send(.logoutWithoutConfirmation)
case .logout:
@@ -20,7 +20,6 @@ enum HomeScreenViewModelAction: Equatable {
case presentFeedbackScreen
case presentStartChatScreen
case presentGlobalSearch
case presentRoomDirectorySearch
case logoutWithoutConfirmation
case logout
}
@@ -41,7 +40,6 @@ enum HomeScreenViewAction {
case markRoomAsUnread(roomIdentifier: String)
case markRoomAsRead(roomIdentifier: String)
case markRoomAsFavourite(roomIdentifier: String, isFavourite: Bool)
case selectRoomDirectorySearch
case acceptInvite(roomIdentifier: String)
case declineInvite(roomIdentifier: String)
@@ -97,9 +95,7 @@ struct HomeScreenViewState: BindableState {
var roomListMode: HomeScreenRoomListMode = .skeletons
var hasPendingInvitations = false
var isRoomDirectorySearchEnabled = false
var selectedRoomID: String?
var visibleRooms: [HomeScreenRoom] {
@@ -94,10 +94,6 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol
.sink { [weak self] _ in self?.updateRooms() }
.store(in: &cancellables)
appSettings.$publicSearchEnabled
.weakAssign(to: \.state.isRoomDirectorySearchEnabled, on: self)
.store(in: &cancellables)
appSettings.$seenInvites
.removeDuplicates()
.sink { [weak self] _ in
@@ -194,8 +190,6 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol
Task {
await markRoomAsFavourite(roomIdentifier, isFavourite: isFavourite)
}
case .selectRoomDirectorySearch:
actionsSubject.send(.presentRoomDirectorySearch)
case .acceptInvite(let roomIdentifier):
Task {
await acceptInvite(roomID: roomIdentifier)
@@ -16,10 +16,6 @@ struct HomeScreenRoomList: View {
// avoids glitches when focusing the search bar
if !context.viewState.shouldHideRoomList {
content
} else if context.viewState.isRoomDirectorySearchEnabled {
RoomDirectorySearchView {
context.send(viewAction: .selectRoomDirectorySearch)
}
}
}
@@ -1,28 +0,0 @@
//
// Copyright 2024 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
// Please see LICENSE files in the repository root for full details.
//
import Compound
import SwiftUI
struct RoomDirectorySearchView: View {
let onTap: () -> Void
var body: some View {
Button(action: onTap) {
Label(L10n.screenRoomlistRoomDirectoryButtonTitle, icon: \.listBulleted)
}
.buttonStyle(.compound(.super))
.padding(.horizontal, 16)
.padding(.vertical, 8)
}
}
struct RoomDirectorySearchView_Previews: PreviewProvider, TestablePreview {
static var previews: some View {
RoomDirectorySearchView { }
}
}