There are some bad assumptions about profile changes in here.
* Remove assumption FIXME's
Profile changes that come from other members will be state event of None.
* Bump SDK version.
* Use an imageProvider directly from the view in the home screen
* Add support for media request coalescing
* Rename MediaProxy to MediaLoader
* Add new image loading mechanism to the room details screen avatar.
* Use the `SettingsScreen` prefix for all settings screen related components
* Add new image loading mechanism to the room header
* Add new image loading mechanism to the room member details screen
* Introduce a LoadableImage SwiftUI view that will automatically handle image loading
* Adopt the new LoadableImage where possible
* Fix LoadableImage not using/storing loaded images properly
* Simplify media loader enqueueing
* Made LodableImage load content after mediaSource updates. Adopt it on the home and settings screens
* Introduce a LoadableAvatarImage component and reuse it throughout the app
* Small logging tweaks, made some LoadableImage properties private
* Fix redacted skeletons avatar background color
* Fix placeholder avatars changing when backgrounding the app
* PR comments.
- Trim the @ sign off of mxid placeholders.
- Only expose AvatarSize on the avatar image, use CGSize elsewhere.
Co-authored-by: Doug <douglase@element.io>
* Format the last message date correctly.
* Update room cell layout - fixes an issue where the longer the date got the smaller the last message width was.
* Store and reuse room list placeholder avatars and last messages
* Cache and reuse HomeScreenRooms
* Reduce RoomSummaryProvider diff collection time
* Promote more logs to info
* Slighty tweak RustTracing to make it easier to configure
* Move TimelineProvider and RoomTimelineController item processing to background queues
* Prevent the timeline from stopping an ogoing decelerating scroll when starting backpaginating
* 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>
* Adopt timeline item sender profiles for displaying user avatars and display names
* Prevent images from automatically being evicted from the in-memory cache when entering background
* Get rid of all the `urlString: String`s and start using proper URLs
* Add back manual display name loading as the sender profiles aren't working properly yet
* Implement a sender profile.
* Bump the RustSDK to v1.0.32-alpha
Co-authored-by: Doug <douglase@element.io>
* Refactor SS configuration and add (unfinished) support for adding views dynamically.
* Implement pop and clear support on the room summary provider
* Register views against sliding sync
* Read invalidated vislbeRoomsSummaryProvider from the allRoomSummaryProvider
* Switch SS window range setting from the ScrollViewAdapter to a publisher debounce
* Tweak allRoomsView addition: switch from listening the visibleRoomsView's state to when it publishes the first diff update
* Cleanup client delegate and sliding sync observers and lifecycle
* Bump the RustSDK to 1.0.30-alpha
* Reuse startSync within restartSync
* Only use Client for UI test signalling.
Make the server listen and return a client.
* Refactor to Listener and Connection.
Matches Network.framework naming.
* Wait until the connection is ready before setting the established connection.
* Docs and fix method name.
* Fix CI issues.
- Use Bonjour to allow multiple devices running simultaneously.
- Sleep after establishing the connection to fix issues on Intel.
* Cleanup session verification state machine configuration
* Add support for new timeline items: loading indicators, stickers and invalid/unsupported events
* Add sticker accessibility label, fix session verification ones
* Add support for the new TimelineStart timeline item and new pagination API. Remove identifiers from individual timeline items and only set them in the TimelineTableViewController
* Add changelog
* Media provider tests
* Moved classes to separate files
* Moved image file
* Removed unused image file
* Rebase and refactor.
Replace removed error type.
Refactor XYZMock to MockXYZ.
Co-authored-by: Doug <douglase@element.io>
* Add signalling between UI tests and the app.
* Fix navigationStack on roomLayout screens and update screenshots
Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
* NotificationManager tests
* More unit tests
* More tests, moved classes to separate files
* Removed warnings
* UserNotificationCenterProtocol as AnyObject
* Reverted back Package.resolved
* Add the message delivery status to the plain timeline styler and display it outside of the main content
* Fix glitchy timeline scroll to bottom button
* Fixed bubbled reactions padding
* Simplified the emoji picker, double tapping a timeline item directly opens it now and added a context menu option. Linked it to rust side reaction sending
* Fix the sliding sync cold cache: treat invalidated rooms as filled
* Make splash screen view full screen
* Fix the offline indicator popping up when first setting up the network monitor
* Expose presentationDetents on the NavigationStackCoordinator and start using them for the EmojiPicker
* Fix link tint color
* Linked TimelineReactionsView reaction sending
* Remove now unused/unnecessary classes
* Add changelog
* Fix formatting issue
* Create screen module
* Display details on header tap
* Add strings
* Add room avatar size on details
* Update members method signature
* Use room proxy values
* Create room members screen
* Display room members on tap
* Update previews and mock room proxy
* Commit project file
* Various tweaks and cleanup following code review
* More small tweaks + UI and screenshot tests
Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
* Switch back to using slidingSync rooms for timeline listeners
* Expose 2 types of slidingSync views from the clientProxy and combine their results for the roomList
* Fix breaking api changes
* Remove sender mxids from the room list (until rust provides resolved display names)
* Bump RustSDK to v1.0.22-alpha
* Rename originServerTs to timestamp throughout
* Simplified sliding sync view list merging
* Rollback some SS changes as things still don't work properly
* Revert "Switch back to using slidingSync rooms for timeline listeners"
This reverts commit 1d6a6c09d8ddf386edefbe0ac6beaf52cc333fba.
* Fixes#361 - Reset everything if the app has been deleted since the last run
* Cleaned up and renamed the ElementSettings to ApplicationSettings. Removed its singleton and moved it to the service locator.
* Moved the ApplicationSettings to the Application folder
* Merged together the BuildSettings and ApplicationSettings
* Reset the UserDefaults too when resetting the application state
* Rename ServiceLocator.applicationSettings to just settings
* Fix indentation
* Rename ApplicationSettings to AppSettings
* Various tweaks following code review
* Fix unit tests
* Increase integration tests time limits again as they're still ocasionally failing
* Fixed NavigationRootCoordinator name in logs
* Refactor UI tests hierarchy and introduce new userFlowScreen
* Introduce a RoomTimelineControllerFactory so that it can be mocked in the UserFlow UI tests
* Start using a mock timeline controller for the UserSession flows
* Remove the WeakDictionary dependency and replce it with a plain NSMapTable in the BackgroundTaskService
* Allow multiple UITests screenshots per screen
* Prevent the view hierarchy changing when taking screenshots
* Add UserSessionScreen UI tests
* Fix label triaging workflow project identifier as per vector-im/element-ios/pull/7150
* Fix settings screen tests
* Fix roomPlainNoAvatar and roomEncryptedWithAvatar UI tests
* Fix modal server selection screen UI tests
* Fix bug report and login screen UI tests
* Fix text typing missing characters on UI tests
* Fix sliding sync configuration on integration tests
* Stop crashing if not finding a particular room through the MockClientProxy
Rename navigation components: SplitScreenCoordinator -> NavigationSplitCoordinator, StackScreenCoordinator -> NavigationStackCoordinator and SingleScreenCoordinator -> NavigationRootCoordinator
[0c161039] Tweak navigation logging
[826c19cf] Move the navigation dismissal callbacks to the NavigationModule, add SingleScreenCoordinator tests
[b8830d9c] Add tests
[252ad119] Merge the StackScreenCoordinator and SplitScreenCoordinators into a single file and stop publicly exposing their internal workings. Add more documentation.
[37671699] Cleanup navigation logging
[51406184] Use the parent SplitScreenCoordinator to present embedded StackScreenCoordinator sheets
[b94b04c9] Retract the room "syncing" indicator when dismissing a room
[1467b0ac] Correctly move to the no room selected state when popping in compact layouts
[10bf2ad8] Allow nilling root coordinators, replace present/dismiss sheet with setSheetCoordinator(?)
[33716784] Add single screen coordinator fade transition animation
[3cbe65e7] Prevent the timeline table view from being reused between different rooms
[9c94c50b] Move files around
[c10b6bc5] Adapt the user session state machine to the split layout
[7115a319] Fix unit and UI tests
[1ece59e8] Fix login flows
[6884dc3b] Use modules everywhere the underlying object is a NavigationModule
[ab08d44c] Rename navigation components to: SingleScreenCoordinator, SplitScreenCoordinator and StackScreenCoordinator
[ada2be57] Add SplitNavigationController
* Remove the navigationRootCoordinator from the UserSessionFlowCoordinator