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,
children: [
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: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<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 '../../../../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<PollOptionsList> createState() => _PollOptionsListState();
@@ -54,7 +56,8 @@ class _PollOptionsListState extends State<PollOptionsList> {
}),
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,
),
)