Commit Graph

167 Commits

Author SHA1 Message Date
Stefan Ceriu
ba810116a0 Add a new RoomThreadListScreen and hook it up to the RoomThreadListService
It will automatically paginate to fill the screen and update the list as updates come in.
2026-03-31 18:21:14 +03:00
Mauro
77c88a817a Compound - Swift 6.2 and Main actor isolation (#5109)
* compound is now using 6.2 and main actor isolation + some tweaks to make it build tests and EX

* better handling of the nonisolated context for CompoundUIColors

* improving docs

* fix comment

* remove unused Sendable conformance
2026-02-16 10:19:12 +00:00
Doug
6dc66ec777 Remove the global UserIndicatorController.alertInfo, replacing it with local alertInfo usage. (#5087) 2026-02-10 17:16:11 +00:00
Skye Elliot
fdcf14f282 Display an icon in the room header for rooms with shared history (#5016)
* feat: Display an icon in the room header for rooms with shared history

* fix: Apply suggestions from code review

- Simplifies `isRoomHistoryShared` expressions using type inferrence.
- Adds failure messages to unit test.

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>

* fix: Remove extension method in favour of field on configuration.

* fix: Distinguish between `shared` and `worldReadable` icons.

* refactor: Use `RoomHistorySharingState` enum with extension methods

---------

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
2026-01-30 13:11:10 +00:00
Stefan Ceriu
04053ae69b Update files following swiftformat upgrade 2026-01-27 12:50:57 +02:00
Skye Elliot
67497408b4 Remove "history may be shared banner" (#4999)
* Revert "Do not show history visible banner when the user cannot send messages. (#4892)"

This reverts commit 6117ee3a2b.

* Revert "Add a banner to encrypted rooms with visible history. (#4851)"

This reverts commit ae38dc54d4.
2026-01-26 14:59:48 +00:00
Skye Elliot
6117ee3a2b Do not show history visible banner when the user cannot send messages. (#4892) 2026-01-06 16:36:19 +00:00
Skye Elliot
ae38dc54d4 Add a banner to encrypted rooms with visible history. (#4851)
* Add a banner to encrypted rooms with visible history. (#4738)

* feat: Add history visible alert.

- Adds a dismissable alert that is displayed whenever the user
  opens a room with `history_visibility` != `joined`. When cleared,
  this is recorded in the app's data store.
- When opening a room with `history_visibility` = `joined`, this
  flag is cleared.

Issue: element-hq/element-meta#2875

* tests: Add unit tests for history sharing in `RoomScreenFooterView`.

* feat: Rename flag to `hasSeenHistoryVisibleBannerRooms`, document.

* refactor: Merge enum variants, use function for banner description.

* feat: Use `AppSettings.historyVisibleDetailsURL` over hard-coded value.

* tests: Correct potential race condition with deferred assertion.

* chore: Use Localazy translation string over project-defined.

* fix: Final tweaks and review comments.

* chore: Checkout `Enterprise` submodule.

* tests: Final fixes.

* fix: Condition banner visibility on feature flag state.

* fix: Prioritise identity violations over history visibility banner.

* tests: Add snapshots for history visible banner.

* tests: Use deferred failure timeout for improved test power.

* chore: Tweaks to spelling, simplify state logic.

* fix: Remove "g".

* fix: Show banner for shared/world-readable rooms, not invited.

* refactor: Use `else-if` instead of `if`.
2025-12-19 15:26:45 +00:00
Doug
e9d6116c5f Revert "Add a banner to encrypted rooms with visible history. (#4738)" (#4850)
This reverts commit 1e0bbce3c4.
2025-12-12 11:44:13 +00:00
Skye Elliot
1e0bbce3c4 Add a banner to encrypted rooms with visible history. (#4738)
* feat: Add history visible alert.

- Adds a dismissable alert that is displayed whenever the user
  opens a room with `history_visibility` != `joined`. When cleared,
  this is recorded in the app's data store.
- When opening a room with `history_visibility` = `joined`, this
  flag is cleared.

Issue: element-hq/element-meta#2875

* tests: Add unit tests for history sharing in `RoomScreenFooterView`.

* feat: Rename flag to `hasSeenHistoryVisibleBannerRooms`, document.

* refactor: Merge enum variants, use function for banner description.

* feat: Use `AppSettings.historyVisibleDetailsURL` over hard-coded value.

* tests: Correct potential race condition with deferred assertion.

* chore: Use Localazy translation string over project-defined.

* fix: Final tweaks and review comments.

* chore: Checkout `Enterprise` submodule.

* tests: Final fixes.
2025-12-11 17:07:57 +00:00
Mauro
83f2df6cee Handle threaded pinned events (#4704)
* implemented focussing a threaded event through the banner tap

* view in timeline implementation for threaded events

* added a test and improved the existing one

* pr suggestions

* put the logic for fetching the event in the view models
2025-11-10 12:36:42 +01:00
Mauro
6160c44d67 Update copyright holding and dates (#4640)
* Update copyright holding and dates

* compound IDE Macros updated

* update copyright

* update copyrights done

* update templates and README
2025-10-21 14:34:56 +02:00
Mauro
d005243e31 Implemented message forwarding for media previews and media timelines (#4579)
* implemented message forwarding for media previews and media timelines

* updated tests

* pr suggestion

* fix tests

* fix tests
2025-10-07 14:34:14 +02:00
Doug
b34a3dae59 Add a workaround to include some via parameters for room v12 tombstone links. (#4413)
Without them, following the link fails as previously the server could use the server name from the room ID (which in and of itself seems somewhat error prone).
2025-08-14 13:02:07 +01:00
Doug
681ec8ee38 Add a RoomScreenHook. 2025-06-10 10:28:18 +03:00
Mauro Romito
d05108796f tombstoned and upgraded rooms implementation
added tests

tombstoned room avatar
2025-06-06 10:49:29 +02:00
Doug
57ce46e1bf Disable the composer when you don't have the power to post. (#4076) 2025-04-29 10:12:20 +01:00
Stefan Ceriu
1e58795a65 User verification state indicators (#3793)
* Introduce a `UserIdentityProxy` and have it combine upstream methods into an easy to digest  `UserIdentityVerificationState`. Use it in a dedicated `VerificationBadge` UI component

* Show a DMs counterpart verification state in the room header

* Show a warning on the room details `People` entry when there are identity verification state violations on any of the members.

* Show verification badges in the room member list

* Show a withdraw verification section on the room member details for users that have pinning violations.

* Remove the verification section from the profile screen as there's no reliable way to keep it up to date
- the underlying Rust SDK Olm Machine can be rebuilt without notice which would break any existing user identity change streams.

* Update preview test snapshots
2025-02-18 08:37:34 +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
Valere
9fe7b3e266 Warn and block sending on verification violation (#3679)
* feat(crypto): Warn and block sending on verification violation

* fixup: Fix ComposerToolbar previews

* fixup! add ComposerToolBarViewModelTests for canSend

* add new preview tests for verification violations

* Use `deferFulfillment`s in the unit tests.

---------

Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
2025-01-20 18:29:34 +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
Mauro
89ac38c91b Implement Knock Logic (#3573)
* WIP RequestToJoin struct

* implemented the logic to display the cells

* knock request banner accept flow

* mark all knocks as seen implemented

* details logic

* implemented accept, decline and ban in the list

* added a loader and modified the stacked view

of the banner

* pr suggestions

* updated naming and loading strings

* added the initial loading state

improved code and the tests

* updated a string that has changed

* code improvement

* tests for the room screen view model

* room details tests

and improved the knock requests tests for the room screen

* knock requests list tests

* added error state alerts with retry

* struct has been renamed on the sdk

so I renamed it also on the app side

* update SDK
2024-12-16 15:32:45 +01:00
Mauro
3ffd37d4ae Knock Requests navigation flows (#3555)
* implemented navigations

* better naming for the enum

* removed list to banned users navigation

* polished the code

* avatarURL
2024-11-26 11:47:34 +00:00
Mauro
3ce794ebfc Knock Requests banner display logic (#3550)
* added the join rule to the info

* update SDK and added logic to display the banner

in the room screen

* added the logic to display the banner
2024-11-25 13:14:02 +01:00
Stefan Ceriu
7655b33f5d Fixes element-hq/element-meta/issues/2525 - Display a warning when a user's pinned identity changes 2024-10-07 20:47:31 +03:00
Mauro
98d7654a1d Remove message pinning FF (#3318) 2024-09-30 12:32:35 +00: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
Mauro
bbb462bd83 Pinned Events Timeline actions and differentiation (#3182) 2024-08-22 17:35:44 +02:00
Doug
6a44d79b6e Use native video call picture in picture! (#3190)
* Use native video call picture in picture!

* Handle isSupported, isPossible and web view errors.

* Use new canEnterPip method.

* Hide a room's Call button when already joined to the call.

* Tweak feature flag description.

* PR comments.
2024-08-21 17:48:57 +01:00
Doug
bcf417cabd Navigation support for upcoming Element Call Picture in Picture mode. (#3174) 2024-08-16 11:25:36 +01:00
Mauro
11072ce574 RoomScreenViewModel refactor part 2 (#3169) 2024-08-14 18:03:46 +02:00
Mauro
803c61e879 PinnedBanner is now managed by the RoomScreenViewModel (#3163) 2024-08-14 12:38:10 +02: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
0a73adf0cc Remove links from pinned events banner (#3153) 2024-08-12 10:43:30 +02:00
Mauro
293c5b234e Navigate to the Pinned events timeline (#3139) 2024-08-08 18:29:39 +02:00
Mauro
c23851bbe6 Pinned events banner goes backwards (#3128) 2024-08-07 14:01:01 +00:00
Mauro
07f2242ed0 Pinned events banner loading state (#3118) 2024-08-06 15:46:56 +02:00
Doug
0a17366ebf Add Encryption Authenticity explanations. (#3116) 2024-08-06 10:45:46 +01: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
35e69bae24 Hide/Show pin banner based on scroll direction (#3080) 2024-07-24 12:15:36 +02:00
Mauro
ef4bbb9f6b Pinned Items Banner UI (#3072) 2024-07-22 12:57:04 +00:00
Mauro
fee3d3c8c0 Pinning items Feature Flag (#3063) 2024-07-18 18:28:30 +02:00
Doug
5370ba1658 Fix a potential race condition when redacting a message. (#3061)
* Refactor the timeline item menu action provider.

- Move it into its own struct.
- Use an item, not an ID so it doesn't randomly change.
- Move permissions into the room screen view model.

* Use the stable ID when redacting/editing/forwarding a message.

Just like we do when fetching the item in the actions menu.
2024-07-18 15:14:38 +01:00
Mauro
ef465d3004 Volatile draft to restore the composer after an edit. (#2996) 2024-07-02 14:48:50 +00:00
Stefan Ceriu
2ad1764a6b Remove redundant remove failed sent message menu 2024-06-28 14:28:33 +03:00
Mauro
352f6095a9 Remove layout styling abstraction (#2982) 2024-06-27 18:25:25 +02:00
Doug
5231a92dc4 Stop the timeline from requesting back pagination whilst loading existing items. (#2969)
* Handle Rust error "can't subscribe to the back-pagination status on a focused timeline"

* Fix a bug where the timeline was attempting to paginate before adding the items.

* Stop the timeline from paginating whilst loading existing items.
2024-06-27 14:20:44 +01:00
Mauro
60d4fccc07 Hide timeline style selection (#2968) 2024-06-26 12:42:12 +02:00
Doug
6e834e7f8b Use the room heroes when computing a DM avatar. (#2900)
* Use room heroes for DM avatar content ID.

* Use RoomAvatar.heroes for the DM Details stack.
2024-06-19 10:27:10 +00:00