mirror of
https://github.com/immich-app/immich.git
synced 2026-07-04 03:45:59 -07:00
165bca4b0a
* feat: new feature board * wip * wip * wip * lint * lint * pr feedback * pr feedback * i18n * i18n
50 lines
1.6 KiB
Dart
50 lines
1.6 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/presentation/widgets/feature_message/feature_message_dialog.widget.dart';
|
|
import 'package:immich_mobile/providers/feature_message.provider.dart';
|
|
import 'package:immich_mobile/providers/infrastructure/memory.provider.dart';
|
|
|
|
@RoutePage()
|
|
class MainTimelinePage extends ConsumerStatefulWidget {
|
|
const MainTimelinePage({super.key});
|
|
|
|
@override
|
|
ConsumerState<MainTimelinePage> createState() => _MainTimelinePageState();
|
|
}
|
|
|
|
class _MainTimelinePageState extends ConsumerState<MainTimelinePage> {
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
WidgetsBinding.instance.addPostFrameCallback((_) async {
|
|
if (!mounted) {
|
|
return;
|
|
}
|
|
final service = ref.read(featureMessageServiceProvider);
|
|
if (!service.shouldShow()) {
|
|
return;
|
|
}
|
|
|
|
await service.markSeen();
|
|
if (!mounted) {
|
|
return;
|
|
}
|
|
|
|
await showFeatureMessageDialog(context);
|
|
});
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final hasMemories = ref.watch(driftMemoryFutureProvider.select((state) => state.value?.isNotEmpty ?? false));
|
|
return Timeline(
|
|
topSliverWidget: const SliverToBoxAdapter(child: DriftMemoryLane()),
|
|
topSliverWidgetHeight: hasMemories ? 200 : 0,
|
|
showStorageIndicator: true,
|
|
);
|
|
}
|
|
}
|