refactor(profile): update ProfileRepository to include Ref for improved state management and enhance error handling in tests

This commit is contained in:
Nils-Johan Gynther
2026-04-23 17:55:17 +02:00
parent aefc8804ad
commit 2256ddb29b
3 changed files with 14 additions and 5 deletions
+6 -1
View File
@@ -1,5 +1,6 @@
import 'dart:convert';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:http/http.dart' as http;
import 'api_exception.dart';
@@ -128,4 +129,8 @@ class ApiClient {
if (parsedBody is String && parsedBody.trim().isNotEmpty) return parsedBody;
return null;
}
}
}
final apiClientProvider = Provider<ApiClient>((ref) {
return ApiClient();
});
@@ -2,25 +2,29 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../../core/api/api_client.dart';
import '../../../core/api/guarded_api_call.dart';
import '../../../core/api/api_exception.dart';
import '../../auth/data/auth_providers.dart';
final profileRepositoryProvider = Provider<ProfileRepository>((ref) {
final apiClient = ref.read(apiClientProvider);
return ProfileRepository(apiClient);
return ProfileRepository(apiClient, ref);
});
class ProfileRepository {
final ApiClient _apiClient;
final Ref _ref;
ProfileRepository(this._apiClient);
ProfileRepository(this._apiClient, this._ref);
Future<Map<String, dynamic>> getProfile() async {
return guardedApiCall(
_ref,
() => _apiClient.getJson('/api/profile'),
);
}
Future<Map<String, dynamic>> updateProfile(Map<String, dynamic> profileData) async {
return guardedApiCall(
_ref,
() => _apiClient.patchJson('/api/profile', profileData),
);
}