Files
Client/lib/api/marianumconnect/queries/user_search/user_search.dart
T

31 lines
1.0 KiB
Dart

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<UserSearchResponse> run(String query) async {
try {
final response = await _dio.get<List<dynamic>>(
MarianumConnectEndpoint.resolve('users/search'),
queryParameters: {'q': query},
);
final list = response.data!
.map((e) => McUserSearchResult.fromJson(e as Map<String, dynamic>))
.toList();
return UserSearchResponse(result: list);
} on DioException catch (e) {
throw mapMarianumConnectError(e);
}
}
}