* Use our standard XYZMock(.init()) pattern everywhere instead of XYZMock.default.
* Remove the configuration parameter label on mock convenience inits.
* Update the enterprise submodule.
* create DependenciesProtocol and replace ServiceLocator registration with it
replace mocking calls for ServiceLocator to Dependencies
replace ServiceLocator with instance level calls
replace ServiceLocator configs with TestDependencies config in Tests
replace servicelocator usage in analytics service
replace remaining ServiceLocator calls in unit tests
that depended on the UnitTestAppCoordinator configuration with per suite dependencies instances
fix swiftlint warning
remove remaining references to ServiceLocator
make dependencies properties consistent in tests
delete Dependencies and DependenciesProtocol
fix whitespace modifications
updates from PR feedback
a pass over converting AppSettings and AnalyticsService test instance properties to per test instantiation
fix a missed PR feedback
Sync up after rebase
create DependenciesProtocol and replace ServiceLocator registration with it
replace mocking calls for ServiceLocator to Dependencies
replace ServiceLocator with instance level calls
replace ServiceLocator configs with TestDependencies config in Tests
replace servicelocator usage in analytics service
replace remaining ServiceLocator calls in unit tests
that depended on the UnitTestAppCoordinator configuration with per suite dependencies instances
fix swiftlint warning
remove remaining references to ServiceLocator
make dependencies properties consistent in tests
delete Dependencies and DependenciesProtocol
* AppSettings is instance level mockable now
* replace mocked and preview usages of reset + AppSettings global init with
AppSettings(store: UserDefaultsMock())
* AppSettings.UserDefaultsKeys is now a RawRep struct, making it extensible
* update tests with new AppSettings so it builds
* update remaining AppSettings test/mock inits
* AppSettings.UserDefaultsKey conformed to ExpressibleByStringLiteral
* addressed issues found in first pass ai review
* update AppSettings instantiations after rebase
* fix accessibility tests coordinator after rebase
* Rename to VolatileUserDefaults
* AppSettings init uses mandatory parameter
* Revert UserDefaultsKey to enum
* Add TrackedUserDefaults to be able to reset the defaults object
* Added volatile static func to AppSettings
* Use .volatile() static func instead of full init
* review fixups
* Resolve build issues after rebase
* updated enterprise module
* remove the static reset settings call from the preview tests
---------
Co-authored-by: Mauro Romito <mauro.romito@element.io>
* Create AnalyticsServiceProtocol and conform AnalyticsService
* Replace AnalyticsService properties and arguments with AnalyticsServiceProtocol
* Inline AnalyticsServiceMock replacing old mock
* handle more complex AnalyticsServiceMock callsites
* move documentation from AnalyticsService to AnalyticsServiceProtocol
Removes the ServiceLocator singleton and instead directly injects the dependencies it was holding for more control over instantiation of the various component subtrees and better visibility over how they're being used.
* Restore the .oidcCallback route (partially reverts #3461) for external authentication.
* Make sure OIDC also works for non-http URLs.
* Remove oidcAuthentication from the state machine.
There isn't a reliable way to detect failure/cancellation when e.g. the user returns from an external app without interacting with the MAS page.
* Add a Developer Options button to the AuthenticationStartScreen on Nightly builds.
* Make sure the Developer Options are actually shown in the settings screen on Nightlies.
* Read and import the secrets from ClassicAppAccounts.
* Record snapshots.
* Add some documentation, tidy up tests and fix the dismissal of the backup instructions.
* Workaround flakey tests (the fulfilments weren't always firing).
* Allow a custom Classic App deep link URL to be configured.
* Allow AuthenticationStartLogo to be scaled and fix dark mode when not on a gradient.
* Fix the layout of AuthenticationStartScreen with large Dynamic Type sizes.
* replace NavigationStack with ElementNavigationStack to allow the content to be rendered without a NavigationStack in a11y tests
* fix a11y tests
* update xcodeproject
* swiftformat fix
* use iOS 26.1 for CI
* use a wrapper to solve the issue for a11y tests
* ElementNavigationStack only uses the trick in DEBUG mode, and added a swiftlint rule to prevent the usage of NavigationStack
* Fix a bug where the link device flow wasn't dismissed when complete.
* Listen for cancellation of the WAS when linking a device (dismissing the QR screen when it happens).
* Add CustomStringConvertible conformances to QRCodeLoginScreen actions.
* Move BigIcon into Compound.
* Replace the old server selection image asset with the \.host icon.
* Add a new TitleAndIcon component to Compound.
* Add the ability to override TitleAndIcon's padding.
* Remove `eraseToStream` now that `any AsyncSequence` is available to us.
* Remove the now unnecessary backport of Mutex.
* Silence a couple more deprecation warnings.
* Move the AuthenticationStartScreen into the Authentication directory.
* Commit the updated Sentry license.
No idea why they dropped the 2024 🤷♂️
* Use StateStoreViewModelV2 in BugReportScreen.
* Use StateStoreViewModelV2 in UserDetailsEditScreen.
* Use StateStoreViewModelV2 in NotificationSettingsScreen.
* Use StateStoreViewModelV2 in NotificationSettingsEditScreen.
* Use StateStoreViewModelV2 in LegalInformationScreen.
* Use StateStoreViewModelV2 in LogViewerScreen.
* Use StateStoreViewModelV2 in AnalyticsSettingsScreen.
* Rename AdvancedSettingsScreen directory.
* Use StateStoreViewModelV2 in EncryptionResetScreen.
* Use StateStoreViewModelV2 in EncryptionResetPasswordScreen.
* Use StateStoreViewModelV2 in SecureBackup…Screens.
* Use StateStoreViewModelV2 in LoginScreen.
Seems this one was ignored waiting on the fulfillment transitionValues implementation.
* Use StateStoreViewModelV2 in DeactivateAccountScreen.
* Move DeactivateAccountScreen into the Settings directory.
* Add a picker mode to the ServerConfirmationScreen.
* Hook up the account provider picker in authentication the flow.
Simplify the authentication flow coordinator, removing the restricted state.
* UI/Snapshot tests.
* Add support for account provisioning links and route them to the authentication flow.
* Use the provisioning parameters to configure the authentication flow.
* Add UI tests for the provisioned authentication flow.
* Record new preview snapshots.
* Add unit tests.
* Make the domain configurable in the app settings.
* Use the loginHint in the login screen too.
* Fix logging/alerts during OIDC cancellation.
- Cancelling from within the web view wasn't being handled since moving the UserIndicatorController into the presenter.
- The WAS canceledLogin error code is also used when the system cancels the login. When the system cancels there's a failure reason included in the error.
* Allow UI tests to tap on any point within a view.
* Make the homeserver optional in integration tests.
* Dismiss the keyboard after entering a username to reveal the password text field.
Do the same after entering the password field too, just in case.
* Add a loop while waiting for the WAS prompt to be shown.
* 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.
* Fetch the OIDC login URL as part of the Server Confirmation screen.
The loading indicator would show and hide while configuring and then immediately show again while fetching the URL.
* Allow the OIDCAuthenticationPresenter to show its own errors.
We no longer need to present errors in the authentication flow coordinator.
* Implemented join room by address
* improved the text field typing
* some improvements to how the text is edited
* remove navigation link
* moved room directory search to the start chat flow
* updated preview tests
* added unit tests and improved the code
* updated strings
* some pr suggestions:
- moving the file
- changing the name of the action
- reintroduce the debounce text queries
- add comments
* renamed the auth text field style to Element
updated tests
* Retrofit `deferFulfillment` onto snapshot tests.
* Convert a bunch of preview tests to the new fulfillment publisher
* Convert more tests
* Remove unneeded delays from the remaining tests
* Remove snapshotting delay option.
* Use the new WAS callback type and return back to the https callback for OIDC.
* Simplify OIDCAuthenticationPresenter now it doesn't need to handle universal links.
* Remove old unit tests.
* 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