import 'package:dio/dio.dart'; import '../../errors/marianumconnect_error.dart'; import '../../marianumconnect_api.dart'; import '../../marianumconnect_endpoint.dart'; import 'user_search_response.dart'; /// Searches active users (students, teachers, staff) via the MarianumConnect /// mobile API. Returns each match's Nextcloud username plus role, so the Talk /// search can start a direct chat and label results without hitting Nextcloud. class UserSearch { final Dio _dio; UserSearch({Dio? dio}) : _dio = dio ?? MarianumConnectApi.dio(); Future run(String query) async { try { final response = await _dio.get>( MarianumConnectEndpoint.resolve('users/search'), queryParameters: {'q': query}, ); final list = response.data! .map((e) => McUserSearchResult.fromJson(e as Map)) .toList(); return UserSearchResponse(result: list); } on DioException catch (e) { throw mapMarianumConnectError(e); } } }