Use UserIndicatorPresenter for onboarding personalisation.

Remove the service from the display name screen to match the avatar screen.
Add a loading indicator to PhotoPickerPresenter.
Fix layout issue when selecting non-square avatar image.
This commit is contained in:
Doug
2022-03-15 16:00:06 +00:00
parent 071a43cc90
commit ed9139a41a
20 changed files with 158 additions and 207 deletions
@@ -26,7 +26,6 @@ enum MockOnboardingDisplayNameScreenState: MockScreenState, CaseIterable {
// mock that screen.
case emptyTextField
case filledTextField(displayName: String)
case operationInProgress(displayName: String)
/// The associated screen
var screenType: Any.Type {
@@ -37,28 +36,24 @@ enum MockOnboardingDisplayNameScreenState: MockScreenState, CaseIterable {
static var allCases: [MockOnboardingDisplayNameScreenState] {
[
MockOnboardingDisplayNameScreenState.emptyTextField,
MockOnboardingDisplayNameScreenState.filledTextField(displayName: "Test User"),
MockOnboardingDisplayNameScreenState.operationInProgress(displayName: "Test User"),
MockOnboardingDisplayNameScreenState.filledTextField(displayName: "Test User")
]
}
/// Generate the view struct for the screen state.
var screenView: ([Any], AnyView) {
let service: MockOnboardingDisplayNameService
let viewModel: OnboardingDisplayNameViewModel
switch self {
case .emptyTextField:
service = MockOnboardingDisplayNameService()
viewModel = OnboardingDisplayNameViewModel()
case .filledTextField(let displayName):
service = MockOnboardingDisplayNameService(displayName: displayName)
case .operationInProgress(let displayName):
service = MockOnboardingDisplayNameService(displayName: displayName, isWaiting: true)
viewModel = OnboardingDisplayNameViewModel(displayName: displayName)
}
let viewModel = OnboardingDisplayNameViewModel.makeOnboardingDisplayNameViewModel(onboardingDisplayNameService: service)
// can simulate service and viewModel actions here if needs be.
return (
[service, viewModel], AnyView(OnboardingDisplayNameScreen(viewModel: viewModel.context))
[self, viewModel], AnyView(OnboardingDisplayNameScreen(viewModel: viewModel.context))
)
}
}