Commit Graph

128 Commits

Author SHA1 Message Date
Stefan Ceriu
6f05a08694 Fix some concurrency warnings, update missed licence headers. (#3741)
* Switch the TimelineController to an async sequence and fix the warnings on the UserIndicatorController
2025-02-06 11:35:23 +02:00
Doug
bacaf5df8d Use the new preview screen when tapping media on the room and pinned events screens. (#3736)
* Use the new TimelineMediaPreview modifier on the room and pinned timeline screens.

* Use the same presentation logic for all timeline media previews.

* Fix a bug with the detection of the timeline end.

* Send pagination requests from the media preview screen.

* Add SwiftLint to the Danger workflow (it is no longer installed on the runner).

* Put SwiftLint back on all of the GitHub runners too.

* Set the function_parameter_count lint rule to 10.

* Make sure to clean-up any previews when the coordinator is done.

* Handle the viewInRoomTimeline action more appropriately.
2025-02-05 13:27:23 +00:00
Doug
61ca5c35f7 Refactor Rust timeline identifiers into our own. (#3731)
* Refactor eventOrTransactionID.

* Refactor uniqueID.
2025-02-04 09:50:46 +00:00
Doug
4312a604c1 RoomTimeline… refactor (drop the Room). (#3728)
* Add the timeline controller factory to the timeline view model.

In preparation for building a timeline to swipe through media in QuickLook.

* Refactor RoomTimelineControllerFactory.

* Refactor RoomTimelineController.

* Refactor RoomTimelineProvider.
2025-02-03 14:14:01 +00:00
Stefan Ceriu
c55f5e1e45 Bump the SDK to v25.01.10-2, fix breaking API changes around sending media and mentions 2025-01-10 19:09:52 +02:00
manuroe
c29f4cc9b4 Dual licensing: AGPL + Element Commercial (#3657)
* New LICENSE-COMMERCIAL file

* Apply dual licenses: AGPL + Element Commercial to file headers

* Update README with dual licensing
2025-01-06 11:27:37 +01:00
Stefan Ceriu
475afcfab5 Automatically retry decryptions in the active room when the app becomes active again just in case the NSE received keys we're not aware of (#3628) 2024-12-18 11:10:56 +02:00
Stefan Ceriu
265eaba3ae Fix state change commented by mistake and simplify snapshot test setup (+ a couple of warnings) 2024-12-17 11:06:33 +02:00
Stefan Ceriu
ffad834cd3 Fix the media gallery's empty state showing up at wrong times. 2024-12-16 19:21:28 +02:00
Doug
aa6487ed22 Hook up the actions in the media details sheet. (#3607) 2024-12-12 09:22:36 +00:00
Mauro
4e057fe195 Design Tweaks (#3606)
* updated the order of the room details

also...
- removed the bloom bg from the join room screen
- now DMs do not necessarily need to be encrypted rooms
- changed bg of the knock banner

* removed unnecessary disabled

* updated join room screen tests
2024-12-11 17:42:33 +00:00
Stefan Ceriu
2c69019046 Monthly media gallery separators (#3601)
* Fix the order of the items in the media grid.
* Add media gallery timeline separators.
* Change the `SeparatorRoomTimelineItem` to have it expose a Date timestamp instead of a text string.
2024-12-11 13:32:29 +02:00
Stefan Ceriu
a297643443 Bump the RustSDK to v1.0.79; add a feature flag for the new rust side ClientBuilder::useEventCachePersistentStorage 2024-12-10 18:19:31 +02:00
Stefan Ceriu
e75c930d8f Media gallery - part 1(#3588)
* Introduce a `MediaEventsTimelineFlowCoordinator`
* Update SDK API and architecture
* Add a feature flag, add translations
* Move the media events timeline presentation under the room flow coordinator state machine
* Rename `TimelineViewState.timelineViewState` of type `TimelineState` to `timelineState`
* Enabled SwiftLint's `trailing_closure` rule and fix the warnings.
2024-12-06 16:58:14 +02:00
Doug
acda16ddc3 Handle media source validation more gracefully. (#3571)
* Handle media source validation more gracefully.

* Fix unit tests.
2024-11-29 12:42:27 +00:00
Doug
036ed9a667 Add support for adding/editing/removing media captions. (#3547)
* Add support for editing media captions.

* Add composer snapshots.

* PR comment.
2024-11-21 18:18:27 +00:00
Stefan Ceriu
7aaeb0053e Bump the RustSDK to v1.0.67 (#3512)
* Bump the RustSDK to v1.0.67

* PR comments

---------

Co-authored-by: Doug <douglase@element.io>
2024-11-13 18:03:30 +00:00
Stefan Ceriu
07cf873484 Share extension (#3506)
* Setup simple share extension

* Switch the app url scheme to be the full bundle identifier

* Setup a share extension that show a SwiftUI view, uses rust tracing and redirects to the hosting aplication

* Move media as json through the custom scheme into the main app and deep link into the media upload preview screen

* Fix message forwarding and global search screen room summary provider filtering.

* Tweak the message forwarding and global search screen designs.

* Add a room selection screen to use after receiving a share request from the share extension

* Fix share extension entitlements

* Share the temporary directory between the main app and the extensions; rename the caches one.

* Remove the no longer needed notification avatar flipping fix.

* Extract the placeholder avatar image generator from the NSE

* Nest `AvatarSize` within the new `Avatars` enum

* Donate an `INSendMessageIntent` to the system every time we send a message so they appear as share suggestions

* Support suggestions in the share extension itself

* Improve sharing animations and fix presentation when room already on the stack

* Clear all routes when sharing without a preselected room.

* Fix broken unit tests

* Various initial tweaks following code review.

* Correctly clean up and dismiss the share extension for all paths.

* Move the share extension path to a constants enum

* Rename UserSessionFlowCoordinator specific share extension states and events

* Add UserSession and Room flow coordinator share route tests

* Tweak the share extension logic.
2024-11-13 14:02:47 +02:00
Doug
94daf13135 Replace individual RoomProxy properties with a stored RoomInfo. (#3445)
* Store RoomInfo updates in JoinedRoomProxy and read from them directly.

* Remove all RoomProxy properties that were reading from the RoomInfo.
2024-10-28 12:29:31 +00:00
Doug
901777dcc3 Show a verification badge on the Room Member/User Profile screens. (#3427)
* Add a badge for verified users/room members.

* Reorder subviews.

* Add a (disabled) button to verify other users.

* PR comments.

* Update the SDK.

* Adopt the SDK changes introduced in matrix-rust-sdk/pull/4100

---------

Co-authored-by: Stefan Ceriu <stefan.ceriu@gmail.com>
2024-10-21 16:07:19 +01:00
Stefan Ceriu
51751606ca Adopt various rust side Timeline API additions (#3423)
* Adopt new reaction toggling API introduced in matrix-org/matrix-rust-sdk/pull/4127

* Adopt the changes introduced in matrix-org/matrix-rust-sdk/pull/4111: use the new `TimelineUniqueId` type instead of `String` for unique timeline identifiers.

* Bump the RustSDK to v1.0.58.

* Fix unit tests
2024-10-16 19:08:34 +03:00
Stefan Ceriu
2c31885355 Refactor theTimelineItemIdentifier handling; stop relying on optional EventOrTransactionIds and be explicit when setting composer modes from the draft service. 2024-10-16 16:37:47 +03:00
Stefan Ceriu
45d59c57d6 Bump the RustSDK to v1.0.53: adopt latest record based timeline item APIs (#3356) 2024-10-01 18:50:11 +03:00
Stefan Ceriu
89eae00479 Switch license to AGPL (#3237)
* Switch license file to AGPL

* Update file copyright headers

* Update the default project file header
2024-09-06 16:34:30 +03:00
Doug
a5ae697cac Update the SDK. 2024-08-30 14:45:54 +03:00
Mauro
87f8c2eaaf TimelineKind refactor (#3193) 2024-08-22 18:33:21 +00:00
Mauro
bbb462bd83 Pinned Events Timeline actions and differentiation (#3182) 2024-08-22 17:35:44 +02:00
Stefan Ceriu
34eb596c1a Introduce a new RoomProxyType and treat rooms differently based on their membership state 2024-08-21 12:24:20 +03:00
Mauro
ecddcfcd16 RoomScreenViewModel is now TimelineViewModel (#3157)
Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
2024-08-13 13:36:40 +02:00
Mauro
28bfa3f5dc Pinned items timeline implementation for the banner (#3099) 2024-08-05 14:09:05 +02:00
Mauro
30351a7712 Pin/Unpin Logic (#3084) 2024-07-26 20:41:00 +02:00
Mauro
d3952cf501 Fix editing items not in the timeline failing (#3075) 2024-07-22 13:15:57 +02:00
Stefan Ceriu
98e804f489 Allow showing the developer options on any build type by tapping the settings screen version footer 7 times (a la android) 2024-06-12 13:07:00 +03:00
Stefan Ceriu
4a56fa75ad Cleanup dead code after Periphery run 2024-06-11 14:38:08 +03:00
Stefan Ceriu
425f4bd45f Fixes #2842, fixes #2841 - Adopt new message sending queue API
- automatically retry failed requests as soon as the network is availble again
- remove manual retry options
2024-06-06 12:59:03 +03:00
Doug
a122c30ce4 Move message forwarding out of the flow coordinator. (#2738) 2024-05-07 15:04:11 +01:00
Doug
452a4c12b8 Permalink polish (#2771)
* Fix unbalanced padding.

* Animate the scroll to an event when it is already loaded.

* Perform the timeline clearance immediately before replacing the items.
Hides the empty timeline that was briefly shown.

* Make switching timeline more resilient.
2024-05-02 17:51:38 +01:00
Doug
335b61abab Permalink Tweaks (#2768)
* Revert back to creating a new flow when re-selecting the same room.

Fix the composer bug by adding IDs to the all of the module AnyViews.

* Don't show the live timeline when starting with a focussed event.
2024-04-30 17:25:32 +01:00
Doug
51b8785fa0 Event Permalink Tweaks (#2754)
* Handle errors focussing the timeline.

* Add a test for focussing on an existing timeline item.
2024-04-29 10:00:41 +01:00
Doug
d2e04e34b7 Update the SDK and enable event permalinks. (#2748) 2024-04-26 09:59:01 +01:00
Doug
0b2bb7f056 Prepare for event focus and forward pagination (#2745)
Neither are available yet.
2024-04-25 18:32:33 +01:00
Stefan Ceriu
b7d98a1415 With date separators not longer duplicated switch back to using their timestamps (formatted even) as stable identifiers 2024-04-16 19:27:45 +03:00
Stefan Ceriu
fd0eb78dbe Onboarding flow coordinator and FTUE changes (#2578)
Fixes #2595, fixes #2594, fixes #2593, fixes #2592, fixes #2591
2024-03-21 14:01:23 +02:00
Doug
0399af52d9 Add RoomDetails for use (with RoomMemberDetails) in AvatarHeaderView. (#2490)
* Add RoomDetails and refactor AvatarHeaderView to use it.
* Remove old displayName property and use RoomDetails in the RoomDetailsScreenViewState
2024-02-21 14:19:05 +00:00
Stefan Ceriu
8107d12844 Bump the RustSDK, adopt new marking/flagging rooms as (un)read API and fix sending read receipts when entering rooms or making the app active again 2024-02-14 12:33:19 +02:00
Stefan Ceriu
2c4a12da4b Fixes #2347, #2348, #2349 - Add support for typing notifications 2024-02-13 15:27:52 +02:00
Mauro
306597e52d Room List Filters implementation (#2423) 2024-02-08 16:50:44 +01:00
Stefan Ceriu
61d0b8fdbb Fixes #2360 - Add support for manually marking rooms as unread (#2408)
* Fixes #2360 - Add support for manually marking rooms as unread

* Add analytics for marking rooms as (un)read

* Remove unnecessary analytics abstraction levels

* Fix breaking API changes following SDK bump

* Add changelog

* Handle PR comments

* Fix unit tests
2024-02-05 18:06:50 +02:00
Stefan Ceriu
e8d5f00903 Prevent unnecessary backpagination requests from running every time a room is entered
- related to #1760 which moved initial timeline item computations to a serial queue
2024-02-02 18:20:14 +02:00
Mauro
65b3765326 Settings to enable and disable sending public RRs (#2384) 2024-01-25 15:47:33 +01:00