From 14f74b386da723e72412daefd1ef520bc89324d7 Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Thu, 6 Mar 2025 12:33:30 -0500 Subject: [PATCH] chore: linkify HTML messages (#2057) --- lib/pages/chat/events/html_message.dart | 36 +++++++++++++++++-------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/lib/pages/chat/events/html_message.dart b/lib/pages/chat/events/html_message.dart index 8837f3bf7..bf88c01b3 100644 --- a/lib/pages/chat/events/html_message.dart +++ b/lib/pages/chat/events/html_message.dart @@ -1,4 +1,3 @@ -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:collection/collection.dart'; @@ -285,16 +284,31 @@ class HtmlMessage extends StatelessWidget { : AppConfig.gold.withAlpha(60); } - return TextSpan( - recognizer: TapGestureRecognizer() - ..onTap = onClick != null && token != null - ? () => onClick?.call(token) - : null, - text: node.innerHtml, - style: AppConfig.messageTextStyle( - pangeaMessageEvent!.event, - textColor, - ).merge(TextStyle(backgroundColor: backgroundColor)), + return WidgetSpan( + child: MouseRegion( + cursor: SystemMouseCursors.click, + child: GestureDetector( + onTap: onClick != null && token != null + ? () => onClick?.call(token) + : null, + child: RichText( + text: TextSpan( + children: [ + LinkifySpan( + text: node.innerHtml, + style: AppConfig.messageTextStyle( + pangeaMessageEvent!.event, + textColor, + ).merge(TextStyle(backgroundColor: backgroundColor)), + linkStyle: linkStyle, + onOpen: (url) => + UrlLauncher(context, url.url).launchUrl(), + ), + ], + ), + ), + ), + ), ); // Pangea# case 'br':