Commit Graph

113 Commits

Author SHA1 Message Date
Stefan Ceriu
c6a6a4b127 Secure backup tweaks (#2122)
* Show the recovery section if key backup is anything **but** disabled

* Don't show an action on secure backup if its current state is unknown

* Do not show a badge on the home screen avatar while the recovery state is unknown

* Do not assume key backup is disabled when its state is unknown. If the state is unknown, check if a backup exists remotely.

* Dedupe remote backup state requests and handle task cancellations
2023-11-21 10:59:10 +02:00
Stefan Ceriu
b9081f02ea Fix room list search bar focus glitches (#2112)
* Fixes #2112 - Room list search bar focus glitches

* Address PR comments
2023-11-17 18:08:29 +02:00
Stefan Ceriu
03b73a1605 Display whether a call is ongoing in any particular room on the room list 2023-11-13 17:02:02 +02:00
Stefan Ceriu
098b960b3f Fixes #2040 - Prevent the room list from staying empty after cancelli… (#2041)
* Fixes #2040 - Prevent the room list from staying empty after cancelling a search

* Address PR comments, simplify implementation
2023-11-07 17:54:04 +02:00
Stefan Ceriu
519cd938b7 Key backup Rust API adoption (#1952)
* Adopt Rust side secure backup APIs (incomplete, based on poljar/backup-pr)

* Implement the home screen recovery key confirmation banner.

* Update with the latest Rust changes.

The loading button for .unknown was incorrect. It should be treated as disabled.

---------

Co-authored-by: Doug <douglase@element.io>
2023-10-27 20:16:51 +01:00
Stefan Ceriu
2f5ffd43f8 Key backup returns (#1951)
* Converge on UserSessionFlowCoordinator logout confirmation

* Add logout confirmation screen strings to untranslated.

* Fix chat backup learn more URl fragment.

* Implement logout flows that check recovery and key backup for the last session

* Move logout confirmation screen strings to localazy

* Change encrypted timeline item copy to "Waiting for decryption key"

* Use different encrypted history banner based on key backup states

* Introduce a SettingsFlowCoordinator and implement navigation directly to the secure backup screen from the logout flows.

* Fix **mocked** secure backup controller flows

* Simplify encrypted history banner logic

* Address PR comments
2023-10-24 18:38:41 +03:00
Stefan Ceriu
1fe4244fe0 #1899, #1900, #1901 - Implement chat backup setting screens 2023-10-19 15:34:10 +03:00
Stefan Ceriu
89cb8c9291 Room list searching tweaks (#1800)
* Prevent the room list from flashing previous rooms when searching

* Remove reset diff chunking now that the whole list is limited

* Bump the Rust SDK to v1.1.19 and fix breaking API changes
2023-09-26 14:33:15 +03:00
Stefan Ceriu
9bc721d5d9 Remove debouncing from room list searches as everything is faster now 2023-09-18 15:41:56 +03:00
Stefan Ceriu
1f8637d19e Cleanup home screen state handling after rust side fixes 2023-09-18 15:41:56 +03:00
Stefan Ceriu
af8a13bc91 Change user display name and avatar (#1718)
* Fixes #1715, #1716 - Add new user profile editing screen

* Bump SDK, adopt new `client.removeAvatar()` method

* Address PR review comments
2023-09-15 16:20:33 +03:00
Stefan Ceriu
ce1f213f42 Switch callbacks to combine (#1710)
* #750 - Convert the SoftLogoutScreen to combine

* #750 - Convert the UserSessionFlowCoordinator to Combine

* #750 - Convert the AnalyticsPromptScreen to Combine

* #750 - Convert the LoginScreen to Combine

* #750 - Convert the ServerSelectionScreen to Combine

* #750 - Convert the EmojiPickerScreen to Combine

* #750 - Convert the HomeScreen to Combine

* #750 - Convert the MediaUploadPreviewScreen to Combine

* #750 - Convert the OnboardingScreen to Combine

* Rename `Onboarding` to `OnboardingScreen`

* #750 - Convert the ReportContentScreen to Combine

* #750 - Convert the RoomDetailsSscreen to Combine

* #750 - Convert the RoomMemberDetailsScreen to Combine

* #750 - Convert the RoomMembersListScreen to Combine

* #750 - Convert the SessionVerificationScreen to Combine

* #750 - Convert the SettingsScreen to Combine

* #750 - Convert the AdvancedSettingsScreen to Combine

* #750 - Convert the DeveloperOptionsScreen to Combine

* Fix the unit tests

* Use .sink action and the same cancellables constructor everywhere

* Cleanup cancellables when setting up tests
2023-09-14 12:53:33 +03:00
Stefan Ceriu
4ba9791654 Fixes #1342 - Remove custom last message for rooms that don't have one 2023-09-13 18:05:09 +03:00
Nicolas Mauri
258d5f3184 Remove notification settings feature flag (#1693) 2023-09-13 12:05:32 +00:00
Stefan Ceriu
25b9e6aee4 Fixes #1640 - Prevent loading skeletons from being dismissed too soon. Avoid weird animations caused by the session verification banner. 2023-09-13 12:36:26 +03:00
Nicolas Mauri
8cd3d345e4 Display the notification mode for each room in the the room list (#1595)
Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com>
2023-08-31 11:15:38 +00:00
Stefan Ceriu
0152e4147b Fix computing the time it takes to render the first rooms 2023-08-29 13:06:51 +03:00
Stefan Ceriu
0512fcf329 Move the firstRooms signposts to more relevant locations 2023-08-25 13:33:06 +03:00
Stefan Ceriu
35cf6db6dd Signposting: split sync into initialSync and firstRooms which will track how long the very first sync takes separately from how long the first rooms appear in the list 2023-08-24 18:19:42 +03:00
Stefan Ceriu
ff435c438c Revert "Revert "Reduced room summary provider logging""
This reverts commit 2e357c9d39.
2023-08-23 16:17:49 +03:00
Stefan Ceriu
2e357c9d39 Revert "Reduced room summary provider logging"
This reverts commit 45ebe1724b.
2023-08-23 11:04:10 +03:00
Stefan Ceriu
45ebe1724b Reduced room summary provider logging 2023-08-22 16:36:44 +03:00
Stefan Ceriu
a2ba41ed2a Switch entirely to dynamic room list entries (normalizedMatchRoomName brings the same behavior as the old implementation) and cleanup 2023-08-22 11:12:41 +03:00
Stefan Ceriu
ec1f25ea04 Rename fuzzy search feature flag to dynamic entries, use the new normalizedMatchRoomName filter and make sure we use the old roomList.entries api when the feature flag is disabled 2023-08-21 17:22:18 +03:00
Stefan Ceriu
0bb1e5911d Revert "Remove fuzzy searching entirely because of performance issues"
This reverts commit 5016246c62.
2023-08-21 17:22:18 +03:00
Stefan Ceriu
5016246c62 Remove fuzzy searching entirely because of performance issues 2023-08-18 16:17:47 +03:00
Stefan Ceriu
98adead834 Fuzzy searching debouncing (#1506)
* Add debouncer to room list fuzzy searching

* Fix function_body_length violation

* Filter out search query changes if fuzzy searching is not enabled
2023-08-17 15:35:59 +03:00
Doug
ee430e7e2c Enable fuzzy search behind a feature flag. (#1490) 2023-08-14 16:41:41 +00:00
Stefan Ceriu
c981e2dc1b Revert "Adopt fuzzy searching through the RoomListService's dynamic filter" because of performance issues
This reverts commit fcca9be20f.
2023-08-13 19:38:57 +03:00
Stefan Ceriu
fcca9be20f Adopt fuzzy searching through the RoomListService's dynamic filter 2023-08-12 09:47:09 +03:00
Stefan Ceriu
7c3e33954a Fix room list service cold cache support. Make sure we dispatch the initial room list and use it for computing the home screen state 2023-08-10 09:58:46 +03:00
Stefan Ceriu
127e7f29a6 Tweak swiftlint settings 2023-08-08 11:48:40 +03:00
Doug
63fbd5ab60 Add an empty state on the home screen. (#1450) 2023-08-07 10:10:42 +01:00
Michael Kaye
a1b66c170f Performance tests (#1301)
* Add signposts to performance tests.

- Update flow to include support for the migration screen.

* If the welcome screen shows, click on the button.

* Ensure a clean simulator each run.

* Add accessibility identifier for migration screen if required.

* Handle walking into the room and back out again.

* use iphone 14 pro to match what's used in xcode.

* Remove ApplicationTests as duplicated in LoginTests.

We measure app startup time in LoginTests as part of the flow - we may as well avoid spending 60s doing only that measurement in ApplicationTests

* Sleep 10s, the ui is otherwise showing up in random order.

* Revert "Remove ApplicationTests as duplicated in LoginTests."

This reverts commit 8670710315bcd0d6c3c3046f534b32b4c728b837.

* Update script to parse out correct values from results file.

* Allow cancellation of password prompt in any order.

* Remove test timeout, performance tests will always take a while.

* Adjust parsing further

* Remove ApplicationTests.

* Move to a more elegant way to wait for something to disappear.

* Linting.

* Fix unit tests.

---------

Co-authored-by: Doug <douglase@element.io>
Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
2023-07-11 10:32:24 +01:00
Stefan Ceriu
924fd166b1 Fixes #954 - Implement media upload cancelling 2023-06-29 13:32:42 +03:00
Stefan Ceriu
abe1df2524 Removed unused swipe gesture (+3 squashed commits)
Squashed commits:
[d64bb3bb] Stop using the ServiceLocator directly in the ScreenTrackerViewModifier
[37c46ab9] Rename Analytics to AnalyticsService
[8852a371] #920 - Cleanup ServiceLocator usages
2023-06-28 11:33:41 +03:00
Stefan Ceriu
241df9c157 Room list service (#1138)
* Adopt the new RoomListService

* Use client.roomListWithEncryption

* Store the roomList so that it doesn't get dropped and create problems on the rust side

* Use roomListService instead of old roomList client method

* Added back documentation removed by mistake

* Tweaks following code review, SDK bump
2023-06-22 19:59:32 +03:00
Stefan Ceriu
ca5dfbe7f0 Various UI tweaks (#1112)
* Tweak invites button frame and padding

* Implement persistent selections on the room list

* Stop showing rooms when focusing the room list search field with an empty query

* Tweaks after code review

* Improve invite button UI

* Fix unit tests
2023-06-20 12:20:26 +03:00
Stefan Ceriu
e59e5ee2c9 Add back custom identifiers for invalidated room, avoid duplicates and gaps on the room list 2023-06-19 17:51:40 +03:00
Doug
8c6e082a0e App Polish (#1098)
* App polish

- Skeleton avatar colour on app switching.
- Bug report icon and string.
- Semi-bold font on room list timestamps.
- Room attachments button spacing and alignment.
- Replace link tint with semi-bold font in AnalyticsSettingsScreen.
- Semi-bold font on Invites button.
- Add padding to media attachment sheet.
- Message composer header layout tweaks.
- Remove indicator after changing homeserver with an MXID.
- Change copy permalink string.
- Formatting of link in Analytics Prompt.
- Remove indicator after changing homeserver with an MXID.
- Change copy permalink string.
- Formatting of link in Analytics Prompt.
- Only semi-bold the room timestamp when unread.
- Tweak the colour of the date separator.
- Add activity indicator to toast style user indicator.
2023-06-16 16:41:25 +00:00
Stefan Ceriu
56530ed55f Add support for the new RoomList API (#1092)
* Add support for the new RoomList API

Squashed commits:
[8c2625a] Re-enable invites
[339e59b5] Add automatic syncing restarts after entering the terminated state for whatever reason
[b5498e96] Reimplemented room list state management and usage
[8154b0cf] Fix visible rooms range setting after scrolling stops
[5155c44d] Hook up initial loading idicator and session verification banner to room list service states
[700a5a2e] Enable back room subscriptions, timeline listeners and unread notifications / counts
[9df383bc] Enable last messages and timestamps, they don't crash on release builds
[7c4da9da] Add back certain fields now that the "full room" is available
[9f6534a7] Adopt interfaces to new RoomList API, untested as requests don't go to the right URL

* Tweaks following code review

* Bump the RustSDK to v1.0.76-alpha
2023-06-16 16:11:45 +03:00
Alfonso Grillo
5df4e32fef Add indicator after leaving a room (#981)
* Refactor UserIndicatorModalView to support no progress

* Add room left indicator in HomeScreenViewModel

* Apply PR suggestion
2023-05-30 12:32:07 +02:00
Alfonso Grillo
f2f335d3f3 Invite people in an existing room (#915)
* Handle power levels

* Add “invite” button in RoomMembersListScreen

* Refactor DI in RoomDetailsScreenCoordinator

* Add navigation to “select people” coordinator

* Add InviteUsersScreenRoomContext

* Add invite user by id api

* Updare InviteUsersScreenRoomContext

* Support disabled state on FormButtonStyles

* Handle membership in UserProfileCell

* Fix conflicts

* Refactor RoomContext -> RoomType

* Refactor UserProfileCell

* Add invite action

* Setup navigation to user flow coordinator

* Add invite logic

* Fix test build errors

* Address comments

* Fix localisations

* Update required state

* Handle error

* Move invite logic in RoomDetailsScreenCoordinator

* Add navigation from room’s members list

* Fix UTs

* Fix missing display name in RoomMemberDetails

* Add user indicator

* Add feature flag

* Add RoomDetailsViewModel UTs

* Add room details ui tests

* Add InviteUsersViewModelTests UTs

* Add UI tests

* Update UI tests

* Empty commit
2023-05-22 14:03:07 +00:00
Alfonso Grillo
0cb4dbfba5 Add share link in start chat flow (#926) 2023-05-19 15:34:35 +00:00
Alfonso Grillo
fedf50e047 Optimize leaving a room from home screen (#868)
* Use joinedMembersCount in HomeScreenViewModel

* Update matrix-rust-sdk to 1.0.62-alpha
2023-05-09 17:06:19 +02:00
Alfonso Grillo
858e155a07 Contextual menu for rooms (#842)
* Add room contextual menu

* Add room context menu view actions

* Add navigation to room’s detail

* Show leave alert in HomeScreen

* Implement leave logic

* Refine leave navigation for iPad

* Optimize leave from homescreen

* Refactor roomSettings -> roomDetails

* Refactor room for id mock

* Add UTs

* Cleanup

* Fix alert presentation in RoomDetailsScreenViewModel

* Fix animation flag
2023-05-04 10:02:18 +00:00
Alfonso Grillo
5a300d3886 Add invites badges (#819) 2023-04-21 11:14:27 +00:00
Stefan Ceriu
b391d7f698 #748 - Implement methods for processing various media types and prepa… (#772)
* #748 - Implement methods for processing various media types and preparing them for upload

* Various tweaks following code review:
- added blurhash generation
- changed thumbnails to jpeg
- throwing if file size cannot be retrieved
- move MediaProvider files to separate folder so they can cleanly be imported in the NSE
- added audio file processing
- switched all image resizing methods to ImageIO
- various renames

* Fix blurhash formatting issues, `swift-format-ignore-file` doesn't work

* Processing all media within unique folders to avoid conflicts

* Fix various warnings

* Rename `sizeForItemAt(_ url: URL)` to `sizeForItem(at url: URL)`

* Remove unnecessary resizeImage(UIImage) method, start by copying not moving the file to the unique location

* Add back warning for roomDetails.avatarURL
2023-04-21 12:13:36 +03:00
Alfonso Grillo
de20e3a534 Accept and decline invites (#806)
* Add accept/decline invite api

* Fix isDirect logic

* Add logic for accepting/decling invites

* Add error handling structure

* Add decline alert

* Add navigation to joined room

* Add generic error

* Add changelog.d file

* Cleanup

* Fix failing UTs

* Add UTs

* Add UI tests

* Cleanup

* Update ref screenshots

* Refactor invitesScreen state

* Improve switch handling in UserSessionFlowCoordinator

* Fix build error
2023-04-19 17:05:24 +02:00
Alfonso Grillo
815da82c13 Invites list (#787)
* Setup invites SS window

* Add invites label in the home screen

* Add empty invtes list

* Setup navigation to invites list

* Inject invitesSummaryProvider

* Show invites

* Add InviteCell

* Refine InviteCell UI

* Push invites

* Amend SS configuration

* Add inviter in RoomProxyProtocol

* Add Invite model type

* Improve InviteCell

* Fix media provider injection

* Refine InviteCell

* Refine invite cell

* Add invites feature flag

* Try different SS config for invites

* Regiester invites view in configureViewsPostInitialSync

* Cleanup

* Start tests

* Cleanup code

* Add changelog.d file

* Add tests

* Handle canonical alias

* Add InvitesListScreen previews

* Add localisations and improve UI tests

* Add reference screenshots

* Cleanup code

* Fix UT build errors

* Refactor InvitesList -> Invites

* Apply pr comments

* Remove reduntant @MainActor

* Naming cleanup

* Fix InvitesScreenCell.title

* Add accept/decline InvitesViewAction

* Revert Package.resolved

* Add warning in InvitesScreenCell

* Improve PlaceholderAvatarImage

* Record snapshots again

* Refactor Invite -> InvitesRoomDeatils

* Rename identifier in PlaceholderAvatarImage
2023-04-14 10:49:57 +00:00