From 92a9a7358ede1fab5e2ba1194b1864447648c4e4 Mon Sep 17 00:00:00 2001 From: lars Date: Sun, 1 Feb 2026 15:20:01 +0100 Subject: [PATCH] changed link to directly open the chat --- lib/utils/UrlOpener.dart | 10 ++++++++++ lib/view/pages/talk/components/chatBubble.dart | 3 ++- lib/view/pages/talk/components/chatMessage.dart | 10 ++-------- lib/view/pages/talk/components/pollOptionsList.dart | 7 +++++-- 4 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 lib/utils/UrlOpener.dart diff --git a/lib/utils/UrlOpener.dart b/lib/utils/UrlOpener.dart new file mode 100644 index 0000000..450ed94 --- /dev/null +++ b/lib/utils/UrlOpener.dart @@ -0,0 +1,10 @@ +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:url_launcher/url_launcher_string.dart'; + +class UrlOpener { + static Future onOpen(LinkableElement link) async { + if(await canLaunchUrlString(link.url)) { + await launchUrlString(link.url); + } + } +} diff --git a/lib/view/pages/talk/components/chatBubble.dart b/lib/view/pages/talk/components/chatBubble.dart index a6a1f2b..a5d281d 100644 --- a/lib/view/pages/talk/components/chatBubble.dart +++ b/lib/view/pages/talk/components/chatBubble.dart @@ -315,7 +315,8 @@ class _ChatBubbleState extends State with SingleTickerProviderStateM shrinkWrap: true, children: [ PollOptionsList( - pollData: pollData + pollData: pollData, + chatToken: widget.chatData.token ) ] ); diff --git a/lib/view/pages/talk/components/chatMessage.dart b/lib/view/pages/talk/components/chatMessage.dart index d969039..468805f 100644 --- a/lib/view/pages/talk/components/chatMessage.dart +++ b/lib/view/pages/talk/components/chatMessage.dart @@ -2,12 +2,12 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:flutter_linkify/flutter_linkify.dart'; -import 'package:url_launcher/url_launcher_string.dart'; import '../../../../api/marianumcloud/talk/chat/getChatResponse.dart'; import '../../../../api/marianumcloud/talk/chat/richObjectStringProcessor.dart'; import '../../../../model/accountData.dart'; import '../../../../model/endpointData.dart'; +import '../../../../utils/UrlOpener.dart'; class ChatMessage { String originalMessage; @@ -29,7 +29,7 @@ class ChatMessage { var contentWidget = Linkify( text: content, - onOpen: onOpen, + onOpen: UrlOpener.onOpen, ); if(originalData?['object']?.type == RichObjectStringObjectType.talkPoll) { @@ -73,10 +73,4 @@ class ChatMessage { ) ); } - - Future onOpen(LinkableElement link) async { - if(await canLaunchUrlString(link.url)) { - await launchUrlString(link.url); - } - } } diff --git a/lib/view/pages/talk/components/pollOptionsList.dart b/lib/view/pages/talk/components/pollOptionsList.dart index 6a9b63d..670d8e4 100644 --- a/lib/view/pages/talk/components/pollOptionsList.dart +++ b/lib/view/pages/talk/components/pollOptionsList.dart @@ -3,10 +3,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_linkify/flutter_linkify.dart'; import '../../../../api/marianumcloud/talk/getPoll/getPollStateResponse.dart'; +import '../../../../utils/UrlOpener.dart'; class PollOptionsList extends StatefulWidget { final GetPollStateResponseObject pollData; - const PollOptionsList({super.key, required this.pollData}); + final String chatToken; + const PollOptionsList({super.key, required this.pollData, required this.chatToken}); @override State createState() => _PollOptionsListState(); @@ -54,7 +56,8 @@ class _PollOptionsListState extends State { }), ListTile( title: Linkify( - text: 'Wenn du abstimmen möchtest, verwende die Webversion unter https://cloud.marianum-fulda.de', + text: 'Wenn du abstimmen möchtest, verwende die Webversion unter https://cloud.marianum-fulda.de/call/${widget.chatToken}', + onOpen: UrlOpener.onOpen, style: Theme.of(context).textTheme.bodySmall, ), )