From f85efb8018fd2602b076fd144e5817c462b86e79 Mon Sep 17 00:00:00 2001 From: Yaros Date: Thu, 11 Jun 2026 21:26:20 +0200 Subject: [PATCH] chore: use totalAssets from service --- .../bottom_sheet/map_bottom_sheet.widget.dart | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/mobile/lib/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart b/mobile/lib/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart index 04de68ad68..2eb17e4458 100644 --- a/mobile/lib/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart +++ b/mobile/lib/presentation/widgets/bottom_sheet/map_bottom_sheet.widget.dart @@ -1,5 +1,9 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:immich_mobile/domain/models/events.model.dart'; +import 'package:immich_mobile/domain/utils/event_stream.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/generated/translations.g.dart'; import 'package:immich_mobile/presentation/widgets/bottom_sheet/base_bottom_sheet.widget.dart'; @@ -29,11 +33,6 @@ class MapBottomSheet extends StatelessWidget { } } -final _mapAssetCountProvider = StreamProvider.autoDispose((ref) { - final service = ref.watch(timelineServiceProvider); - return service.watchBuckets().map((buckets) => buckets.fold(0, (acc, b) => acc + b.assetCount)); -}, dependencies: [timelineServiceProvider]); - class _ScopedMapTimeline extends StatelessWidget { const _ScopedMapTimeline(); @@ -64,12 +63,31 @@ class _ScopedMapTimeline extends StatelessWidget { } } -class _MapTimelineContent extends ConsumerWidget { +class _MapTimelineContent extends ConsumerStatefulWidget { const _MapTimelineContent(); @override - Widget build(BuildContext context, WidgetRef ref) { - final count = ref.watch(_mapAssetCountProvider).valueOrNull ?? 0; + ConsumerState<_MapTimelineContent> createState() => _MapTimelineContentState(); +} + +class _MapTimelineContentState extends ConsumerState<_MapTimelineContent> { + StreamSubscription? _reloadSubscription; + + @override + void initState() { + super.initState(); + _reloadSubscription = EventStream.shared.listen((_) => setState(() {})); + } + + @override + void dispose() { + _reloadSubscription?.cancel(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final count = ref.watch(timelineServiceProvider.select((s) => s.totalAssets)); return Column( children: [ Text(context.t.map_assets_in_bounds(count: count), style: context.themeData.textTheme.headlineSmall),