@@ -99,13 +99,7 @@ class BlockContentList extends StatelessWidget {
9999 );
100100 return MessageImage (node: node);
101101 } 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);
109103 } else if (node is EmbedVideoNode ) {
110104 return MessageEmbedVideo (node: node);
111105 } else if (node is UnimplementedBlockContentNode ) {
@@ -387,7 +381,10 @@ class MessageImage extends StatelessWidget {
387381 return MessageMediaContainer (
388382 onTap: resolvedSrc == null ? null : () { // TODO(log)
389383 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));
391388 },
392389 child: resolvedSrc == null ? null : LightboxHero (
393390 message: message,
@@ -398,6 +395,37 @@ class MessageImage extends StatelessWidget {
398395 }
399396}
400397
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+
401429class MessageEmbedVideo extends StatelessWidget {
402430 const MessageEmbedVideo ({super .key, required this .node});
403431
0 commit comments