expandable inline images

This commit is contained in:
Henry Hiles 2026-03-30 15:24:26 -04:00
commit 0a6c097c50
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -9,6 +9,7 @@ import "package:nexus/helpers/extensions/get_headers.dart";
import "package:nexus/helpers/extensions/link_to_mention.dart";
import "package:nexus/helpers/extensions/mxc_to_https.dart";
import "package:nexus/helpers/launch_helper.dart";
import "package:nexus/widgets/chat_page/expandable_image.dart";
import "package:nexus/widgets/chat_page/html/mention_chip.dart";
import "package:nexus/widgets/chat_page/html/spoiler_text.dart";
import "package:nexus/widgets/chat_page/html/code_block.dart";
@ -34,6 +35,16 @@ class Html extends ConsumerWidget {
final height = int.tryParse(element.attributes["height"] ?? "") ?? 300;
final width = int.tryParse(element.attributes["width"] ?? "");
final src = Uri.tryParse(element.attributes["src"] ?? "")
?.mxcToHttps(
ref.watch(
ClientStateController.provider.select(
(value) => value?.homeserverUrl,
),
) ??
"",
)
.toString();
return switch (element.localName) {
"code" =>
@ -56,22 +67,15 @@ class Html extends ConsumerWidget {
: InlineCustomWidget(child: MentionChip(element.text)),
"img" =>
element.attributes["src"] == null
src == null
? SizedBox.shrink()
: InlineCustomWidget(
alignment: PlaceholderAlignment.middle,
child: ExpandableImage(
src,
child: Image(
image: CachedNetworkImage(
Uri.parse(element.attributes["src"]!)
.mxcToHttps(
ref.watch(
ClientStateController.provider.select(
(value) => value?.homeserverUrl,
),
) ??
"",
)
.toString(),
src,
ref.watch(CrossCacheController.provider),
headers: ref.headers,
),
@ -89,6 +93,7 @@ class Html extends ConsumerWidget {
: CircularProgressIndicator(),
),
),
),
("del" ||
"h1" ||
"h2" ||