[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
@@ -29,7 +29,8 @@ enum MockSpaceCreationEmailInvitesScreenState: MockScreenState, CaseIterable {
case defaultEmailValues
case emailEntered
case emailValidationFailed
case loading
/// The associated screen
var screenType: Any.Type {
SpaceCreationEmailInvites.self
@@ -37,7 +38,7 @@ enum MockSpaceCreationEmailInvitesScreenState: MockScreenState, CaseIterable {
/// A list of screen state definitions
static var allCases: [MockSpaceCreationEmailInvitesScreenState] {
[.defaultEmailValues, .emailEntered, .emailValidationFailed]
[.defaultEmailValues, .emailEntered, .emailValidationFailed, .loading]
}
/// Generate the view struct for the screen state.
@@ -46,13 +47,16 @@ enum MockSpaceCreationEmailInvitesScreenState: MockScreenState, CaseIterable {
let service: MockSpaceCreationEmailInvitesService
switch self {
case .defaultEmailValues:
service = MockSpaceCreationEmailInvitesService(defaultValidation: true)
service = MockSpaceCreationEmailInvitesService(defaultValidation: true, isLoading: false)
case .emailEntered:
creationParams.emailInvites = ["test1@element.io", "test2@element.io"]
service = MockSpaceCreationEmailInvitesService(defaultValidation: true)
service = MockSpaceCreationEmailInvitesService(defaultValidation: true, isLoading: false)
case .emailValidationFailed:
creationParams.emailInvites = ["test1@element.io", "test2@element.io"]
service = MockSpaceCreationEmailInvitesService(defaultValidation: false)
service = MockSpaceCreationEmailInvitesService(defaultValidation: false, isLoading: false)
case .loading:
creationParams.emailInvites = ["test1@element.io", "test2@element.io"]
service = MockSpaceCreationEmailInvitesService(defaultValidation: true, isLoading: true)
}
let viewModel = SpaceCreationEmailInvitesViewModel(creationParameters: creationParams, service: service)
@@ -21,13 +21,24 @@ import Combine
@available(iOS 14.0, *)
class MockSpaceCreationEmailInvitesService: SpaceCreationEmailInvitesServiceProtocol {
var isLoadingSubject: CurrentValueSubject<Bool, Never>
private let defaultValidation: Bool
init(defaultValidation: Bool) {
var isIdentityServiceReady: Bool {
return true
}
init(defaultValidation: Bool, isLoading: Bool) {
self.defaultValidation = defaultValidation
self.isLoadingSubject = CurrentValueSubject(isLoading)
}
func validate(_ emailAddresses: [String]) -> [Bool] {
return emailAddresses.map { _ in defaultValidation }
}
func prepareIdentityService(prepared: ((String?, String?) -> Void)?, failure: ((Error?) -> Void)?) {
failure?(nil)
}
}