import 'package:social_app/core/api/i_api_client.dart'; import 'models/user_response.dart'; class UserBasicInfo { final String id; final String username; final String? avatarUrl; UserBasicInfo({required this.id, required this.username, this.avatarUrl}); factory UserBasicInfo.fromJson(Map json) { return UserBasicInfo( id: json['id'] as String, username: json['username'] as String, avatarUrl: json['avatar_url'] as String?, ); } } class UsersApi { final IApiClient _client; static const _prefix = '/api/v1/users'; UsersApi(this._client); Future getById(String userId) async { final response = await _client.get('$_prefix/$userId'); return UserBasicInfo.fromJson(response.data); } Future getMe() async { final response = await _client.get('$_prefix/me'); return UserResponse.fromJson(response.data); } Future updateMe(UserUpdateRequest request) async { final response = await _client.patch('$_prefix/me', data: request.toJson()); return UserResponse.fromJson(response.data); } Future> searchUsers(String query) async { final response = await _client.post( '$_prefix/search', data: {'query': query}, ); final List data = response.data; return data.map((json) => UserResponse.fromJson(json)).toList(); } }