@@ -99,13 +99,7 @@ class BlockContentList extends StatelessWidget {
99
99
);
100
100
return MessageImage (node: node);
101
101
} else if (node is InlineVideoNode ) {
102
- return Text .rich (
103
- TextSpan (children: [
104
- const TextSpan (text: "(unimplemented:" , style: errorStyle),
105
- TextSpan (text: node.debugHtmlText, style: errorCodeStyle),
106
- const TextSpan (text: ")" , style: errorStyle),
107
- ]),
108
- style: errorStyle);
102
+ return MessageInlineVideo (node: node);
109
103
} else if (node is EmbedVideoNode ) {
110
104
return MessageEmbedVideo (node: node);
111
105
} else if (node is UnimplementedBlockContentNode ) {
@@ -387,7 +381,10 @@ class MessageImage extends StatelessWidget {
387
381
return MessageMediaContainer (
388
382
onTap: resolvedSrc == null ? null : () { // TODO(log)
389
383
Navigator .of (context).push (getLightboxRoute (
390
- context: context, message: message, src: resolvedSrc));
384
+ context: context,
385
+ message: message,
386
+ src: resolvedSrc,
387
+ mediaType: MediaType .image));
391
388
},
392
389
child: resolvedSrc == null ? null : LightboxHero (
393
390
message: message,
@@ -398,6 +395,37 @@ class MessageImage extends StatelessWidget {
398
395
}
399
396
}
400
397
398
+ class MessageInlineVideo extends StatelessWidget {
399
+ const MessageInlineVideo ({super .key, required this .node});
400
+
401
+ final InlineVideoNode node;
402
+
403
+ @override
404
+ Widget build (BuildContext context) {
405
+ final message = InheritedMessage .of (context);
406
+ final store = PerAccountStoreWidget .of (context);
407
+ final resolvedSrc = store.tryResolveUrl (node.srcUrl);
408
+
409
+ return MessageMediaContainer (
410
+ onTap: resolvedSrc == null ? null : () { // TODO(log)
411
+ Navigator .of (context).push (getLightboxRoute (
412
+ context: context,
413
+ message: message,
414
+ src: resolvedSrc,
415
+ mediaType: MediaType .video));
416
+ },
417
+ child: Container (
418
+ color: Colors .black,
419
+ alignment: Alignment .center,
420
+ // To avoid potentially confusing UX, do not show play icon as
421
+ // we also disable onTap above.
422
+ child: resolvedSrc == null ? null : const Icon ( // TODO(log)
423
+ Icons .play_arrow_rounded,
424
+ color: Colors .white,
425
+ size: 32 )));
426
+ }
427
+ }
428
+
401
429
class MessageEmbedVideo extends StatelessWidget {
402
430
const MessageEmbedVideo ({super .key, required this .node});
403
431
0 commit comments