Commit Graph

59 Commits

Author SHA1 Message Date
Stefan Ceriu
0ede9fffa0 Fix #4856, fix #4431 - Normalise HTML whitespaces using SwiftSoup's own text()/TextNode.normaliseWhitespace methods 2026-01-22 20:11:45 +02:00
Stefan Ceriu
ed126bf2b7 Fix #4913 - Email addresses are detected as URLs 2026-01-12 20:49:31 +02:00
Stefan Ceriu
b38480e1e7 Fix #4946 - Linkification strips trailing brackets from URLs 2026-01-12 20:49:31 +02:00
Stefan Ceriu
2f9275a0ef Fixes #4683 - Add support for nested lists 2025-11-12 16:54:35 +02:00
Stefan Ceriu
d9c885c48c Fixes #4713, fixes #4648 - Correctly handle span tags and data attributes. 2025-11-07 14:46:01 +02:00
Stefan Ceriu
ec15d06154 Remove the first version of the AttributedString builder
Remvoe test stuf

# Conflicts:
#	ElementX/Sources/Other/HTMLParsing/AttributedStringBuilder.swift
#	ElementX/Sources/Other/HTMLParsing/AttributedStringBuilderV1.swift
#	ElementX/Sources/Other/HTMLParsing/DTHTMLElement+AttributedStringBuilder.swift
2025-10-28 09:53:15 +00: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
Stefan Ceriu
57ec491bac Fixes #4529 - Order out of order ordered list ordering order 2025-09-26 10:48:56 +03:00
Stefan Ceriu
7236c491d5 Remove extra new line before list items and useless paragraph style 2025-09-16 17:54:46 +03:00
Stefan Ceriu
7dd34400e4 Add support for HTML img tags (their alts) on the new AttributedStringBuilder 2025-09-16 17:54:46 +03:00
Stefan Ceriu
93897495e2 Fix traling new lines appearing in attributed string when sending text separated by 2 new lines. 2025-09-12 18:09:18 +03:00
Stefan Ceriu
8d59d627fc Disable the next gen HTML parser after when tearing down V2 tests 2025-09-10 14:52:00 +03:00
Stefan Ceriu
8e257b40c5 Preserve the formatting of parentless text nodes 2025-09-10 14:52:00 +03:00
Stefan Ceriu
764b24cacf Fix test that's failing on CI but works locally. 2025-09-09 17:17:40 +01:00
Stefan Ceriu
94a2b86283 Add proper separated blockquotes fixtures and fix the tests. 2025-09-09 17:17:40 +01:00
Stefan Ceriu
9bbff69c69 Mark code blocks with a special attribute and strip away links from them. 2025-09-09 17:17:40 +01:00
Stefan Ceriu
69894ece62 Limit H1, H2 to the H3 point size. 2025-09-09 17:17:40 +01:00
Stefan Ceriu
ee3caf5205 Merge together the AttributedStringBuilder V1 and V2 tests. 2025-09-09 17:17:40 +01:00
Stefan Ceriu
a92a7f6211 Add unit tests for the new AttributedStringBuilder, initially as a copy of the old ones. 2025-09-09 17:17:40 +01:00
Hugh Nimmo-Smith
60c898f78c Support for experimental MSC4286 to not render external payment details (#4099)
Ref: https://github.com/matrix-org/matrix-spec-proposals/pull/4286
2025-06-03 12:22:14 +01:00
Mauro Romito
ef4e6b062f added a test to check if URLs work with RTL 2025-03-17 17:04:07 +01:00
Mauro Romito
81031b12a7 added tests
improvement

improved

improvement

fixed
2025-03-17 16:21:09 +01:00
Mauro Romito
4843bf0f01 phishing alert implementation
we now check when building the string through the `AttributedStringBuilder` if a URL is actually hiding a different link, if so, we create a custom URL that contains both the external and the internal URL to advise the user through an Alert about the risk
2025-03-17 16:21:09 +01:00
Mauro
431828828d Render Room and Message Pills (#3809)
* added a way to render the room and the message

pills, but is WIP

* permalinks now get converted into pills!

* fixed an issue where room address mentions

were not adding a URL properly but a string

* updated tests

* c

* Revert "c"

This reverts commit 5c80252fa23dba7e4d44f2a07fbf1e9500e37c82.

* updated tests

* more tests

* created APIs to get a specific RoomSummary

given the id or the alias

* small mention builder improvement

* pr suggestions
2025-02-25 13:46:01 +00: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
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
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
Stefan Ceriu
1456c57da0 Ignore punctuation characters at the end of detected links
- fixes permalink handling when that's the case
- prevents deep linking loops between nightly and the main app
2024-06-19 16:10:31 +03:00
Doug
87679329d8 Support tapping Matrix URIs in messages. (#2828) 2024-05-10 15:22:22 +01:00
Stefan Ceriu
62e1ec0464 Prevent links from showing up in color within code blocks, simplify foreground color stripping 2024-05-10 14:07:43 +03:00
Stefan Ceriu
3bab870e5b Fixes #2807 - Stop inserting string attributes to code blocks. 2024-05-09 18:48:51 +03:00
Doug
e90fcd4b4e Permalink Tweaks 2 (#2766)
* Missing changelog.

* Parse bare room aliases as permalinks.

Update the SDK.

* Fix tapping the same permalink twice.

Add a test.

Don't clear the focussed item when reaching the bottom of the timeline.

* Make sure sending a message returns to live.
2024-04-29 17:32:16 +01:00
Stefan Ceriu
8be236883d Adop the new SDK permalink detector and user builder 2024-04-12 18:04:41 +03:00
Mauro
47e419a6a6 Fixed the link color and improved link dection in code blocks (#2466) 2024-02-14 17:45:23 +01:00
Mauro
84b0f967e8 Removing Dead Code part 1 (#2234) 2023-12-13 09:51:57 +01:00
Mauro
c15e0a636b Resizable Composer With Completion Suggestion View (#1971)
* resizable composer with suggestions view

* FF cleanup

* removing the view when the vertical size is compact

* merge conflict fix

* done

* solving a conflict

* Update ElementX/Sources/Screens/ComposerToolbar/View/CompletionSuggestionView.swift

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

* pr suggestion

---------

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
2023-10-27 13:54:30 +00:00
Mauro
36cf0a0442 Converting detected plain text mentions into permalinks (#1963)
* it works but a test fail because URL(string) fails

* done!

* let
2023-10-27 09:31:01 +02:00
Mauro
8754cee368 Replies now display mentions with @displayname (#1957)
* reply with mentions

* fixed a bug and wrote a test for it

* error message
2023-10-25 18:39:18 +02:00
Mauro
bceebff6cb Handle tap on user mentions (#1850)
* user mention routing implemented

* more tests

* better naming

* fixed a test
2023-10-03 10:11:05 +02:00
Mauro
38e824d74d @room pill (#1834)
* all users mention pill + red higlight for own mentions

* more tests

* changelog

* removed useless if let
2023-09-29 15:40:31 +02:00
Mauro
4c5e6cfd19 Pill View (#1797)
* provider can now check the current session

* More testable code

* created the test condition

* it works but not always not sure why, need to dig deeper

* sadly we need to use textkit 1 to solve this issue

* removed developer option screen test

* this experimental solution kinda works but I need a way to pill recomputation is weird

* format

* display improvement

* better and faster solution

* pilished the code

* better coloring

* swift format

* just need to solve the caching issue

* fix caching issue

* tests done!

* changelog

* pr comments addressed

* all pr comments addressed

* docs

* line lenght

* updated tests and fixed a parsing permalink issue

* MentionBuilder

* pr comments

* swiftformat

* code blocks should not have links

* Update ElementX/Sources/FlowCoordinators/RoomFlowCoordinator.swift

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

* Update ElementX/Sources/Services/Client/ClientProxy.swift

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

* Update UnitTests/Sources/AttributedStringBuilderTests.swift

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

* Update ElementX/Sources/UITests/UITestsAppCoordinator.swift

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

* Update ElementX/Sources/Other/Pills/PillAttachmentViewProvider.swift

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

* Update ElementX/Sources/Other/Pills/MentionBuilder.swift

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

* pr comments

* swiftformat

---------

Co-authored-by: Doug <6060466+pixlwave@users.noreply.github.com>
2023-09-27 17:27:07 +00:00
Stefan Ceriu
3922be6900 Add default schemes for detected links that don't have any 2023-09-07 14:56:39 +03:00
Mauro
eabdd2c3f2 MessageText component (#1521)
* MessageText component

* swiftformat

* fix swift format being a bit crazy

* link tapping support

* new test + fix for font + dynamic support

* fix for blockquote issue.

* code improvement

* small code improvement and fixed tests not working due to weird swiftformat behaviour

* fix boost emoji

* updated swiftformat

* better testing

* UI tests updated

* fixing the issue with the cache overriding the size category changes

* whitespaces

* appropriate color + better info plist parsing

* cleaned the code and fixed links

* tapping link fixes

* list bug fix

* ui tests regenerated
2023-08-22 10:14:23 +00:00
Stefan Ceriu
92cd50ed76 Fixes #1418 - Preserve new lines when parsing html strings 2023-08-08 17:37:11 +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
b8ad1af172 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
a6582ea8e1 Fixes #687 - Incorrect link detection and handling 2023-04-28 14:11:21 +03:00
Stefan Ceriu
1cac46b11e Add permalink detection and custom attributed string attributes (#536)
* Pass full attributed string to TimelineItems and let the UI level handle blockquote coalescing
* Add permalink detection and attribute embedding within the attributed string
2023-02-06 14:59:32 +00:00
Doug
602b21928b Further design updates to the timeline. (#524)
- Decryption banner on the timeline
- Bubble colours
- Background insets
- Multiline composer corner radius
- Read marker
- GIF indicator
- Reactions shape
- Use RoomTimelineViewLabelStyle everywhere possible
- Only set a line limit on reply quotes, allow all the lines for regular quotes.
- Message label icons
- Yes/No button casing
- Make sender profiles immutable.
- Enable copy link and invite buttons.
- Fix layout loop detecting multiline composer text.
- Add animation to the encryption banner.
2023-02-03 14:09:48 +00:00
Velin92
0063b9ef11 iOS: Removing event id links (#509)
* removing unused event id link

* changelog

* Revert "removing unused event id link"

This reverts commit aacd1124498674662123d5598604ef8bfcdfe02e.

* commented the event id add link code

* better changelog

* commenting a tes that is related to the use of event id links which we don't handle for now
2023-01-31 19:42:45 +01:00