mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-03 19:17:11 -05:00 
			
		
		
		
	* feat: show stacks in asset viewer * fix: global key issue and flash on stack asset change * feat(mobile): stack and unstack action (#19941) * feat(mobile): stack and unstack action * add custom model * use stackId from ActionSource * Update mobile/lib/providers/infrastructure/action.provider.dart Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com> --------- Co-authored-by: shenlong <139912620+shenlong-tanwen@users.noreply.github.com> * fix: lint * fix: bad merge * fix: test --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Co-authored-by: Alex <alex.tran1502@gmail.com> Co-authored-by: Daimolean <92239625+wuzihao051119@users.noreply.github.com> Co-authored-by: wuzihao051119 <wuzihao051119@outlook.com>
		
			
				
	
	
		
			33 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
import 'package:auto_route/auto_route.dart';
 | 
						|
import 'package:flutter/material.dart';
 | 
						|
import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
						|
import 'package:immich_mobile/presentation/widgets/memory/memory_lane.widget.dart';
 | 
						|
import 'package:immich_mobile/presentation/widgets/timeline/timeline.widget.dart';
 | 
						|
import 'package:immich_mobile/providers/infrastructure/memory.provider.dart';
 | 
						|
 | 
						|
@RoutePage()
 | 
						|
class MainTimelinePage extends ConsumerWidget {
 | 
						|
  const MainTimelinePage({super.key});
 | 
						|
 | 
						|
  @override
 | 
						|
  Widget build(BuildContext context, WidgetRef ref) {
 | 
						|
    final memoryLaneProvider = ref.watch(driftMemoryFutureProvider);
 | 
						|
 | 
						|
    return memoryLaneProvider.maybeWhen(
 | 
						|
      data: (memories) {
 | 
						|
        return memories.isEmpty
 | 
						|
            ? const Timeline(showStorageIndicator: true)
 | 
						|
            : Timeline(
 | 
						|
                topSliverWidget: SliverToBoxAdapter(
 | 
						|
                  key: Key('memory-lane-${memories.first.assets.first.id}'),
 | 
						|
                  child: DriftMemoryLane(memories: memories),
 | 
						|
                ),
 | 
						|
                topSliverWidgetHeight: 200,
 | 
						|
                showStorageIndicator: true,
 | 
						|
              );
 | 
						|
      },
 | 
						|
      orElse: () => const Timeline(showStorageIndicator: true),
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 |