Implement new space selector bottom sheet (#6518)

* Delight: Edit layout experiment #6079
This commit is contained in:
Gil Eluard
2022-08-05 13:39:45 +02:00
committed by GitHub
parent e39982a555
commit 1a2e6fdb89
47 changed files with 1705 additions and 295 deletions
@@ -40,7 +40,7 @@ final class SpaceCreationPostProcessCoordinator: Coordinator, Presentable {
init(parameters: SpaceCreationPostProcessCoordinatorParameters) {
self.parameters = parameters
let viewModel = SpaceCreationPostProcessViewModel.makeSpaceCreationPostProcessViewModel(spaceCreationPostProcessService: SpaceCreationPostProcessService(session: parameters.session, creationParams: parameters.creationParams))
let viewModel = SpaceCreationPostProcessViewModel.makeSpaceCreationPostProcessViewModel(spaceCreationPostProcessService: SpaceCreationPostProcessService(session: parameters.session, parentSpaceId: parameters.parentSpaceId, creationParams: parameters.creationParams))
let view = SpaceCreationPostProcess(viewModel: viewModel.context)
.addDependency(AvatarService.instantiate(mediaManager: parameters.session.mediaManager))
spaceCreationPostProcessViewModel = viewModel
@@ -20,5 +20,6 @@ import Foundation
struct SpaceCreationPostProcessCoordinatorParameters {
let session: MXSession
let parentSpaceId: String?
let creationParams: SpaceCreationParameters
}
@@ -27,6 +27,7 @@ class SpaceCreationPostProcessService: SpaceCreationPostProcessServiceProtocol {
// MARK: Private
private let session: MXSession
private let parentSpaceId: String?
private let creationParams: SpaceCreationParameters
private var tasks: [SpaceCreationPostProcessTask] = []
@@ -66,8 +67,9 @@ class SpaceCreationPostProcessService: SpaceCreationPostProcessServiceProtocol {
// MARK: - Setup
init(session: MXSession, creationParams: SpaceCreationParameters) {
init(session: MXSession, parentSpaceId: String?, creationParams: SpaceCreationParameters) {
self.session = session
self.parentSpaceId = parentSpaceId
self.creationParams = creationParams
self.tasks = Self.tasks(with: creationParams)
self.tasksSubject = CurrentValueSubject(tasks)
@@ -168,13 +170,25 @@ class SpaceCreationPostProcessService: SpaceCreationPostProcessServiceProtocol {
let userIdInvites = creationParams.inviteType == .userId ? creationParams.userIdInvites : []
session.spaceService.createSpace(withName: creationParams.name, topic: creationParams.topic, isPublic: creationParams.isPublic, aliasLocalPart: alias, inviteArray: userIdInvites) { [weak self] response in
guard let self = self else { return }
if response.isFailure {
self.updateCurrentTask(with: .failure)
} else {
self.creationParams.isModified = false
self.createdSpace = response.value
self.updateCurrentTask(with: .success)
self.runNextTask()
guard let createdSpaceId = self.createdSpace?.spaceId, let parentSpaceId = self.parentSpaceId, let parentSpace = self.session.spaceService.getSpace(withId: parentSpaceId) else {
self.updateCurrentTask(with: .success)
self.runNextTask()
return
}
parentSpace.addChild(roomId: createdSpaceId) { [weak self] response in
guard let self = self else { return }
self.updateCurrentTask(with: .success)
self.runNextTask()
}
}
}
}