immich/mobile/lib/providers/infrastructure/people.provider.dart
2025-10-05 16:25:37 +02:00

31 lines
1.5 KiB
Dart

import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/person.model.dart';
import 'package:immich_mobile/domain/services/people.service.dart';
import 'package:immich_mobile/domain/services/person_merge_tracker.service.dart';
import 'package:immich_mobile/infrastructure/repositories/people.repository.dart';
import 'package:immich_mobile/providers/infrastructure/db.provider.dart';
import 'package:immich_mobile/repositories/person_api.repository.dart';
final driftPeopleRepositoryProvider = Provider<DriftPeopleRepository>(
(ref) => DriftPeopleRepository(ref.watch(driftProvider)),
);
final driftPeopleServiceProvider = Provider<DriftPeopleService>(
(ref) => DriftPeopleService(ref.watch(driftPeopleRepositoryProvider), ref.watch(personApiRepositoryProvider)),
);
final driftPeopleAssetProvider = FutureProvider.family<List<DriftPerson>, String>((ref, assetId) async {
final service = ref.watch(driftPeopleServiceProvider);
return service.getAssetPeople(assetId);
});
final driftGetAllPeopleProvider = FutureProvider<List<DriftPerson>>((ref) async {
final service = ref.watch(driftPeopleServiceProvider);
return service.getAllPeople();
});
final driftGetPersonByIdProvider = StreamProvider.family<DriftPerson?, String>((ref, personId) {
return ref.watch(driftPeopleServiceProvider).watchPersonById(personId);
});
final personMergeTrackerProvider = Provider<PersonMergeTrackerService>((ref) => PersonMergeTrackerService());