mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-04 03:27:09 -05:00 
			
		
		
		
	* initial attempt at new guard * do not resolve the route when replaced * Update gallery_guard.dart comment --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
		
			
				
	
	
		
			32 lines
		
	
	
		
			1006 B
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1006 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);
 | 
						|
  }
 | 
						|
}
 |