forked from Cutlery/immich
		
	This reverts commit fe2330ebf607874df66349dd5a9cf42068933427.
This commit is contained in:
		
							parent
							
								
									b262bcec03
								
							
						
					
					
						commit
						d590dec159
					
				@ -50,49 +50,86 @@ 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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Widget buildAssetGridView(RenderList renderList) {
 | 
					    useEffect(
 | 
				
			||||||
      return RawGestureDetector(
 | 
					      () {
 | 
				
			||||||
        gestures: {
 | 
					        // Wait for transition to complete, then re-enable
 | 
				
			||||||
          CustomScaleGestureRecognizer: GestureRecognizerFactoryWithHandlers<
 | 
					        if (transitionDuration == null) {
 | 
				
			||||||
                  CustomScaleGestureRecognizer>(
 | 
					          // No route transition found, maybe we opened this up first
 | 
				
			||||||
              () => CustomScaleGestureRecognizer(),
 | 
					          enableHeroAnimations.value = true;
 | 
				
			||||||
              (CustomScaleGestureRecognizer scale) {
 | 
					        } else {
 | 
				
			||||||
            scale.onStart = (details) {
 | 
					          // Unfortunately, using the transition animation itself didn't
 | 
				
			||||||
              baseScaleFactor.value = scaleFactor.value;
 | 
					          // 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;
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      [],
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            scale.onUpdate = (details) {
 | 
					    Future<bool> onWillPop() async {
 | 
				
			||||||
              scaleFactor.value =
 | 
					      enableHeroAnimations.value = false;
 | 
				
			||||||
                  max(min(5.0, baseScaleFactor.value * details.scale), 1.0);
 | 
					      return true;
 | 
				
			||||||
              if (7 - scaleFactor.value.toInt() != perRow.value) {
 | 
					    }
 | 
				
			||||||
                perRow.value = 7 - scaleFactor.value.toInt();
 | 
					
 | 
				
			||||||
              }
 | 
					    Widget buildAssetGridView(RenderList renderList) {
 | 
				
			||||||
            };
 | 
					      return WillPopScope(
 | 
				
			||||||
          })
 | 
					        onWillPop: onWillPop,
 | 
				
			||||||
        },
 | 
					        child: HeroMode(
 | 
				
			||||||
        child: ImmichAssetGridView(
 | 
					          enabled: enableHeroAnimations.value,
 | 
				
			||||||
          onRefresh: onRefresh,
 | 
					          child: RawGestureDetector(
 | 
				
			||||||
          assetsPerRow: perRow.value,
 | 
					            gestures: {
 | 
				
			||||||
          listener: listener,
 | 
					              CustomScaleGestureRecognizer:
 | 
				
			||||||
          showStorageIndicator: showStorageIndicator ??
 | 
					                  GestureRecognizerFactoryWithHandlers<
 | 
				
			||||||
              settings.getSetting(AppSettingsEnum.storageIndicator),
 | 
					                          CustomScaleGestureRecognizer>(
 | 
				
			||||||
          renderList: renderList,
 | 
					                      () => CustomScaleGestureRecognizer(),
 | 
				
			||||||
          margin: margin,
 | 
					                      (CustomScaleGestureRecognizer scale) {
 | 
				
			||||||
          selectionActive: selectionActive,
 | 
					                scale.onStart = (details) {
 | 
				
			||||||
          preselectedAssets: preselectedAssets,
 | 
					                  baseScaleFactor.value = scaleFactor.value;
 | 
				
			||||||
          canDeselect: canDeselect,
 | 
					                };
 | 
				
			||||||
          dynamicLayout: dynamicLayout ??
 | 
					
 | 
				
			||||||
              settings.getSetting(AppSettingsEnum.dynamicLayout),
 | 
					                scale.onUpdate = (details) {
 | 
				
			||||||
          showMultiSelectIndicator: showMultiSelectIndicator,
 | 
					                  scaleFactor.value =
 | 
				
			||||||
          visibleItemsListener: visibleItemsListener,
 | 
					                      max(min(5.0, baseScaleFactor.value * details.scale), 1.0);
 | 
				
			||||||
          topWidget: topWidget,
 | 
					                  if (7 - scaleFactor.value.toInt() != perRow.value) {
 | 
				
			||||||
 | 
					                    perRow.value = 7 - scaleFactor.value.toInt();
 | 
				
			||||||
 | 
					                  }
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
 | 
					                scale.onEnd = (details) {};
 | 
				
			||||||
 | 
					              })
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            child: ImmichAssetGridView(
 | 
				
			||||||
 | 
					              onRefresh: onRefresh,
 | 
				
			||||||
 | 
					              assetsPerRow: perRow.value,
 | 
				
			||||||
 | 
					              listener: listener,
 | 
				
			||||||
 | 
					              showStorageIndicator: showStorageIndicator ??
 | 
				
			||||||
 | 
					                  settings.getSetting(AppSettingsEnum.storageIndicator),
 | 
				
			||||||
 | 
					              renderList: renderList,
 | 
				
			||||||
 | 
					              margin: margin,
 | 
				
			||||||
 | 
					              selectionActive: selectionActive,
 | 
				
			||||||
 | 
					              preselectedAssets: preselectedAssets,
 | 
				
			||||||
 | 
					              canDeselect: canDeselect,
 | 
				
			||||||
 | 
					              dynamicLayout: dynamicLayout ??
 | 
				
			||||||
 | 
					                  settings.getSetting(AppSettingsEnum.dynamicLayout),
 | 
				
			||||||
 | 
					              showMultiSelectIndicator: showMultiSelectIndicator,
 | 
				
			||||||
 | 
					              visibleItemsListener: visibleItemsListener,
 | 
				
			||||||
 | 
					              topWidget: topWidget,
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user