* Basic implementation completed but it requires some bug fixing and polishing (+4 squashed commits)
Squashed commits:
[43f0064e] now the content of the room details reflects the expected dm details content when the conditions are met
[fe6f2b5e] replaced existing headers with a composable and reusable HeaderView
[3c00120a] now the members are fetched every time the room is opened
[421d539b] refactored the members fetching to be immediate in case the room could be a direct chat
* polished the code and fixed some bugs that prevented the updated state of the members to be displayed in the room details view (+1 squashed commit)
Squashed commits:
[6bf98473] fix for the button not being destructive in room details screen
* removed copy button and updated copy
* moved a file and renamed header view
* addressed all PR comments
* sdk bump
* UI tests
* unit tests
* changelog
* updated mocks
* removed a duplicated signature in a mock
* generated files
* Revert "generated files"
This reverts commit f62c1dbcd9e505083ad4ff17532e2c054e253187.
* renaming files to RoomMembersList
* completed the renaming of the list files
* added generated files
* basic setup of the view and the mock
* added a new mock with a avatar
* share/copy link
* copyUserLink implemented
* removed unimplemented tests
* block user UI
* navigation to room member details added
* implemented but we require a sync from the Rust side
* adjusted some UI test screens
* alert for unblocking
* completed
* some tests
* changelog
* ignore user ui enabled
* loader inside the button when the request is fetching
* removed unused code
* blocking the button while loading
* improved the code
* changelog
* UI tests
* unit tests
* added collection concurrency kit
* Revert "added collection concurrency kit"
This reverts commit 499fbe129f73a75e903d9f4952fe2ad672930f04.
* replaced the asyncMap with a @MainActor builder function
* pr comments
* added localazy to setup
* sdk bump to 1.0.49
* generated files
* Revert "generated files"
This reverts commit f62c1dbcd9e505083ad4ff17532e2c054e253187.
* renaming files to RoomMembersList
* completed the renaming of the list files
* added generated files
* basic setup of the view and the mock
* added a new mock with a avatar
* share/copy link
* copyUserLink implemented
* removed unimplemented tests
* block user UI
* navigation to room member details added
* implemented but we require a sync from the Rust side
* adjusted some UI test screens
* alert for unblocking
* completed
* some tests
* changelog
* some unit tests
* improved the tests
* removed unused comment
* Update ElementX/Sources/Services/Room/RoomProxy.swift
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* optional displayName
* removing toggle
* removed cancel title
* Update UnitTests/Sources/RoomMemberDetailsViewModelTests.swift
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* removing Group
* pr suggestion
* better naming
* removed capitalizingFirstLetter
* Update ElementX/Sources/Other/Extensions/Alert.swift
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* trailing closure
* removed useless catch clause
* naming conformed to ignore
---------
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* created the row in the view and the alert, and added the new function to the RoomProxy
* fixed an issue with the alert function
* handling the navigation
* fixed a bug with the detail coordinators being dismissed incorrectly when inside a stack
* implementation completed
* replaced UI screenshots
* added a test for the fixed bug of the coordinators
* trying to increase the wait time for the expectation
* improved the test
* improved the buttons UI
* uploading artifacts for unit tests
* added result bundle true
* improved the tests
* added a new test
* pr suggestions
* updating mock
* PR suggestions
* improved tests
* fixed UI tests
* pr should be ready now
* removed testing code
* reduced complexity
* fixed test
* added a an assert to the new test case
* more tests and messages cases
* pr comments addressed
* completed
* add start chat flow with UI
* add feature flag for start chat
* add changelog
* fix naming and tests
* fix empty display name in user cell
* Update ElementX/Sources/Application/AppSettings.swift
Co-authored-by: Alfonso Grillo <alfogrillo@element.io>
* add screenshots from UI test
* fix swiftFormat and add identifiers
* fix warnings
---------
Co-authored-by: Alfonso Grillo <alfogrillo@element.io>
* work in progress, was able to generate a mock for the RoomProxyProtocol, I'll try if I can swap the mock we have with this one
* removing swiftformat from generated
* added the disable of swiftlint directly into the .stencil
* testing if danger still complains
* improved the stencil
* session verification controller proxy using auto mockable
* BugReport mocks and tests added
* changelog
* fixing a typo
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* fix typo in the test
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* removing the Protocol word from the type if present
* using extension in place of a subclass
* removed unused imports
* improved the yielding code
* moved Sourcery files
* stencil master
---------
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* created the empty files
* set up the view content
* connected the Room Coordinator to the ReportContent Coordinator
* added the loading indicators and the dismiss behaviour
* almost completed but I need to display the success indicator when the report is sent succesfully
* completed
* added an untranslated string
* tests
* Update ElementX/Sources/Screens/RoomScreen/RoomScreenCoordinator.swift
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* Update ElementX/Sources/Screens/ReportContent/View/ReportContentScreen.swift
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* pr comment
* pr suggestion
* removing unused identifiers
* fixing compilation error
* added a form text editor view
* changelog
---------
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
* Fixed UI test problems introduced after the accessibility identifier changes
* Disable parallel UITests, they don't seem to work properly
* Fix UITests `elementFallbackLanguage`
Add locale to signalling service name.
Type strings character by character.
Add a default test timeout of 1 minute.
* Directly set UI Tests screens as the root screen.
Speeds up test runs by removing scrolling and searching for buttons.
* Parallelise test runs from Xcode (not fastlane).
* Disable signalling based tests.
* updated the tests
* updated ui tests
* removed unused files
* fixed a bug that prevented the image to be added in the avatar of the rooms from the mock, and improved some UI tests
* swiftformat
* fixed an issue where the room Id was not matching the real room id coming from the timelineController, also updated some tests, and added a test for the case where the RoomAvatar is available.
* added some waitForExistence checks to allow the CI to find the UI elements
* this should make the loading bar always match at the HStack size
* code improvement for the tests
* fix for the max frame of the loading screen
* updated tests
* regenerated and improved some tests
* sonarcloud improvements
* changelog
* 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>
* 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>
* Fix race condition on session verification tests.
* Fix clear button on text field.
* Add a timeout to UI test signalling.
* Use snapshot testing for login screen.
* 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.
* Add signalling between UI tests and the app.
* Fix navigationStack on roomLayout screens and update screenshots
Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
* 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>
* 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
* Screens template
* Loading and parsing
* Gridview
* New json
* Search method
* Unit tests
* Added emoji provider state
* Removed containsIgnoringCase
* Added plus icon, added double tap gesture, dismiss sheet after selecting emoji
* Renamed EmojisProvider to EmojiProvider
* Renamed EmojiPickerScreenScreen
* Extra padding
* Renamed EmojisLoaderProtocol
* Category names
* Moved method into public section of the class
* Return all categories when search string is empty
* Added cancel button and tittle
* Removed empty lines
* Removed swiftlint warning
* Remove status bars when running UITests
* Remove simulator OS versions from screenshot names, be less lenient with image diffing
* Rename UITests splash screen to onboarding
* Switch tests to Xcode 14.1, remove version names for used simulators and switched from iPhone 13 Pro Max to iPhone 14
* Fix ServiceLocator and fallbackLaguage for UI tests
* Drop snapshot diffing precision to 0.99 as 0.999 triggers false negatives
* Fix server selection UI tests after exposing the sliding sync proxy configuration
* Update reference screenshots
* Fixes#286 - Adopted the new SwiftUI NavigationStack based NavigationController throughout the application
* Fixes#315 - Implemented new user notification components on top of SwiftUI and the new navigation flows
* Add home screen fade animation between skeletons and real rooms
* Bump the danger-swift version used on the CI and swiftlint with it
* Renamed Splash to Onboarding, Empty to Splash
* 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
* Rename media to video
* Add a loader when large videos being processed
* Add back button explicitly on video screen, fixes for light scheme
* Handle right swipe to dismiss video