TF-2047 Add adr for sanitize and autolink html when type is text/plain
(cherry picked from commit 5e5a389c7ebc04a4aecf5eca94350e76dfd695a6)
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# 30. Fix can not see link when type is text/plain in email view
|
||||
|
||||
Date: 2023-08-01
|
||||
|
||||
## Status
|
||||
|
||||
- Issue:
|
||||
|
||||
[1881](https://github.com/linagora/tmail-flutter/issues/1881)
|
||||
[2047](https://github.com/linagora/tmail-flutter/issues/2047)
|
||||
|
||||
## Context
|
||||
|
||||
- When `Content-Type=Text/Plain` the `url` and `email-addreess` links are not automatically `highlighted`.
|
||||
- Some `url` links are `highlighted` when clicking, opening the content in the email view itself does not create a new tab.
|
||||
|
||||
## Root cause
|
||||
|
||||
- Because we perform `html escape` before creating `autolink`, it makes lost tags undetectable. Moreover, the detect function is ignored in some cases
|
||||
|
||||
## Decision
|
||||
|
||||
- Use linkify to detect `url/email/text` and return a list of corresponding elements.
|
||||
```dart
|
||||
final elements = linkify(inputText);
|
||||
```
|
||||
|
||||
- If element is `TextElement` we perform html escape for it.
|
||||
- If element is `UrlElement` or `EmailElement` we make html link tag (`<a>`) for it.
|
||||
```dart
|
||||
String _buildLinkTag({required String link, required String value}) {
|
||||
return '<a href="$link" target="_blank">$value</a>';
|
||||
}
|
||||
```
|
||||
|
||||
## Consequences
|
||||
|
||||
- Accurately detect and fully highlight `url` and `email-address` links in email body when `Content-Type=Text/plain`
|
||||
- Automatically open new tab when clicking on `url` link and open composer when clicking on `email-address`
|
||||
Reference in New Issue
Block a user