[iOS] Create public space #143

- Update after design review
This commit is contained in:
Gil Eluard
2021-12-01 23:56:59 +01:00
parent 1217be55ab
commit 4890ce2108
109 changed files with 1122 additions and 529 deletions
@@ -23,14 +23,16 @@ import SwiftUI
/// the relevant associated data for each case.
@available(iOS 14.0, *)
enum MockSpaceCreationPostProcessScreenState: MockScreenState {
static var screenStates: [MockScreenState] = [MockSpaceCreationPostProcessScreenState.tasks]
static var screenStates: [MockScreenState] = [MockSpaceCreationPostProcessScreenState.running, MockSpaceCreationPostProcessScreenState.done, MockSpaceCreationPostProcessScreenState.doneWithError]
// A case for each state you want to represent
// with specific, minimal associated data that will allow you
// mock that screen.
case tasks
case running
case done
case doneWithError
/// The associated screen
var screenType: Any.Type {
SpaceCreationPostProcess.self
@@ -40,8 +42,12 @@ enum MockSpaceCreationPostProcessScreenState: MockScreenState {
var screenView: ([Any], AnyView) {
let service: MockSpaceCreationPostProcessService
switch self {
case .tasks:
case .running:
service = MockSpaceCreationPostProcessService()
case .done:
service = MockSpaceCreationPostProcessService(tasks: MockSpaceCreationPostProcessService.lastTaskDoneSuccesfully)
case .doneWithError:
service = MockSpaceCreationPostProcessService(tasks: MockSpaceCreationPostProcessService.lastTaskDoneWithError)
}
let viewModel = SpaceCreationPostProcessViewModel.makeSpaceCreationPostProcessViewModel(spaceCreationPostProcessService: service)
@@ -22,27 +22,51 @@ import Combine
@available(iOS 14.0, *)
class MockSpaceCreationPostProcessService: SpaceCreationPostProcessServiceProtocol {
static let defaultTasks: [SpaceCreationPostProcessTask] = [
SpaceCreationPostProcessTask(type: .createSpace, title: "Space creation", state: .success),
SpaceCreationPostProcessTask(type: .createRoom("Room#1"), title: "Room#1 creation", state: .failure),
SpaceCreationPostProcessTask(type: .createRoom("Room#2"), title: "Room#2 creation", state: .started),
SpaceCreationPostProcessTask(type: .createRoom("Room#3"), title: "Room#3 creation", state: .none)
]
static let nextStepTasks: [SpaceCreationPostProcessTask] = [
SpaceCreationPostProcessTask(type: .createSpace, title: "Space creation", state: .success),
SpaceCreationPostProcessTask(type: .createRoom("Room#1"), title: "Room#1 creation", state: .failure),
SpaceCreationPostProcessTask(type: .createRoom("Room#2"), title: "Room#2 creation", state: .failure),
SpaceCreationPostProcessTask(type: .createRoom("Room#3"), title: "Room#3 creation", state: .started)
]
static let lastTaskDoneWithError: [SpaceCreationPostProcessTask] = [
SpaceCreationPostProcessTask(type: .createSpace, title: "Space creation", state: .success),
SpaceCreationPostProcessTask(type: .createRoom("Room#1"), title: "Room#1 creation", state: .failure),
SpaceCreationPostProcessTask(type: .createRoom("Room#2"), title: "Room#2 creation", state: .failure),
SpaceCreationPostProcessTask(type: .createRoom("Room#3"), title: "Room#3 creation", state: .success)
]
static let lastTaskDoneSuccesfully: [SpaceCreationPostProcessTask] = [
SpaceCreationPostProcessTask(type: .createSpace, title: "Space creation", state: .success),
SpaceCreationPostProcessTask(type: .createRoom("Room#1"), title: "Room#1 creation", state: .success),
SpaceCreationPostProcessTask(type: .createRoom("Room#2"), title: "Room#2 creation", state: .success),
SpaceCreationPostProcessTask(type: .createRoom("Room#3"), title: "Room#3 creation", state: .success)
]
var tasksSubject: CurrentValueSubject<[SpaceCreationPostProcessTask], Never>
private(set) var createdSpaceId: String?
var avatar: AvatarInput {
return AvatarInput(mxContentUri: nil, matrixItemId: "", displayName: "Some space")
}
var avatarImage: UIImage? {
return nil
}
init(
tasks: [SpaceCreationPostProcessTask] = [
SpaceCreationPostProcessTask(type: .createSpace, title: "Space creation", state: .success),
SpaceCreationPostProcessTask(type: .createRoom("Room#1"), title: "Room#1 creation", state: .failure),
SpaceCreationPostProcessTask(type: .createRoom("Room#2"), title: "Room#2 creation", state: .started),
SpaceCreationPostProcessTask(type: .createRoom("Room#3"), title: "Room#3 creation", state: .none)
]
tasks: [SpaceCreationPostProcessTask] = defaultTasks
) {
self.tasksSubject = CurrentValueSubject<[SpaceCreationPostProcessTask], Never>(tasks)
}
func simulateUpdate(presence: SpaceCreationPostProcessPresence) {
self.tasksSubject.send([
SpaceCreationPostProcessTask(type: .createSpace, title: "Space creation", state: .success),
SpaceCreationPostProcessTask(type: .createRoom("Room#1"), title: "Room#1 creation", state: .failure),
SpaceCreationPostProcessTask(type: .createRoom("Room#2"), title: "Room#2 creation", state: .success),
SpaceCreationPostProcessTask(type: .createRoom("Room#3"), title: "Room#3 creation", state: .started)
])
func simulateUpdate(tasks: [SpaceCreationPostProcessTask]) {
self.tasksSubject.send(tasks)
}
func run() {