import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/entities/user.entity.dart'; import 'package:immich_mobile/interfaces/partner_api.interface.dart'; import 'package:immich_mobile/providers/api.provider.dart'; import 'package:immich_mobile/repositories/api.repository.dart'; import 'package:openapi/api.dart'; final partnerApiRepositoryProvider = Provider( (ref) => PartnerApiRepository( ref.watch(apiServiceProvider).partnersApi, ), ); class PartnerApiRepository extends ApiRepository implements IPartnerApiRepository { final PartnersApi _api; PartnerApiRepository(this._api); @override Future> getAll(Direction direction) async { final response = await checkNull( _api.getPartners( direction == Direction.sharedByMe ? PartnerDirection.by : PartnerDirection.with_, ), ); return response.map(User.fromPartnerDto).toList(); } @override Future create(String id) async { final dto = await checkNull(_api.createPartner(id)); return User.fromPartnerDto(dto); } @override Future delete(String id) => _api.removePartner(id); @override Future update(String id, {required bool inTimeline}) async { final dto = await checkNull( _api.updatePartner( id, UpdatePartnerDto(inTimeline: inTimeline), ), ); return User.fromPartnerDto(dto); } }