From 1cf1059abe99a49e301b85f9ad9b03512216f767 Mon Sep 17 00:00:00 2001 From: shenlong <139912620+shenlong-tanwen@users.noreply.github.com> Date: Mon, 7 Apr 2025 08:34:13 +0530 Subject: [PATCH] fix(mobile): prevent unnecessary reload on multi user timeline (#17418) Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> --- mobile/lib/providers/user.provider.dart | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mobile/lib/providers/user.provider.dart b/mobile/lib/providers/user.provider.dart index 99dfba9010..1a1c21554c 100644 --- a/mobile/lib/providers/user.provider.dart +++ b/mobile/lib/providers/user.provider.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:collection/collection.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/domain/models/user.model.dart'; import 'package:immich_mobile/domain/services/user.service.dart'; @@ -36,10 +37,13 @@ final currentUserProvider = class TimelineUserIdsProvider extends StateNotifier> { TimelineUserIdsProvider(this._timelineService) : super([]) { + final listEquality = const ListEquality(); _timelineService.getTimelineUserIds().then((users) => state = users); - streamSub = _timelineService - .watchTimelineUserIds() - .listen((users) => state = users); + streamSub = _timelineService.watchTimelineUserIds().listen((users) { + if (!listEquality.equals(state, users)) { + state = users; + } + }); } late final StreamSubscription> streamSub;