refactor(mobile): partners provider (#16299)

* refactor(mobile): partners provider

* update analysis option

* update analysis option
This commit is contained in:
Alex
2025-02-25 08:52:33 -06:00
committed by GitHub
parent 392f9f205c
commit 579321251f
5 changed files with 90 additions and 17 deletions
+12 -15
View File
@@ -5,19 +5,18 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/providers/album/suggested_shared_users.provider.dart';
import 'package:immich_mobile/services/partner.service.dart';
import 'package:immich_mobile/entities/user.entity.dart';
import 'package:immich_mobile/providers/db.provider.dart';
import 'package:isar/isar.dart';
class PartnerSharedWithNotifier extends StateNotifier<List<User>> {
PartnerSharedWithNotifier(Isar db, this._ps) : super([]) {
final PartnerService _partnerService;
PartnerSharedWithNotifier(this._partnerService) : super([]) {
Function eq = const ListEquality<User>().equals;
final query = db.users.filter().isPartnerSharedWithEqualTo(true).sortById();
query.findAll().then((partners) {
_partnerService.getSharedWith().then((partners) {
if (!eq(state, partners)) {
state = partners;
}
}).then((_) {
query.watch().listen((partners) {
_partnerService.watchSharedWith().listen((partners) {
if (!eq(state, partners)) {
state = partners;
}
@@ -26,30 +25,28 @@ class PartnerSharedWithNotifier extends StateNotifier<List<User>> {
}
Future<bool> updatePartner(User partner, {required bool inTimeline}) {
return _ps.updatePartner(partner, inTimeline: inTimeline);
return _partnerService.updatePartner(partner, inTimeline: inTimeline);
}
final PartnerService _ps;
}
final partnerSharedWithProvider =
StateNotifierProvider<PartnerSharedWithNotifier, List<User>>((ref) {
return PartnerSharedWithNotifier(
ref.watch(dbProvider),
ref.watch(partnerServiceProvider),
);
});
class PartnerSharedByNotifier extends StateNotifier<List<User>> {
PartnerSharedByNotifier(Isar db) : super([]) {
final PartnerService _partnerService;
PartnerSharedByNotifier(this._partnerService) : super([]) {
Function eq = const ListEquality<User>().equals;
final query = db.users.filter().isPartnerSharedByEqualTo(true).sortById();
query.findAll().then((partners) {
_partnerService.getSharedBy().then((partners) {
if (!eq(state, partners)) {
state = partners;
}
}).then((_) {
streamSub = query.watch().listen((partners) {
streamSub = _partnerService.watchSharedBy().listen((partners) {
if (!eq(state, partners)) {
state = partners;
}
@@ -68,7 +65,7 @@ class PartnerSharedByNotifier extends StateNotifier<List<User>> {
final partnerSharedByProvider =
StateNotifierProvider<PartnerSharedByNotifier, List<User>>((ref) {
return PartnerSharedByNotifier(ref.watch(dbProvider));
return PartnerSharedByNotifier(ref.watch(partnerServiceProvider));
});
final partnerAvailableProvider =