Skip to content

Commit 4ef5973

Browse files
rajveermalviyagnprice
authored andcommitted
lightbox [nfc]: Split getLightboxRoute for images vs. videos
1 parent cf4c465 commit 4ef5973

File tree

3 files changed

+46
-32
lines changed

3 files changed

+46
-32
lines changed

lib/widgets/content.dart

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -572,12 +572,11 @@ class MessageImage extends StatelessWidget {
572572

573573
return MessageMediaContainer(
574574
onTap: resolvedSrcUrl == null ? null : () { // TODO(log)
575-
Navigator.of(context).push(getLightboxRoute(
575+
Navigator.of(context).push(getImageLightboxRoute(
576576
context: context,
577577
message: message,
578578
src: resolvedSrcUrl,
579-
thumbnailUrl: resolvedThumbnailUrl,
580-
mediaType: MediaType.image));
579+
thumbnailUrl: resolvedThumbnailUrl));
581580
},
582581
child: node.loading
583582
? const CupertinoActivityIndicator()
@@ -603,12 +602,10 @@ class MessageInlineVideo extends StatelessWidget {
603602

604603
return MessageMediaContainer(
605604
onTap: resolvedSrc == null ? null : () { // TODO(log)
606-
Navigator.of(context).push(getLightboxRoute(
605+
Navigator.of(context).push(getVideoLightboxRoute(
607606
context: context,
608607
message: message,
609-
src: resolvedSrc,
610-
thumbnailUrl: null,
611-
mediaType: MediaType.video));
608+
src: resolvedSrc));
612609
},
613610
child: Container(
614611
color: Colors.black, // Web has the same color in light and dark mode.

lib/widgets/lightbox.dart

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -536,18 +536,10 @@ class _VideoLightboxPageState extends State<VideoLightboxPage> with PerAccountSt
536536
}
537537
}
538538

539-
enum MediaType {
540-
video,
541-
image
542-
}
543-
544-
Route<void> getLightboxRoute({
545-
int? accountId,
546-
BuildContext? context,
547-
required Message message,
548-
required Uri src,
549-
required Uri? thumbnailUrl,
550-
required MediaType mediaType,
539+
Route<void> _getLightboxRoute({
540+
required int? accountId,
541+
required BuildContext? context,
542+
required RoutePageBuilder pageBuilder,
551543
}) {
552544
return AccountPageRouteBuilder(
553545
accountId: accountId,
@@ -559,17 +551,7 @@ Route<void> getLightboxRoute({
559551
Animation<double> secondaryAnimation,
560552
) {
561553
// TODO(#40): Drag down to close?
562-
return switch (mediaType) {
563-
MediaType.image => _ImageLightboxPage(
564-
routeEntranceAnimation: animation,
565-
message: message,
566-
src: src,
567-
thumbnailUrl: thumbnailUrl),
568-
MediaType.video => VideoLightboxPage(
569-
routeEntranceAnimation: animation,
570-
message: message,
571-
src: src),
572-
};
554+
return pageBuilder(context, animation, secondaryAnimation);
573555
},
574556
transitionsBuilder: (
575557
BuildContext context,
@@ -583,3 +565,39 @@ Route<void> getLightboxRoute({
583565
},
584566
);
585567
}
568+
569+
Route<void> getImageLightboxRoute({
570+
int? accountId,
571+
BuildContext? context,
572+
required Message message,
573+
required Uri src,
574+
required Uri? thumbnailUrl,
575+
}) {
576+
return _getLightboxRoute(
577+
accountId: accountId,
578+
context: context,
579+
pageBuilder: (context, animation, secondaryAnimation) {
580+
return _ImageLightboxPage(
581+
routeEntranceAnimation: animation,
582+
message: message,
583+
src: src,
584+
thumbnailUrl: thumbnailUrl);
585+
});
586+
}
587+
588+
Route<void> getVideoLightboxRoute({
589+
int? accountId,
590+
BuildContext? context,
591+
required Message message,
592+
required Uri src,
593+
}) {
594+
return _getLightboxRoute(
595+
accountId: accountId,
596+
context: context,
597+
pageBuilder: (context, animation, secondaryAnimation) {
598+
return VideoLightboxPage(
599+
routeEntranceAnimation: animation,
600+
message: message,
601+
src: src);
602+
});
603+
}

test/widgets/lightbox_test.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,12 +211,11 @@ void main() {
211211
await tester.pumpWidget(const ZulipApp());
212212
await tester.pump();
213213
final navigator = await ZulipApp.navigator;
214-
navigator.push(getLightboxRoute(
214+
navigator.push(getImageLightboxRoute(
215215
accountId: eg.selfAccount.id,
216216
message: message ?? eg.streamMessage(),
217217
src: src,
218218
thumbnailUrl: thumbnailUrl,
219-
mediaType: MediaType.image,
220219
));
221220
await tester.pump(); // per-account store
222221
await tester.pump(const Duration(milliseconds: 301)); // nav transition

0 commit comments

Comments
 (0)