forked from Cutlery/immich
		
	This reverts commit fe2330ebf607874df66349dd5a9cf42068933427.
This commit is contained in:
		
							parent
							
								
									b262bcec03
								
							
						
					
					
						commit
						d590dec159
					
				@ -50,17 +50,51 @@ class ImmichAssetGrid extends HookConsumerWidget {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context, WidgetRef ref) {
 | 
					  Widget build(BuildContext context, WidgetRef ref) {
 | 
				
			||||||
    final settings = ref.watch(appSettingsServiceProvider);
 | 
					    var settings = ref.watch(appSettingsServiceProvider);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Needs to suppress hero animations when navigating to this widget
 | 
				
			||||||
 | 
					    final enableHeroAnimations = useState(false);
 | 
				
			||||||
 | 
					    final transitionDuration = ModalRoute.of(context)?.transitionDuration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    final perRow = useState(
 | 
					    final perRow = useState(
 | 
				
			||||||
      assetsPerRow ?? settings.getSetting(AppSettingsEnum.tilesPerRow)!,
 | 
					      assetsPerRow ?? settings.getSetting(AppSettingsEnum.tilesPerRow)!,
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    final scaleFactor = useState(7.0 - perRow.value);
 | 
					    final scaleFactor = useState(7.0 - perRow.value);
 | 
				
			||||||
    final baseScaleFactor = useState(7.0 - perRow.value);
 | 
					    final baseScaleFactor = useState(7.0 - perRow.value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    useEffect(
 | 
				
			||||||
 | 
					      () {
 | 
				
			||||||
 | 
					        // Wait for transition to complete, then re-enable
 | 
				
			||||||
 | 
					        if (transitionDuration == null) {
 | 
				
			||||||
 | 
					          // No route transition found, maybe we opened this up first
 | 
				
			||||||
 | 
					          enableHeroAnimations.value = true;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					          // Unfortunately, using the transition animation itself didn't
 | 
				
			||||||
 | 
					          // seem to work reliably. So instead, wait until the duration of the
 | 
				
			||||||
 | 
					          // animation has elapsed to re-enable the hero animations
 | 
				
			||||||
 | 
					          Future.delayed(transitionDuration).then((_) {
 | 
				
			||||||
 | 
					            enableHeroAnimations.value = true;
 | 
				
			||||||
 | 
					          });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      [],
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Future<bool> onWillPop() async {
 | 
				
			||||||
 | 
					      enableHeroAnimations.value = false;
 | 
				
			||||||
 | 
					      return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Widget buildAssetGridView(RenderList renderList) {
 | 
					    Widget buildAssetGridView(RenderList renderList) {
 | 
				
			||||||
      return RawGestureDetector(
 | 
					      return WillPopScope(
 | 
				
			||||||
 | 
					        onWillPop: onWillPop,
 | 
				
			||||||
 | 
					        child: HeroMode(
 | 
				
			||||||
 | 
					          enabled: enableHeroAnimations.value,
 | 
				
			||||||
 | 
					          child: RawGestureDetector(
 | 
				
			||||||
            gestures: {
 | 
					            gestures: {
 | 
				
			||||||
          CustomScaleGestureRecognizer: GestureRecognizerFactoryWithHandlers<
 | 
					              CustomScaleGestureRecognizer:
 | 
				
			||||||
 | 
					                  GestureRecognizerFactoryWithHandlers<
 | 
				
			||||||
                          CustomScaleGestureRecognizer>(
 | 
					                          CustomScaleGestureRecognizer>(
 | 
				
			||||||
                      () => CustomScaleGestureRecognizer(),
 | 
					                      () => CustomScaleGestureRecognizer(),
 | 
				
			||||||
                      (CustomScaleGestureRecognizer scale) {
 | 
					                      (CustomScaleGestureRecognizer scale) {
 | 
				
			||||||
@ -75,6 +109,7 @@ class ImmichAssetGrid extends HookConsumerWidget {
 | 
				
			|||||||
                    perRow.value = 7 - scaleFactor.value.toInt();
 | 
					                    perRow.value = 7 - scaleFactor.value.toInt();
 | 
				
			||||||
                  }
 | 
					                  }
 | 
				
			||||||
                };
 | 
					                };
 | 
				
			||||||
 | 
					                scale.onEnd = (details) {};
 | 
				
			||||||
              })
 | 
					              })
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            child: ImmichAssetGridView(
 | 
					            child: ImmichAssetGridView(
 | 
				
			||||||
@ -94,6 +129,8 @@ class ImmichAssetGrid extends HookConsumerWidget {
 | 
				
			|||||||
              visibleItemsListener: visibleItemsListener,
 | 
					              visibleItemsListener: visibleItemsListener,
 | 
				
			||||||
              topWidget: topWidget,
 | 
					              topWidget: topWidget,
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user