Skip to content

Commit

Permalink
TF-2047 Add adr for sanitize and autolink html when type is text/plain
Browse files Browse the repository at this point in the history
  • Loading branch information
dab246 committed Aug 1, 2023
1 parent e7a1b5d commit 2944949
Showing 1 changed file with 39 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -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`

0 comments on commit 2944949

Please sign in to comment.