From 3c7c74f7452e2e409478eefed4cb1ad8fb3ad516 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Tue, 23 Jun 2026 10:50:20 -0400 Subject: [PATCH] hide URL previews if generating them throws an error --- lib/controllers/url_preview_controller.dart | 43 +++++++++++---------- lib/widgets/room_chat.dart | 1 - 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/lib/controllers/url_preview_controller.dart b/lib/controllers/url_preview_controller.dart index bb5626a..3bdaae7 100644 --- a/lib/controllers/url_preview_controller.dart +++ b/lib/controllers/url_preview_controller.dart @@ -12,33 +12,36 @@ class UrlPreviewController extends AsyncNotifier { @override Future build() async { - final homeserver = ref.watch( - ClientStateController.provider.select((value) => value?.homeserverUrl), - ); + try { + final homeserver = ref.watch( + ClientStateController.provider.select((value) => value?.homeserverUrl), + ); - if (homeserver != null && !link.contains("matrix.to")) { - { - final response = await get( - .parse(homeserver) - .resolve("/_matrix/client/v1/media/preview_url") - .replace(queryParameters: {"url": link}), - headers: await ref.watch(HeaderController.provider.future), - ); + if (homeserver != null && !link.contains("matrix.to")) { + { + final response = await get( + .parse(homeserver) + .resolve("/_matrix/client/v1/media/preview_url") + .replace(queryParameters: {"url": link}), + headers: await ref.watch(HeaderController.provider.future), + ); - if (response.statusCode == 200) { - final decodedValue = json.decode(response.body); - if (decodedValue is! Map) return null; + if (response.statusCode == 200) { + final decodedValue = json.decode(response.body); + if (decodedValue is! Map) return null; - final mxc = decodedValue["og:image"]; - final image = mxc == null - ? null - : Uri.tryParse(mxc)?.mxcToHttps(homeserver); + final mxc = decodedValue["og:image"]; + final image = mxc == null + ? null + : Uri.tryParse(mxc)?.mxcToHttps(homeserver); - return .fromJson(decodedValue).copyWith(imageUrl: image); + return .fromJson(decodedValue).copyWith(imageUrl: image); + } } } + } catch (_) { + return null; } - return null; } diff --git a/lib/widgets/room_chat.dart b/lib/widgets/room_chat.dart index 2817172..e1036cc 100644 --- a/lib/widgets/room_chat.dart +++ b/lib/widgets/room_chat.dart @@ -508,7 +508,6 @@ class RoomChat extends HookConsumerWidget { MemberList(roomId), ], ), - endDrawer: showMembersByDefault ? null : MemberList(roomId), ); }