changed link to directly open the chat

This commit is contained in:
2026-02-01 15:20:01 +01:00
parent 174e6ac0b7
commit 92a9a7358e
4 changed files with 19 additions and 11 deletions

10
lib/utils/UrlOpener.dart Normal file
View File

@@ -0,0 +1,10 @@
import 'package:flutter_linkify/flutter_linkify.dart';
import 'package:url_launcher/url_launcher_string.dart';
class UrlOpener {
static Future<void> onOpen(LinkableElement link) async {
if(await canLaunchUrlString(link.url)) {
await launchUrlString(link.url);
}
}
}

View File

@@ -315,7 +315,8 @@ class _ChatBubbleState extends State<ChatBubble> with SingleTickerProviderStateM
shrinkWrap: true, shrinkWrap: true,
children: [ children: [
PollOptionsList( PollOptionsList(
pollData: pollData pollData: pollData,
chatToken: widget.chatData.token
) )
] ]
); );

View File

@@ -2,12 +2,12 @@
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_linkify/flutter_linkify.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/getChatResponse.dart';
import '../../../../api/marianumcloud/talk/chat/richObjectStringProcessor.dart'; import '../../../../api/marianumcloud/talk/chat/richObjectStringProcessor.dart';
import '../../../../model/accountData.dart'; import '../../../../model/accountData.dart';
import '../../../../model/endpointData.dart'; import '../../../../model/endpointData.dart';
import '../../../../utils/UrlOpener.dart';
class ChatMessage { class ChatMessage {
String originalMessage; String originalMessage;
@@ -29,7 +29,7 @@ class ChatMessage {
var contentWidget = Linkify( var contentWidget = Linkify(
text: content, text: content,
onOpen: onOpen, onOpen: UrlOpener.onOpen,
); );
if(originalData?['object']?.type == RichObjectStringObjectType.talkPoll) { if(originalData?['object']?.type == RichObjectStringObjectType.talkPoll) {
@@ -73,10 +73,4 @@ class ChatMessage {
) )
); );
} }
Future<void> onOpen(LinkableElement link) async {
if(await canLaunchUrlString(link.url)) {
await launchUrlString(link.url);
}
}
} }

View File

@@ -3,10 +3,12 @@ import 'package:flutter/material.dart';
import 'package:flutter_linkify/flutter_linkify.dart'; import 'package:flutter_linkify/flutter_linkify.dart';
import '../../../../api/marianumcloud/talk/getPoll/getPollStateResponse.dart'; import '../../../../api/marianumcloud/talk/getPoll/getPollStateResponse.dart';
import '../../../../utils/UrlOpener.dart';
class PollOptionsList extends StatefulWidget { class PollOptionsList extends StatefulWidget {
final GetPollStateResponseObject pollData; final GetPollStateResponseObject pollData;
const PollOptionsList({super.key, required this.pollData}); final String chatToken;
const PollOptionsList({super.key, required this.pollData, required this.chatToken});
@override @override
State<PollOptionsList> createState() => _PollOptionsListState(); State<PollOptionsList> createState() => _PollOptionsListState();
@@ -54,7 +56,8 @@ class _PollOptionsListState extends State<PollOptionsList> {
}), }),
ListTile( ListTile(
title: Linkify( 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, style: Theme.of(context).textTheme.bodySmall,
), ),
) )