Commit Graph

761 Commits

Author SHA1 Message Date
aringenbach 88ac3fb8c6 Rename sendReaction as toggleReaction 2023-06-26 20:25:55 +03:00
Mauro 3d3fd5dc66 Handling cancelled as a sendingFailed case (#1161)
* handling cancelled as a sendingFailed case

* changelog
2023-06-26 10:33:15 +00:00
David Langley 13decc668a Reaction highlights (#1145)
* Highlight own reactions

- Highlight own reactions on timeline and improve style.
- Highlight reactions on message bottom sheet only when it our own.

* Improve overlay background colours

* pin to new sdk version

* Remove the red used for debug.

* Fix padding, overlap and only display count if > 1.

- Fix reaction padding and overlap of reaction and bubble.
- Only display count if greater than 1.
- Return EmptyView for TimelineDeliveryStatus.cancelled.

* Fix colors as per design recommendations.

* Add Snapshot tests for reactions and documentation.

- Add UITests for the timeline including reactions.
- Add the reference snapshots.
- Add documentation on how to run snapshot tests and update the reference snapshots.

* Fix Package.resolved
2023-06-25 13:24:48 +01:00
Doug aa30fe29e9 App polish part 5 (#1149)
- Set launch/splash screens to default background colour.
- Replace launch screen storyboard with info plist keys.
- Remove useless layout components in bubble styler.
- Fix lint error.
- Rename all assets.
- Update design of Analytics Prompt.
2023-06-23 17:10:37 +01:00
Alfonso Grillo 1f99e9af8d Update Matrix SDK to v1.0.84-alpha (#1147)
* Fix build errors

* Add sendLocation API

* Amend cancelled behavior
2023-06-23 15:14:38 +00:00
Mauro 9c115d8e25 updated ui tests and deleted unused ones (#1143)
* updated ui tests and deleted unused ones

* fix keyboard missing on iPad

* fix keyboard missing

* code improvement

* improvement for user session screen

* readded some removed files
2023-06-23 13:18:44 +00:00
Alfonso Grillo 07a6235fac Render location events in the timeline (#1136)
* Start location integration in the timeline

* Add warning

* Add LocationRoomTimelineView

* Add GeoURI

* Refine LocationRoomTimelineView

* Refine LocationRoomTimelineView

* Add LocationRoomTimelineView previews

* Cleanup code

* Mock reply

* Add FF for location events

* Update project file

* Fix MapLibreStaticMapView placeholder

* Add MapTilerAttribution

* Add LocationPinView

* Fix layout

* Start reply rendering

* Refactor ReplyView.Icon

* Add localisations

* Fix reactions

* Amend GeoURI regex

* Add log

* Fix tests

* Attribution placement refactor

* Cleanup

* Replace NSRegularExpression with a regex

* Cleanup

* Update unit tests

* isMediaType -> shouldFillBubble
2023-06-23 12:49:35 +02:00
Doug 40fab35dd7 App Polish number 4 (#1142)
* Add dedicated placeholder screen instead of using the splash screen.

* Reorder message actions.
2023-06-23 11:01:09 +01:00
Mauro bc9871f015 Keyboard is kept dismissed when dismissing the actions or the attachments menu (#1141)
* keyboard is kept dismissed

* no need for dispatch queue
2023-06-23 09:39:43 +00:00
Stefan Ceriu 652fd3cf76 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
Doug f2312f6f70 App polish part 3 (#1135)
- Add an animation to long press on messages.
- Make emojis bigger on the reactions picker screen.
- Remove quote menu action.
- Fix emoji picker handle overlapping focused search field.
- Update launch, splash and onboarding screens.
- Use elevation tokens in Forms.
- Move the cancel button on the Start Chat flow.
2023-06-22 14:37:47 +01:00
Stefan Ceriu e65a2d2431 Various tweaks (#1129)
* Fixes #1121 - Hide the loading indicator after the logout task finishes

* Manually restart the sync only when entering the `error` state

* Use stopSync instead of the roomListService directly on client deinit

* Replace WeakClientProxyWrapper with callback based delegate

* Fix homescreen user avatar not automatically updating

* Replace default Build SDK profile with reldbg, which is fast but also doesn't crash

* Always show the loading indicator when the room list is not in a `running` state

* Implement delayed user indicator presentations through the normal API

* Fix the unit tests

* Replace UserIndicatorController delayedIndicators dictionary with a plain set
2023-06-22 15:04:20 +03:00
Nicolas Mauri 6d5652d56a Add posthog events (#1097) 2023-06-21 18:00:33 +02:00
Stefan Ceriu 2ae8f471c6 Fixes #978 - Message forwarding support
* Add support for message forwarding

* Move the TimelineProvider within the RoomProxy to avoid it going out of sync and have it automatically register for timeline updates on init

* Implement single selection form button style for message forwarding

* Add searching and filter out the source room from the list

* Fixed emoji screen initial search bar height

* Add view models tests

* Add changelog

* Update strings

* Tweaks following code review
2023-06-21 12:10:14 +03:00
Doug ede4ab095c App polish part 2 (#1118)
- Fix sheet backgrounds in dark mode.
- Fix background colours for reaction buttons.
- Reply view layout.
- Update separator colours.
- Don't show sender name/avatar in DMs.
- Fix inconsistent line heights with formatted body text.
- Use plain text for reply
- Increase tappable size of collapsed state changes button.
- Blockquote layout and text colour.
- Tap to expand the topic in room details.
- Change the topic and security font size in room details.
- Add cancel button when inviting someone to an existing room.
- Reword Add Friends to Add People in start chat screen.
- Update compound.
2023-06-20 17:31:40 +00:00
Stefan Ceriu 863492985d 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
Doug 4de39201ed 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
Alfonso Grillo 87b0d95e67 Invite again user on direct chats (#1087)
* Add leaveRoom section for DMs

* Add invite alert in RoomScreenViewModel

* Show alert on composer focus

* Add localisations

* Refine invite alert logics

* Amend tests

* Update project

* Fix local variable name

* Refactor show invite alert logic
2023-06-16 13:36:27 +00:00
Stefan Ceriu d2d626f724 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
Doug de0213abb2 Adopt Compound Colours (#1086)
* Delete deprecated font tokens.

* Migrate from primaryContent to textPrimary/iconPrimary.

* Migrate from links to textLinkExternal.

* Migrate from secondaryContent to textSecondary/iconSecondary.

* Migrate from accent to textActionPrimary.

- Some uses changed to textPrimary or iconPrimary as necessary.
- Some manual tints removed now that that Sentry is fixed.

* Migrate alert to textCriticalPrimary/iconCriticalPrimary.

* Migrate from brand to textActionAccent/iconAccentTertiary.

* Migrate from background to bgCanvasDefault or text/iconOnSolidPrimary

* Migrate system to bgSubtleSecondary.

* Remove ElementUIColors and obsolete migrated colours.

* Migrate tertiaryContent/quaternaryContent/quinaryContent to Compound.

* Migrate bubblesYou/bubblesNotYou to use Compound.

* Update Compound.
2023-06-16 10:49:13 +01:00
Mauro ac41704821 Retry send and cancel send for failed to send messages (#1088)
* is now possible to open the confirmation dialog and pass the transaction id

* task completed added some tests

* changelog

* title visibility set to .visible
2023-06-16 11:00:54 +02:00
Mauro 2cfc844545 Refactored alert info to not use the soon to be deprecated API (#1084)
* refactored alert info to not use the soon to be deprecated API

* missing files and changelog

* updated some tests

* Update ElementX/Sources/Screens/RoomMemberDetailsScreen/View/RoomMemberDetailsScreen.swift

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

---------

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
2023-06-14 14:24:10 +00:00
Stefan Ceriu dcb692ce9f Fix modal sheet presentations when invoked from the timeline item menu sheet 2023-06-13 17:27:45 +03:00
Mauro 1be74e6e69 SDK Bump to 1.0.74 (#1059)
* testing improvements

* code improvements and sdk bump

* improved the stencil file

* improved the build sdk function

* code improvement

* also added the tearDown
2023-06-09 16:27:08 +00:00
Mauro 42e083dcaf RTL and LTR mixed languages fix for optimal timestamp support (#1055)
* fix

* fixed RTL and LTR timestamp for all the cases! also improved the testing

* changelog

* better and less convoluted solution

* Update ElementX/Sources/Screens/RoomScreen/View/Timeline/FormattedBodyText.swift

Co-authored-by: Alfonso Grillo <alfogrillo@gmail.com>

* pr suggestion and removed prefix in reality it creates more issues than improvements, and is not really needed

---------

Co-authored-by: Alfonso Grillo <alfogrillo@gmail.com>
2023-06-09 11:49:02 +00:00
Mauro 361ac372c5 Timestamp for media messages (#1057)
* timestamp for media messages

* changelog
2023-06-08 19:03:51 +02:00
Mauro 75a3751f78 Read Receipts display with the user avatar (#1038)
* added the read receipt into the code

* fixed some things lost during merge

* implemented the status view to be always at the trailing side

* preview code for better testing

* removed timelineStyle modifier

* removed also the group style

* added some UI tests for the read receipts
2023-06-08 10:05:56 +00:00
Stefan Ceriu 5a4f73e2b8 Fixes #974 - Replace the timeline item contex menu with a bottom sheet
(+10 squashed commits)
[ba1d3160] Update timeline item action menu reaction UI
[410315ac] Move away from item bound action meus plus various tweaks following code review
[c25cd998] Add emoji reactions to the new timeline item action menu
[57001f49] Prevent timeline view layouts from dismissing the action menu
[d1e70538] Various UI tweaks
[652f4143] Switch to a long press gesture, move the header outside of the scroll view
[569a485c] Workaround timeline item action menu presentation state not being stored
[80c29567] Add currently selected item information in the TimelineItemMenu
[ff7790ec] Fixes #974 - Replace the timeline item contex menu with a bottom sheet
[ba1d3160] Rename TimelineItemContextMenu to TimelineIteMenu so that git correctly interprets it
2023-06-07 19:42:21 +03:00
Mauro 4b2aba9367 Tapping on user avatar/name in the timeline opens the room member details (#1020)
* Implementation completed

* changelog

* code improvement

* Apply suggestions from code review

Co-authored-by: Stefan Ceriu <stefanc@matrix.org>

* pr suggestions

---------

Co-authored-by: Stefan Ceriu <stefanc@matrix.org>
2023-06-06 08:46:04 +00:00
Doug 07927c337b Fix the background colour when replying. (#1007) 2023-06-02 09:58:28 +01:00
Stefan Ceriu 83e3d828cd Composer mode UI updates (#984)
* Fixes #975 - Update editing message UI

* Fixes #976 - Update reply composer mode UI to include message being replied to

* Use different icon corner radii in the timeline reply view depending on its placement
2023-05-31 14:51:51 +03:00
Stefan Ceriu a1fdfd068a Fix UI tests (#950)
* Fixed unstored weak reference warning

* Prevent the timeline from jumping whenever we access XCUIApplication properties

* Prevent UI tests from causing side effects on the timeline

* Update userSession reference screenshots

* Fix create room UI tests

* Update inviteUsers UI test reference screenshots

* Allow certain tests to enable timeline accessibility

* Fix roomLayout tests and update reference screenshots

* Disable the testTimelineLayoutInMiddle test because of flakiness

* Update screenshots following timestamp addition

* Another attempt

* Yet another attempt, replace XCUIScreen screenshots with XCUIApplication ones, decrease delay to 1 second

* Allow tests to retry up to 3 times before failing the run
2023-05-26 17:43:38 +03:00
Stefan Ceriu 0082aba9d4 Fixes #918, #919 - Introduce a RoomTimelineFlowCoordinator and related FlowCoordinator protocol
Squashed commits:
Add unit tests and move the state machine into the FlowCoordinator
[bb686861] Replace the RoomFlowCoordinator's public interface with just `handleAppRoute`
[0d9a4f8d] Remove the navigationStackCoordinator dependency from the roomScreenCoordinator
[4b5fbdf2] Allow rooms to be selected from any other state
[41dbd127] Move all missing coordinators to the RoomFlowCoordinator and state machines
[f32431b7] The UserSessionFlowCoordinator does not need to conform to the CoordinatorProtocol
[0f07e87d] Fix leaving a room dismissing the currently selected one when different
[138385a2] Rewind the navigation stack when re-selecting the same room (iPad)
[0727eb93] Fix presenting different room details from the side menu on iPads
[faf4cc60] Fix selecting the same room multiple times
[fb3391da] Move room details presentation responsibility to the RoomFlowCoordinator. Fixed invitation flows.
[fa2a68d9] Rename RoomTimelineFlowCoordinator -> RoomFlowCoordinator
[0c9c06b5] Start moving things away from the RoomScreenCoordinator and into the RoomTimelineFlowCoordinator
[86cbbdcc] Introduce a RoomTimelineFlowCoordinator to deal with timeline related operations
[9b2381be] Introduce the FlowCoordinatorProtocol
2023-05-26 17:42:39 +03:00
Alfonso Grillo bf2102e5d1 Add room's update publisher (#952)
* Add room update publisher

* Cleanup

* Update room’s title

* Add refresh logic in RoomDetailsScreenViewModel

* Fix UTs

* Add UT

* Update timeline listener in RoomProxy

* Fix caching in LoadableAvatarImage

* Cleanup

* Update RoomProxy api

* Inject room proxy in RoomScreenViewModel

* Cleanup

* Fix UTs
2023-05-25 10:42:58 +00:00
Mauro c59921103d Inlined Timestamp in bubble style for messages that have a bubble (#947)
* web-like solution

* not super polished but working implementation

* polishing the spacing and sizes

* removing unused code

* code improvements

* adding a test case in the preview for RTL

* addressing some PR comments

* added some tests and polished the code

* better naming

* code improvement

* RTL fix

* Revert "RTL fix"

This reverts commit 14e4468a5358769daa57891f4991e9e32da1c985.

* better RTL fix

* updated UI tests

* separated some files

* addressed some PR comments

* some more tests
2023-05-25 10:13:45 +00:00
Stefan Ceriu 59f60a14a2 Prevent room navigation back button from jumping while animating 2023-05-23 16:51:58 +03:00
Alfonso Grillo d9e0f36aeb 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
Mauro 8ed8cf6f0c Delivery Status Redesign (#931) 2023-05-22 15:17:06 +02:00
Stefan Ceriu 0066761380 Fix styling post code review 2023-05-17 16:17:48 +03:00
Stefan Ceriu 6ec5922956 Update blockquote styling to latest designs 2023-05-17 16:17:48 +03:00
Stefan Ceriu 0608c68aee Added custom reply views for all message types as well as a loading state 2023-05-17 16:17:48 +03:00
Doug edc9fe4612 Use the existing quote bubble layout with TimelineReplyView. 2023-05-12 14:44:05 +03:00
Stefan Ceriu 0d27ed1bbd Low effort fix for timeline date separator glitches 2023-05-09 18:19:33 +03:00
Stefan Ceriu 1bd6e461ed Reply rendering (#861)
* Cleanup how we use message timeline items in preparation for rich reply rendering

* Expose reply details up to the UI level

* Render replies in the timeline (textual for now). Remove now unused AttributedStringBuilderComponent isReply flag.

* Move reply detail loading to when the item appears instead of when it's created.

* Fix unit tests

* Fetch event details also when the reply details are in the error state

* Tweaks following code review

* Localise emote bodies

* Fix replies not loading sometimes, use the current event identifier instead of the one being replied to
2023-05-09 16:09:38 +03:00
Stefan Ceriu 061e66ff57 Improve media uploading content type selection. Fix pasting in screenshots not working 2023-05-09 12:45:09 +03:00
Stefan Ceriu 93e3a1a80b Media uploading (#851)
* MediaUploadingPreprocessor - Prevent images without any GPS metadata from being changed

* Add support for sending images

* Add support for sending video, audio and file attachments

* Rename MediaPickerPreview to MediaUploadPreview

* Move media uploading to the MediaUploadPreviewScreen, add waiting indicators and error handling

* Add support for pasting and drag&dropping in media for upload

* Adopt new media picker source UI, remove developer flag

* Set minimum heights for timeline loadable images

* Fix invalid camera picker file names

* Fix flakey MediaUploadingPreprocessor image tests, improve gps metadata stripping

* UITests: Update existing screenshots and add new step for the room attachment picker

* Switch all github action runners to macos-13

* Cleanup enter key and paste message composer handlers
2023-05-04 16:09:29 +03:00
Doug 5bb2ceedf4 Compound Fonts (#834)
* Use CompoundFonts in DesignKit (deprecate ElementFonts).

* Use compound fonts everywhere.

* Update Authentication snapshots.

* Update RoomMembersListScreen snapshots.

Delete unused snapshots.

* Fix tests.
2023-04-25 16:42:06 +01:00
Stefan Ceriu 24572c6582 Rename screens (#826)
* Rename: AnalyticsPrompt -> AnalyticsPromptScreen

* Rename: AnalyticsSettings -> AnalyticsSettingsScreen

* Rename: Settings -> SettingsScreen

* Rename: SessionVerification -> SessionVerificationScreen

* Rename: BugReport -> BugReportScreen

* Rename: FilePreview -> FilePreviewScreen

* Rename: AnalyticsPrompt -> AnalyticsPromptScreen

* Rename: Invites -> InvitesScreen

* Rename: InviteUsers -> InviteUsersScreen

* Rename: MediaPicker -> MediaPickerScreen

* Delete unused UIActivityViewControllerWrapper

* Rename: ReportContent -> ReportContentScreen

* Rename: RoomDetails -> RoomDetailsScreen

* Rename: RoomMemberDetails -> RoomMemberDetailsScreen

* Rename: RoomMemberList -> RoomMemberListScreen

* Rename: Cleanup

* Renaming missed items

* Low effort attempt at fixing the flakey unit tests
2023-04-24 18:48:07 +03:00
Stefan Ceriu 5a14c700cc Add animated gif support (#825) 2023-04-24 17:44:58 +03:00
Alfonso Grillo 4db6e68d79 Refactor UserSetting property wrapper to support Codable (#814)
* Add UserPreference property wrapper

* Delete UserSetting property wrapper

* Add PlistRepresentable support

* Add more convenience inits

* Add documentation

* Add UTs

* Fix flaky tests

* Fix more flaky tests

* Fix double optional problem in UserPreference

* Refine UTs

* Delete cache in UserPreference

* Conform Date to PlistRepresentable
2023-04-21 10:46:04 +00:00