Files
recipe-app/flutter/lib/features/profile/data/profile_repository.dart
T
2026-04-23 21:14:46 +02:00

42 lines
1.2 KiB
Dart

import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../../core/api/api_client.dart';
import '../../../core/api/api_paths.dart';
import '../../../core/api/guarded_api_call.dart';
import '../../auth/data/auth_providers.dart';
import '../domain/user_profile.dart';
final profileRepositoryProvider = Provider<ProfileRepository>((ref) {
return ProfileRepository(ref.watch(apiClientProvider), ref);
});
class ProfileRepository {
final ApiClient _apiClient;
final Ref _ref;
ProfileRepository(this._apiClient, this._ref);
Future<UserProfile> getMe() async {
final data = await guardedApiCall(
_ref,
() => _apiClient.getJson(UserApiPaths.me),
);
return UserProfile.fromJson(data);
}
Future<UserProfile> updateMe({
String? email,
String? firstName,
String? lastName,
}) async {
final body = <String, dynamic>{
if (email != null) 'email': email,
if (firstName != null) 'firstName': firstName,
if (lastName != null) 'lastName': lastName,
};
final data = await guardedApiCall(
_ref,
() => _apiClient.patchJson(UserApiPaths.me, body: body),
);
return UserProfile.fromJson(data);
}
}