TF-991 Fix link problem on my JIRA notifications
This commit is contained in:
-3
@@ -1,6 +1,5 @@
|
|||||||
|
|
||||||
import 'package:core/presentation/utils/html_transformer/base/text_transformer.dart';
|
import 'package:core/presentation/utils/html_transformer/base/text_transformer.dart';
|
||||||
import 'package:core/utils/app_logger.dart';
|
|
||||||
import 'package:core/utils/linkify_html.dart';
|
import 'package:core/utils/linkify_html.dart';
|
||||||
|
|
||||||
class ConvertUrlStringToHtmlLinksTransformers extends TextTransformer {
|
class ConvertUrlStringToHtmlLinksTransformers extends TextTransformer {
|
||||||
@@ -9,9 +8,7 @@ class ConvertUrlStringToHtmlLinksTransformers extends TextTransformer {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
String process(String text) {
|
String process(String text) {
|
||||||
log('ConvertUrlStringToHtmlLinksTransformers::process(): BEFORE: $text');
|
|
||||||
final texValid = LinkifyHtml().generateLinkify(text);
|
final texValid = LinkifyHtml().generateLinkify(text);
|
||||||
log('ConvertUrlStringToHtmlLinksTransformers::process(): AFTER: $texValid');
|
|
||||||
return texValid;
|
return texValid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
|
|
||||||
import 'package:collection/collection.dart';
|
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
|
|
||||||
class LinkifyHtml {
|
class LinkifyHtml {
|
||||||
@@ -20,38 +19,29 @@ class LinkifyHtml {
|
|||||||
|
|
||||||
// URLs starting with http://, https://, ftp://
|
// URLs starting with http://, https://, ftp://
|
||||||
final regexLinkWithHttp = _generateRegExp(r'(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])');
|
final regexLinkWithHttp = _generateRegExp(r'(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])');
|
||||||
|
final newReplacedTextWithHttp = replacedText.replaceAllMapped(regexLinkWithHttp, (regexMatch) {
|
||||||
final listUrlMatch = regexLinkWithHttp.allMatches(replacedText)
|
final link = regexMatch.group(1);
|
||||||
.map((regexMatch) => regexMatch.group(1))
|
final newLinkWithHttp = link?.isNotEmpty == true
|
||||||
.whereNotNull()
|
? '<a href="$link" target="_blank">$link</a>'
|
||||||
.toSet();
|
: '';
|
||||||
|
log('ConvertUrlStringToHtmlLinksTransformers::_linkifyUrlAddress(): newLinkWithHttp: $newLinkWithHttp');
|
||||||
log('ConvertUrlStringToHtmlLinksTransformers::_linkifyUrlAddress(): listUrlMatch: $listUrlMatch');
|
return newLinkWithHttp;
|
||||||
|
});
|
||||||
if (listUrlMatch.isNotEmpty) {
|
replacedText = newReplacedTextWithHttp;
|
||||||
listUrlMatch.forEach((link) {
|
|
||||||
replacedText = replacedText.replaceAll(
|
|
||||||
link,
|
|
||||||
'<a href="$link" target="_blank">$link</a>');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// URLs starting with "www." without // before it or it'd re-link the ones done above.
|
// URLs starting with "www." without // before it or it'd re-link the ones done above.
|
||||||
final regexLinkWithWWW = _generateRegExp(r'(^|[^\/])(www\.[\S]+(\b|\$))');
|
final regexLinkWithWWW = _generateRegExp(r'(^|[^\/])(www\.[\S]+(\b|\$))');
|
||||||
|
final newReplacedTextWithWWW = replacedText.replaceAllMapped(regexLinkWithWWW, (regexMatch) {
|
||||||
final listLinkMatch = regexLinkWithWWW.allMatches(replacedText)
|
final previousChar = regexMatch.group(1);
|
||||||
.map((regexMatch) => regexMatch.group(2))
|
log('LinkifyHtml::_linkifyUrlAddress(): previousChar: $previousChar');
|
||||||
.whereNotNull()
|
final link = regexMatch.group(2);
|
||||||
.toSet();
|
final newLinkWithWWW = link?.isNotEmpty == true
|
||||||
log('ConvertUrlStringToHtmlLinksTransformers::_linkifyUrlAddress(): listLinkMatch: $listLinkMatch');
|
? '$previousChar<a href="https://$link" target="_blank">$link</a>'
|
||||||
|
: '';
|
||||||
if (listLinkMatch.isNotEmpty) {
|
log('ConvertUrlStringToHtmlLinksTransformers::_linkifyUrlAddress(): newLinkWithWWW: $newLinkWithWWW');
|
||||||
listLinkMatch.forEach((link) {
|
return newLinkWithWWW;
|
||||||
replacedText = replacedText.replaceAll(
|
});
|
||||||
link,
|
replacedText = newReplacedTextWithWWW;
|
||||||
'<a href="https://$link" target="_blank">$link</a>');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return replacedText;
|
return replacedText;
|
||||||
}
|
}
|
||||||
@@ -60,20 +50,15 @@ class LinkifyHtml {
|
|||||||
String _linkifyMailToAddress(String inputText) {
|
String _linkifyMailToAddress(String inputText) {
|
||||||
final regexMailTo = _generateRegExp(r'(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)');
|
final regexMailTo = _generateRegExp(r'(([a-zA-Z0-9\-\_\.])+@[a-zA-Z\_]+?(\.[a-zA-Z]{2,6})+)');
|
||||||
|
|
||||||
final listEmailAddressMatch = regexMailTo.allMatches(inputText)
|
final newReplacedTextWitMailTo = inputText.replaceAllMapped(regexMailTo, (regexMatch) {
|
||||||
.map((regexMatch) => regexMatch.group(1))
|
final emailAddress = regexMatch.group(1);
|
||||||
.whereNotNull()
|
final newMailToLink = emailAddress?.isNotEmpty == true
|
||||||
.toSet();
|
? '<a href="mailto:$emailAddress">$emailAddress</a>'
|
||||||
|
: '';
|
||||||
|
log('ConvertUrlStringToHtmlLinksTransformers::_linkifyUrlAddress(): newMailToLink: $newMailToLink');
|
||||||
|
return newMailToLink;
|
||||||
|
});
|
||||||
|
|
||||||
log('ConvertUrlStringToHtmlLinksTransformers::generateLinkifyHtml(): listEmailAddressMatch: $listEmailAddressMatch');
|
return newReplacedTextWitMailTo;
|
||||||
|
|
||||||
if (listEmailAddressMatch.isNotEmpty) {
|
|
||||||
listEmailAddressMatch.forEach((emailAddress) {
|
|
||||||
inputText = inputText.replaceAll(
|
|
||||||
emailAddress,
|
|
||||||
'<a href="mailto:$emailAddress">$emailAddress</a>');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return inputText;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user