mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-04 03:27:09 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			31 lines
		
	
	
		
			998 B
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			998 B
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:auto_route/auto_route.dart';
 | 
						|
import 'package:immich_mobile/routing/router.dart';
 | 
						|
 | 
						|
/// Handles duplicate navigation to this route (primarily for deep linking)
 | 
						|
class GalleryGuard extends AutoRouteGuard {
 | 
						|
  const GalleryGuard();
 | 
						|
  @override
 | 
						|
  void onNavigation(NavigationResolver resolver, StackRouter router) async {
 | 
						|
    final newRouteName = resolver.route.name;
 | 
						|
    final currentTopRouteName = router.stack.isNotEmpty ? router.stack.last.name : null;
 | 
						|
 | 
						|
    if (currentTopRouteName == newRouteName) {
 | 
						|
      // Replace instead of pushing duplicate
 | 
						|
      final args = resolver.route.args as GalleryViewerRouteArgs;
 | 
						|
 | 
						|
      router.replace(
 | 
						|
        GalleryViewerRoute(
 | 
						|
          renderList: args.renderList,
 | 
						|
          initialIndex: args.initialIndex,
 | 
						|
          heroOffset: args.heroOffset,
 | 
						|
          showStack: args.showStack,
 | 
						|
        ),
 | 
						|
      );
 | 
						|
      // Prevent further navigation since we replaced the route
 | 
						|
      resolver.next(false);
 | 
						|
      return;
 | 
						|
    }
 | 
						|
    resolver.next(true);
 | 
						|
  }
 | 
						|
}
 |