import 'package:dio/dio.dart'; import '../../../../core/logging/logger.dart'; import '../../../../core/network/api_problem.dart'; import '../../../../data/network/api_client.dart'; import '../models/my_invite_code.dart'; class InviteApi { InviteApi({required ApiClient apiClient}) : _apiClient = apiClient; final ApiClient _apiClient; final Logger _logger = getLogger('features.settings.data.apis'); Future getMyInviteCode() async { try { final json = await _apiClient.getJson('/api/v1/invite/me'); return MyInviteCode( code: json['code'] as String, usedCount: json['used_count'] as int, ); } on DioException catch (error, stackTrace) { _logger.error( message: 'Get my invite code failed', error: error, stackTrace: stackTrace, ); throw _mapProblem(error); } } ApiProblem _mapProblem(DioException error) { final status = error.response?.statusCode ?? 500; final data = error.response?.data; if (data is Map) { return ApiProblem( status: status, title: (data['title'] as String?) ?? 'Request failed', detail: (data['detail'] as String?) ?? '', code: data['code'] as String?, ); } return ApiProblem( status: status, title: 'Network error', detail: error.message ?? 'Request failed', ); } }