chore: remove old people provider (#30662)

* chore: remove old people provider

* refactor: rename driftGetAllPeopleProvider

* minor fixes

---------

Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
This commit is contained in:
shenlong 2026-08-12 21:12:12 +05:30 committed by GitHub
parent 303a9f15b1
commit 1c3a5cf508
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 6 additions and 67 deletions

View file

@ -145,7 +145,7 @@ class _PeopleCollectionCard extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
final people = ref.watch(driftGetAllPeopleProvider);
final people = ref.watch(getAllPeopleProvider);
return LayoutBuilder(
builder: (context, constraints) {

View file

@ -33,7 +33,7 @@ class _DriftPeopleCollectionPageState extends ConsumerState<DriftPeopleCollectio
@override
Widget build(BuildContext context) {
final people = ref.watch(driftGetAllPeopleProvider);
final people = ref.watch(getAllPeopleProvider);
return LayoutBuilder(
builder: (context, constraints) {

View file

@ -19,7 +19,7 @@ final driftPeopleAssetProvider = FutureProvider.family<List<Person>, String>((re
return service.getAssetPeople(assetId);
});
final driftGetAllPeopleProvider = StreamProvider<List<Person>>((ref) async* {
final getAllPeopleProvider = StreamProvider<List<Person>>((ref) async* {
final service = ref.watch(driftPeopleServiceProvider);
final prefs = await ref.watch(userMetadataPreferencesProvider.future);
yield* service.watch(minFaces: prefs?.minimumFaces ?? 3);

View file

@ -1,24 +0,0 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/person.model.dart';
import 'package:immich_mobile/services/person.service.dart';
final getAllPeopleProvider = FutureProvider.autoDispose<List<Person>>((ref) async {
final PersonService personService = ref.read(personServiceProvider);
final people = await personService.getAllPeople();
return people;
});
final updatePersonNameProvider = FutureProvider.autoDispose(
(ref) => (String personId, String updatedName) async {
final PersonService personService = ref.read(personServiceProvider);
final person = await personService.updateName(personId, updatedName);
if (person != null && person.name == updatedName) {
ref.invalidate(getAllPeopleProvider);
return true;
}
return false;
},
);

View file

@ -11,11 +11,6 @@ class PersonApiRepository extends ApiRepository {
PersonApiRepository(this._api);
Future<List<Person>> getAll() async {
final dto = await checkNull(_api.getAllPeople());
return dto.people.map(_toPerson).toList();
}
Future<Person> update(String id, {String? name, DateTime? birthday}) async {
final birthdayUtc = birthday == null ? null : DateTime.utc(birthday.year, birthday.month, birthday.day);
final dto = PersonUpdateDto(
@ -27,5 +22,5 @@ class PersonApiRepository extends ApiRepository {
}
static Person _toPerson(PersonResponseDto dto) =>
.new(birthDate: dto.birthDate, id: dto.id, name: dto.name, updatedAt: dto.updatedAt.value);
.new(birthDate: dto.birthDate, id: dto.id, name: dto.name, updatedAt: dto.updatedAt.orElse(null));
}

View file

@ -1,32 +0,0 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/person.model.dart';
import 'package:immich_mobile/repositories/person_api.repository.dart';
import 'package:logging/logging.dart';
final personServiceProvider = Provider.autoDispose<PersonService>(
(ref) => PersonService(ref.watch(personApiRepositoryProvider)),
);
class PersonService {
final Logger _log = Logger("PersonService");
final PersonApiRepository _personApiRepository;
PersonService(this._personApiRepository);
Future<List<Person>> getAllPeople() async {
try {
return await _personApiRepository.getAll();
} catch (error, stack) {
_log.severe("Error while fetching curated people", error, stack);
return [];
}
}
Future<Person?> updateName(String id, String name) async {
try {
return await _personApiRepository.update(id, name: name);
} catch (error, stack) {
_log.severe("Error while updating person name", error, stack);
}
return null;
}
}

View file

@ -8,7 +8,7 @@ import 'package:immich_mobile/extensions/string_extensions.dart';
import 'package:immich_mobile/generated/translations.g.dart';
import 'package:immich_mobile/pages/common/large_leading_tile.dart';
import 'package:immich_mobile/presentation/widgets/images/remote_image_provider.dart';
import 'package:immich_mobile/providers/search/people.provider.dart';
import 'package:immich_mobile/providers/infrastructure/people.provider.dart';
import 'package:immich_mobile/utils/image_url_builder.dart';
import 'package:immich_mobile/widgets/common/search_field.dart';
@ -65,7 +65,7 @@ class PeoplePicker extends HookConsumerWidget {
padding: const EdgeInsets.only(bottom: 2.0),
child: LargeLeadingTile(
title: Text(
person.name,
person.name.nullIfEmpty ?? context.t.no_name,
style: context.textTheme.bodyLarge?.copyWith(
fontSize: 20,
fontWeight: FontWeight.w500,