/// Builds a URL by combining [url] with [queryParams].
///
/// - If [url] already contains query parameters or a fragment (`#`),
/// they are stripped before adding [queryParams].
/// - Entries with empty-string values are ignored.
/// - Parameters are URL-encoded.
String buildUrl({
required String url,
required Map<String, String> queryParams,
}) {
// Strip off any existing query or fragment
final baseUrl = url.split('?')[0].split('#')[0];
// Filter out empty values
final params = <String, String>{
for (final entry in queryParams.entries)
if (entry.value.trim().isNotEmpty) entry.key: entry.value,
};
if (params.isEmpty) return baseUrl;
final query = Uri(queryParameters: params).query;
return '$baseUrl?$query';
}