multiple runtime bugfixes for 1.5.5+65

This commit is contained in:
2026-08-28 20:42:30 +02:00
parent 65300614b1
commit 71839d0848
18 changed files with 344 additions and 159 deletions
+4 -15
View File
@@ -4,7 +4,6 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:persistent_bottom_nav_bar_v2/persistent_bottom_nav_bar_v2.dart';
import 'package:url_launcher/url_launcher_string.dart';
import '../api/marianumcloud/talk/room/get_room_response.dart';
import '../api/marianumconnect/marianumconnect_endpoint.dart';
@@ -18,6 +17,7 @@ import '../state/app/modules/app_modules.dart';
import '../state/app/modules/chat/bloc/chat_bloc.dart';
import '../state/app/modules/chat_list/bloc/chat_list_bloc.dart';
import '../state/app/modules/marianum_message/bloc/marianum_message_state.dart';
import '../utils/url_opener.dart';
import '../view/login/nextcloud_login_flow_page.dart';
import '../view/pages/files/files.dart';
import '../view/pages/files/sharing/sharee_picker_page.dart';
@@ -228,7 +228,7 @@ class AppRoutes {
openTickerPage(context, slug: slug);
return;
}
unawaited(openExternalUrl(href));
unawaited(UrlOpener.openUrl(href));
}
/// Extracts the ticker page slug from a link that points at another ticker
@@ -250,24 +250,13 @@ class AppRoutes {
return Uri.decodeComponent(rest);
}
/// Launches an external URL, restricted to safe schemes (http/https/mailto/tel).
static Future<void> openExternalUrl(String url) async {
final uri = Uri.tryParse(url);
if (uri == null) return;
const allowed = {'http', 'https', 'mailto', 'tel'};
if (!allowed.contains(uri.scheme.toLowerCase())) return;
if (await canLaunchUrlString(url)) {
await launchUrlString(url, mode: LaunchMode.externalApplication);
}
}
/// Opens a possibly site-relative web URL (e.g. the ticker `webUrl`) by
/// prefixing the active Marianum-Connect base URL when needed.
static Future<void> openWebUrl(String relativeOrAbsolute) {
if (relativeOrAbsolute.startsWith('http')) {
return openExternalUrl(relativeOrAbsolute);
return UrlOpener.openUrl(relativeOrAbsolute);
}
return openExternalUrl(
return UrlOpener.openUrl(
'${MarianumConnectEndpoint.current()}$relativeOrAbsolute',
);
}