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.
* 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
* Fix information leaking on RoomSummaryDetails logging
* Prevent crashes when force quitting the application
* Cleanup crash detected alert presentation and exposed home screen view model actions
* Fixes#340 - Wait for logout confirmation before changing the app state
* Add changelogs
* Fix unit tests
* Add missing softLogout logout handling
* Fixes#396 - Avoid duplicates in room list, cleanup logic throughout
* Re-enabled the allRoomsView with a hard 500 room limit and reduced the diffing collection time.
* Fixes#385, #411 - Filter out spaces, invites and tombstoned rooms from the room list
* Various tweaks following code review
* 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
* 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.
* 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
* Set visible ranges on the home screen sliding sync view
* Prevent the visible items from being updated while in search mode
* Enable diffs on invalidations as they seem to fix duplicated events in the home screen room list
* Promoted some diffing logs to info from verbose
* Add diffing logs and be more aggresive about unexpected states
* Move diff collection on a serial queue
* Handle now optional `addTimelineListener` result
* Treat RoomSummaryProvider invalidations separately
* Bump RustSDK to v0.0.9-demo
* Create media player screen
* Introduce `FileCache` to cache message attachments
* Add file loading functionality into the media provider
* Process tap action on timeline items
* Pass item taps to view model
* Navigate to media player on view model callback
* Commit project file
* Add changelog
* Add file messages into the timeline
* Create file preview screen
* Display files in the preview screen
* Commit project file
* Update Rust SDK to 1.0.19-alpha
* Add changelog
* Bump the RustSDK to `v1.0.20-alpha`
* Configure audio session on video playback
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>
* Fixes#276 - Rebuilt room timeline:
- Removed the need for the ListCollectionViewAdapter
- Rewrote the TimelineItemList without using introspection
- Added ReversedScrollView for laying out items at the bottom/trailing
- Rewrote TimelineProvider diffing through CollectionDifference (similar to the RoomSummaryProvider)
- Added back `scrollDismissesKeyboard` behavior
- Various other tweaks and fixes
- Fixed various warnings:
- removed async AttributedStringBuilder as AttributedString is non-sendable, made the RoomTimelineItemFactory synchronous
- removed unused virtual timeline items
- removed unused isOutgoing property from the FormattedBodyText
* Make TimelineItemContextMenuActions indentifiable and specify contextMenu identifiers
* Bump the matrix-rust-components-swift to v1.0.16-alpha
* Add changes file and changelog contribution guide
* Fix attributed string builder unit tests
* Fix Timeline on Xcode 14/iOS 16
Raise requirement to iOS 16+
Reduce pagination jumping.
Sonarcloud fixes.
Fix verification test.
Adopt if let optional { syntax.
* Remove unused ScrollViewReader
The ScrollViewReader didn't appear to change the behaviour.
* Fix warnings on Run Scripts.
Run script build phase 'SwiftLint' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase.
* Remove redundant string
* Use placeholder avatar on home screen
* Add initial home screen ui test
* Fix settings screen PR remarks
* Remove UIKit alert from home screen sign out
* Remove UIKit alert from soft logout clear all data
* Add reference screenshots for home screen UI tests
* Formatting fixes
* Add clearing room method to client proxy
* Clear room proxies on screen dismiss
* Fix retain cycle in room view model
* Do not go into authentication state immediately
* Define sizes for user and room avatars on different screens
* Use defined avatar sizes everywhere
* Disable image disk caching
* Rename rounded corner shape
* Fix text color of placeholder avatars
* Fix PR reviews on formatted body text
* Fix merge conflict
* Remove shouldShowSenderDetails everywhere and just use it from inGroupState
* Remove redundant linter disablings
* Fix PR remarks
* Rename media provider size parameter