Files
sendico/frontend/pshared/lib/utils/http/params.dart
2025-12-05 01:32:41 +01:00

39 lines
1.0 KiB
Dart

// Query parameter constants
const String _limitParam = 'limit';
const String _offsetParam = 'offset';
const String _archivedParam = 'archived';
void _addIfNotNull(Map<String, String> params, String key, dynamic value) {
if (value != null) {
params[key] = value.toString();
}
}
Uri paramsToUri({
required String path,
int? limit,
int? offset,
bool? fetchArchived,
Map<String, String>? params,
}) {
Map<String, String> queryParams = params ?? {};
_addIfNotNull(queryParams, _limitParam, limit);
_addIfNotNull(queryParams, _offsetParam, offset);
_addIfNotNull(queryParams, _archivedParam, fetchArchived);
// Build URL with query parameters using Uri class
return Uri(
path: path,
queryParameters: queryParams.isEmpty ? null : queryParams,
);
}
String paramsToUriString({
required String path,
Map<String, String> queryParams = const {},
int? limit,
int? offset,
bool? fetchArchived,
}) => paramsToUri(path: path, limit: limit, offset: offset, fetchArchived: fetchArchived).toString();