TF-2047 Add adr for sanitize and autolink html when type is text/plain

(cherry picked from commit 5e5a389c7ebc04a4aecf5eca94350e76dfd695a6)
This commit is contained in:
dab246
2023-08-01 10:40:10 +07:00
committed by Dat Vu
parent 903b720b2e
commit a1eb60659f
@@ -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`