Skip to content

Commit

Permalink
some rename on InviteUsers
Browse files Browse the repository at this point in the history
  • Loading branch information
Flavio Alescio committed Apr 17, 2023
1 parent 809b0ad commit a67b4aa
Show file tree
Hide file tree
Showing 10 changed files with 23 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ enum FormRowAccessory: View {
ProgressView()
case .selection(let isSelected):
Image(systemName: isSelected ? "checkmark.circle.fill" : "circle")
.font(.element.body)
.foregroundColor(isSelected ? .element.primaryContent : .element.tertiaryContent)
}
}
Expand Down Expand Up @@ -128,6 +129,10 @@ struct FormButtonStyles_Previews: PreviewProvider {
Text("Hello world")
}
.buttonStyle(FormButtonStyle())
Button { } label: {
Text("Selection")
}
.buttonStyle(FormButtonStyle(accessory: .selection(isSelected: false)))
}
.formSectionStyle()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ enum InviteUsersCoordinatorAction {

final class InviteUsersCoordinator: CoordinatorProtocol {
private let parameters: InviteUsersCoordinatorParameters
private var viewModel: InviteUsersViewModelProtocol
private let viewModel: InviteUsersViewModelProtocol
private let actionsSubject: PassthroughSubject<InviteUsersCoordinatorAction, Never> = .init()
private var cancellables: Set<AnyCancellable> = .init()

Expand Down
6 changes: 5 additions & 1 deletion ElementX/Sources/Screens/InviteUsers/InviteUsersModels.swift
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ enum InviteUsersViewModelAction {
struct InviteUsersViewState: BindableState {
var bindings = InviteUsersViewStateBindings()

var usersSection: SearchUsersSection = .init(type: .suggestions, users: [])
var usersSection: SearchUsersSection = .init(type: .empty, users: [])
var selectedUsers: [UserProfile] = []

var isSearching: Bool {
Expand All @@ -35,6 +35,10 @@ struct InviteUsersViewState: BindableState {
}

var scrollToLastID: String?

func isUserSelected(_ user: UserProfile) -> Bool {
selectedUsers.contains { $0.userID == user.userID }
}
}

struct InviteUsersViewStateBindings {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ class InviteUsersViewModel: InviteUsersViewModelType, InviteUsersViewModelProtoc
case .proceed:
break
case .tapUser(let user):
if state.selectedUsers.contains(where: { $0.userID == user.userID }) {
if state.isUserSelected(user) {
deselect(user)
} else {
select(user)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ struct InviteUsersScreen: View {
.alert(item: $context.alertInfo) { $0.alert }
}

// MARK: - Private

/// The content shown in the form when a search query has been entered.
@ViewBuilder
private var searchContent: some View {
Expand All @@ -64,10 +66,10 @@ struct InviteUsersScreen: View {
Section {
ForEach(context.viewState.usersSection.users, id: \.userID) { user in
Button { context.send(viewAction: .tapUser(user)) } label: {
SearchUsersCell(user: user,
UserProfileCell(user: user,
imageProvider: context.imageProvider)
}
.buttonStyle(FormButtonStyle(accessory: .selection(isSelected: context.viewState.selectedUsers.contains { $0.userID == user.userID })))
.buttonStyle(FormButtonStyle(accessory: .selection(isSelected: context.viewState.isUserSelected(user))))
}
} header: {
if let title = context.viewState.usersSection.type.title {
Expand Down Expand Up @@ -114,7 +116,7 @@ struct InviteUsersScreen: View {

// MARK: - Previews

struct InviteUsers_Previews: PreviewProvider {
struct InviteUsersScreen_Previews: PreviewProvider {
static let viewModel = {
let userSession = MockUserSession(clientProxy: MockClientProxy(userID: "@userid:example.com"),
mediaProvider: MockMediaProvider())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ struct InviteUsersSelectedItem: View {
}
}

struct SelectedInvitedUserItem_Previews: PreviewProvider {
struct InviteUsersSelectedItem_Previews: PreviewProvider {
static var previews: some View {
InviteUsersSelectedItem(user: .mockAlice, imageProvider: MockMediaProvider(), dismissAction: { })
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import SwiftUI

struct SearchUsersCell: View {
struct UserProfileCell: View {
let user: UserProfile
let imageProvider: ImageProviderProtocol?

Expand Down
2 changes: 1 addition & 1 deletion ElementX/Sources/Screens/StartChat/StartChatModels.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ enum StartChatViewModelAction {

struct StartChatViewState: BindableState {
var bindings = StartChatScreenViewStateBindings()
var usersSection: SearchUsersSection = .init(type: .suggestions, users: [])
var usersSection: SearchUsersSection = .init(type: .empty, users: [])

var isSearching: Bool {
!bindings.searchQuery.isEmpty
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ struct StartChatScreen: View {
Section {
ForEach(context.viewState.usersSection.users, id: \.userID) { user in
Button { context.send(viewAction: .selectUser(user)) } label: {
SearchUsersCell(user: user, imageProvider: context.imageProvider)
UserProfileCell(user: user, imageProvider: context.imageProvider)
}
.buttonStyle(FormButtonStyle())
}
Expand Down
4 changes: 2 additions & 2 deletions UnitTests/Sources/StartChatViewModelTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ class StartChatScreenViewModelTests: XCTestCase {

func testQueryShowingNoResults() async throws {
await search(query: "A")
XCTAssertEqual(context.viewState.usersSection.type, .suggestions)
XCTAssertEqual(context.viewState.usersSection.type, .empty)

await search(query: "AA")
XCTAssertEqual(context.viewState.usersSection.type, .suggestions)
XCTAssertEqual(context.viewState.usersSection.type, .empty)

await search(query: "AAA")
assertSearchResults(toBe: 0)
Expand Down

0 comments on commit a67b4aa

Please sign in to comment.