Tapping Continue and then the keyboard's Done key (or double tapping
Continue) started two server configurations. With a password-only server
both asked the flow to show the login screen, and the second request hit
the authentication state machine's unexpected transition fatalError.
Keep the running confirmation task and ignore further confirms until it
finishes, so the flow continues once. The guard clears afterwards so
confirming again after going back from the login screen still works.
Fixes ELEMENT-X-IOS-XED
* Add an AccountProvider type and use it within AppSettings.
* Use the AccountProvider type within the Authentication flow too.
* Fix unit test compilation with Swift 6.4
* Make sure defaultAccountProvider takes allowOtherAccountProviders into account.
* Document a caveat on using AuthenticationService.homeserver.value.accountProvider.
* Adjust login flow to exclusively use the ServerSelectionScreen
* Move async code to server selection vm
* ServerSelection supports pro picker options
* Use homeserver address for both confirmation and picker modes
* rename ServerSelectionScreenMode
* remove ServerConfirmationScreen
It's been superseded by the ServerSelectionScreen
* rename userInput
* Update strings with latest design strings
* Add server input autocompletion
* Store previous servers in AppSettings and autofill on server signin
* Audit changes for logging
* Enforce lowercase server history storage
* Update tests
* Update Xcode project
* PR review fixups
* Add HomeserverHistoryManager
* Review fixups 2
* Review fixups 3
* Add some tests for DeferredFulfillment with Observation.
* Use StateStoreViewModelV2 in AuthenticationStartScreen.
* Use StateStoreViewModelV2 in ServerConfirmationScreen.
* Use StateStoreViewModelV2 in ServerSelectionScreen.
* Use StateStoreViewModelV2 in SoftLogoutScreen.
* Use StateStoreViewModelV2 in SettingsScreen.
* Use StateStoreViewModelV2 in DeveloperOptionsScreen.
* Use StateStoreViewModelV2 in AdvancedSettingsScreen.
* Fail configuration of the authentication service if the homeserver doesn't support login.
* Move the ServerSelectionCoordinator logic into the ViewModel.
- Handle the new login alert.
- Add more tests
* Don't query the homeserver until confirming it (or selecting a different one).
* Setup the infrastructure to test AuthenticationService.
Implement basic tests for configuration & password login.
* Use the real AuthenticationService with a mock Client in all of the tests.
* Add tests for the ServerConfirmationScreenViewModel.
* Remove redundant view state and test for it.
* Add copy for error when signing in with refresh tokens enabled.
* Show an error when a server's well-known file is invalid.
* Changelog.
* Fix wrong alert.
* #750 - Convert the SoftLogoutScreen to combine
* #750 - Convert the UserSessionFlowCoordinator to Combine
* #750 - Convert the AnalyticsPromptScreen to Combine
* #750 - Convert the LoginScreen to Combine
* #750 - Convert the ServerSelectionScreen to Combine
* #750 - Convert the EmojiPickerScreen to Combine
* #750 - Convert the HomeScreen to Combine
* #750 - Convert the MediaUploadPreviewScreen to Combine
* #750 - Convert the OnboardingScreen to Combine
* Rename `Onboarding` to `OnboardingScreen`
* #750 - Convert the ReportContentScreen to Combine
* #750 - Convert the RoomDetailsSscreen to Combine
* #750 - Convert the RoomMemberDetailsScreen to Combine
* #750 - Convert the RoomMembersListScreen to Combine
* #750 - Convert the SessionVerificationScreen to Combine
* #750 - Convert the SettingsScreen to Combine
* #750 - Convert the AdvancedSettingsScreen to Combine
* #750 - Convert the DeveloperOptionsScreen to Combine
* Fix the unit tests
* Use .sink action and the same cancellables constructor everywhere
* Cleanup cancellables when setting up tests
Squashed commits:
[d64bb3bb] Stop using the ServiceLocator directly in the ScreenTrackerViewModifier
[37c46ab9] Rename Analytics to AnalyticsService
[8852a371] #920 - Cleanup ServiceLocator usages