mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
1. Updated the space selection UI 2. Paginate spaces after room creation 3. Pre-selected space creation defaults to space members access.
This commit is contained in:
@@ -41,17 +41,21 @@ class CreateRoomScreenViewModel: CreateRoomScreenViewModelType, CreateRoomScreen
|
||||
|
||||
var selectedSpace: SpaceServiceRoom?
|
||||
var canSelectSpace = false
|
||||
var selectedAccessType = CreateRoomScreenAccessType.private
|
||||
switch spaceSelectionMode {
|
||||
case .editableSpacesList:
|
||||
canSelectSpace = true
|
||||
case .preSelected(let value):
|
||||
selectedSpace = value
|
||||
if value.joinRule != .public {
|
||||
selectedAccessType = .spaceMembers
|
||||
}
|
||||
case .none:
|
||||
break
|
||||
}
|
||||
|
||||
let bindings = CreateRoomScreenViewStateBindings(roomTopic: "",
|
||||
selectedAccessType: .private,
|
||||
selectedAccessType: selectedAccessType,
|
||||
selectedSpace: selectedSpace)
|
||||
|
||||
super.init(initialViewState: CreateRoomScreenViewState(isSpace: isSpace,
|
||||
|
||||
@@ -234,13 +234,7 @@ struct CreateRoomScreen: View {
|
||||
context.showSpaceSelectionSheet = true
|
||||
})
|
||||
} else {
|
||||
ListRow(label: .avatar(title: L10n.screenCreateRoomSpaceSelectionNoSpaceTitle,
|
||||
description: L10n.screenCreateRoomSpaceSelectionNoSpaceDescription,
|
||||
icon: CompoundIcon(\.homeSolid, size: .small, relativeTo: .body)
|
||||
.foregroundColor(.compound.iconPrimary)
|
||||
.scaledFrame(size: 32)
|
||||
.background(.compound.bgSubtleSecondary)
|
||||
.clipAvatar(isSpace: true, size: 32)),
|
||||
ListRow(label: .plain(title: L10n.screenCreateRoomSpaceSelectionNoSpaceTitle),
|
||||
kind: .navigationLink {
|
||||
context.showSpaceSelectionSheet = true
|
||||
})
|
||||
|
||||
@@ -24,14 +24,7 @@ struct CreateRoomSpaceSelectionSheet: View {
|
||||
NavigationStack {
|
||||
List {
|
||||
Section {
|
||||
ListRow(label: .avatar(title: L10n.screenCreateRoomSpaceSelectionNoSpaceTitle,
|
||||
description: L10n.screenCreateRoomSpaceSelectionNoSpaceDescription,
|
||||
icon: CompoundIcon(\.homeSolid, size: .small, relativeTo: .body)
|
||||
.foregroundColor(.compound.iconPrimary)
|
||||
.scaledFrame(size: 32)
|
||||
.background(.compound.bgSubtleSecondary)
|
||||
.scaledFrame(size: 32)
|
||||
.clipAvatar(isSpace: true, size: 32)),
|
||||
ListRow(label: .plain(title: L10n.screenCreateRoomSpaceSelectionNoSpaceOption),
|
||||
kind: .selection(isSelected: context.selectedSpace == nil) {
|
||||
context.selectedSpace = nil
|
||||
dismiss()
|
||||
|
||||
@@ -93,4 +93,8 @@ final class SpaceScreenCoordinator: CoordinatorProtocol {
|
||||
func toPresentable() -> AnyView {
|
||||
AnyView(SpaceScreen(context: viewModel.context))
|
||||
}
|
||||
|
||||
func reset() {
|
||||
viewModel.reset()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,6 +170,10 @@ class SpaceScreenViewModel: SpaceScreenViewModelType, SpaceScreenViewModelProtoc
|
||||
state.joiningRoomIDs.removeAll()
|
||||
}
|
||||
|
||||
func reset() {
|
||||
Task { await spaceRoomListProxy.resetAndWaitForFullReload(timeout: .seconds(10)) }
|
||||
}
|
||||
|
||||
// MARK: - Private
|
||||
|
||||
private func createChildRoom() async {
|
||||
|
||||
@@ -14,4 +14,6 @@ protocol SpaceScreenViewModelProtocol {
|
||||
var context: SpaceScreenViewModelType.Context { get }
|
||||
|
||||
func stop()
|
||||
|
||||
func reset()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user