* Ensure multiple mandatory verification flows can be ran consecutively (e.g. following encryption resets)
* Disabled the back button on the verification screen only when verified and waiting for the security state publisher
* Remove the welcome screen
* Allow the UserSessionFlowCoordinator to control the whole app hierarchy, not only its splitView
* Start using the new verification state listener
* Rename Onboarding to AuthenticationStart in preparation for the new OnboardingFlowCoordinator; update snapshots and tests
* Make the AuthenticationCoordinator a proper FlowCoordinator
* Add some padding around the authentication start screen report a problem button
* Bump the RustSDK to v1.1.49
* Only add bottom padding on the authentication start screen report a problem button
* Show recovery instead of verification if this is the last session and recovery is set up
* Rename `recoveryKeyState` to `recoveryState`
* Remove duplicates on session security state changes.
* Fix missing "Save recovery key" button
* Fix unit tests
* Rename `isLastDevice` to `isOnlyDeviceLeft`
* Address PR comments
* Use a custom SDK build that might fix incomplete recovery state false positives. Enable chat backup by default
* Get rid of the chat backup feature flag
* Fix force unwrap warning
* Fix long line warning
* Prevent the recovery key confirmation banner popping up before the verification state is fetched. Stop showing secure backup user avatar and menu badges while the session is not verified.
* Switch back to the release version of the SDK
* Fix inconsistent session verification states, improve/simplify how to deal with it
* Fix unit tests
* Cleanup and hopefully simplify home screen banner presentations
* Fixes vector-im/element-x-ios/issues/1868 Incorrect `is_verified` flag after successfully running verification flow
- the inner user_identity isn't automatically updated when the flow finishes, needs to be fetched again from encryption
- also replaces `UserIdentity.is_verified` with `Device.is_cross_signed_by_owner`
- depends on matrix-org/matrix-rust-sdk/pull/2775
---------
Co-authored-by: Doug <douglase@element.io>
* Remove isSoftLogout from everywhere except the client delegate
- bump the RustSDK to v1.0.43
- cleanup the app coordinator state machine and login/logout flows
* Merge `succeededSigningIn` and `succeededRestoringSession` into `createdUserSession` in order to simplify the logic
* Correctly tear down the user session on signing out
* Fix session verification <-> user session retain cycle, visible range debouncer leak
* Manually clean up coordinators retained within SwiftUI's NavigationStacks
* Slightly refactor the timeline content menu builder and prevent it from retaining the view model. Cleanup now unnecessarily optional RoomScreenCoordinator instance vars
* Move coordinator dismissal logic to the navigation modules
* State events in the timeline WIP
* Implement membership change strings.
* Add other state event types and use in RoomSummaryProvider.
Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
* Review places where MainActor used
* Adapt to MainActor changes, avoid redundant task detachments
* Move Rust client operations into a dedicated concurrent queue, make init async
* Add changelog
* Fixed small working for awaiting non-async method
* Remove some redundant tasks
* Put back some main actors
* Fix tests
* Fixed timeline updates when the number of items doesn't change. Keeps more previous home screen room data between reloads
Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
* Begin adopting new Timeline API.
* Add edited indicator and reactions.
* vector-im/element-x-ios/issues/65 - Sliding sync support
* Fix missing room display name, wrong placeholder avatar text color and various other warnings that would fail the build on the CI
* Various tweaks:
* using release version of the demo branch of the sdk
* enabled home screen last room messages
* switched debug mode rust logging to warn
* enabled redactions
* enabled new logout flows and soft logout
* enabled replies
* Fix room member display name and avatar crashes / race condition, fix unit tests
* Make the ClientProxy and the UserSession MainActors
* Remove unused MatrixRustSDK imports, we should strive to keep these only in top level services and proxies
* Don't start either of the syncs while in soft logout
* #181: Style the session verification banner to match Figma.
* #181: Update verification modal.
* #181: Update snapshot tests.
* Make session verification state machine less pedantic
* Remove unnecessary weak selfs
* Various tweaks following code review:
* add start and stop sync client proxy methods
* move ss proxy url the build settings
* made media provider load results discardable
* added publishers for the roomSummaryProvider's total number of rooms and state
* Fix when sender details are shown
* Disable sync v2, causes duplicates in the timeline (as expected)
* Move ClientProxy media loading off the main queue and into a detached task
* Another attempt at moving image loading off the main queue
* Moved home screen diffing and latest room fetching to the background
* Prevent the timeline composer from becoming the first responder when not needed
* Bump to a newer version of the RustSDK
* Fixes vector-im/element-x-ios/issues/107 - New home screen design
* Implement thumbnail loading instead of full image avatars.
* Revert "Disable sync v2, causes duplicates in the timeline (as expected)"
* Add support for local echoes, dispatching detached tasks to a concurrenc GCD queue
* Move the session verification banner to a List Section to avoid UI glitches
* Optimise room mapping after sliding sync updates and thumbnail fetching
* Replace home screen List with a LazyVStack in an attempt to fix performance. Moved move summary provider room updating to a background thread
* Fixes vector-im/element-x-ios/issues/177 - New Bubbles Design
* Define in group state for timeline items
* Add replies into the bubble
* Add timeline width environment value
* Add `RoundedCorner` shape with specific corners rounding
* Add in group state for previews
* Implement bubble grouping logic
* Timeline avatar layout changes
* Fix placeholder avatars for dark mode
* New bubbles design
* Update mock timeline items
* Update timeline separator design
* Update room screen reference screenshots
* Add changelog
* Formatting fixes
* Add some space before single or beginning outgoing items
* Redesign the message composer
* Handle the msgtype enum.
* Update room name label line limit and incoming bubble background. Disabled syncv2, ss withCommonExtensions and session verification controller checking
* Increase default back pagination limit.
* Stop parsing links and tidy up composer button.
* Also fix the frame of an image whilst loading.
* Bump SDK package version.
* Remove app states about settings
* Add strings
* Use colors on placeholder avatars
* Tiny changes for placeholder avatars
* Update settings screen design
* Provide a user display name from the mock client
* Settings screen presentation logic
* Add changelog
* Update reference screenshots
Co-authored-by: Doug <douglase@element.io>
Co-authored-by: ismailgulek <ismailgulek@users.noreply.github.com>
Co-authored-by: ismailgulek <ismailg@matrix.org>
* Expose logout method from SDK
* Use logout from SDK, refactor logging out states
* Add some strings
* Introduce `initialDisplayName` on `UIDevice`
* Implement soft logout screen
* Add `softLogout` test screen identifier
* Add new fields into the client proxy and implement new delegate methods
* Add new fields into the user session and observe new client callbacks
* Implement updated login method
* Add remote logout state and event into the state machine
* Implement refreshing restore token on `UserSessionStore`
* Update app coordinator with new states and display soft logout screen when appropriate
* Add reference screenshots for soft logout screen
* Disable auto requesting photos access on screenshot detection
* Make initial device name optional, generate project file
* Add changelog
* Use logout from SDK, refactor logging out states
* Implement soft logout screen
* Implement updated login method
* Make initial device name optional, generate project file
* Fix renamed event
* Fix logout race
* Remove redundant strings
* Reuse existing strings
* Confirm clear all data
* Expose logout method from SDK
* Use logout from SDK, refactor logging out states
* Add some strings
* Introduce `initialDisplayName` on `UIDevice`
* Implement soft logout screen
* Add `softLogout` test screen identifier
* Add new fields into the client proxy and implement new delegate methods
* Add new fields into the user session and observe new client callbacks
* Implement updated login method
* Add remote logout state and event into the state machine
* Implement refreshing restore token on `UserSessionStore`
* Update app coordinator with new states and display soft logout screen when appropriate
* Add reference screenshots for soft logout screen
* Disable auto requesting photos access on screenshot detection
* Make initial device name optional, generate project file
* Add changelog
* Use logout from SDK, refactor logging out states
* Implement soft logout screen
* Implement updated login method
* Make initial device name optional, generate project file
* Fix renamed event
* Fix logout race
* Remove redundant strings
* Reuse existing strings
* Confirm clear all data
* Comment out new apis for now
* Make the PR compile
* vector-im/element-x-ios/issues/31 - Session verification unit and UI tests
* Fix ImageAnonymizer tests when running on Apple Silicon
* Rename SessionVerification to SessionVerificationScreen
- updated the authentication coordinator to use async await
- replaced the UserSession with a ClientProxy (similar to the RoomProxy)
- renamed `completion` to `callback` on the coordinators and view models
- renamed `viewModelResult` to `viewModelAction`
- introduced back UserSession as a user specific service container