From 022cbe42ec22ab324d4a819ae3d295b887210ccc Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Tue, 14 Jan 2025 17:17:12 +0100 Subject: [PATCH] Remove extra whitespace when parsing search inputs. --- CHANGELOG.md | 1 + pkg/_pub_shared/lib/search/search_form.dart | 2 +- pkg/_pub_shared/test/search/search_form_test.dart | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 296e0b953..1c586239e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ AppEngine version, listed here to ease deployment and troubleshooting. ## Next Release (replace with git tag when deployed) * Bump runtimeVersion to `2025.01.15`. * Note: started deleting `Package.isBlocked`, `Publisher.isBlocked`, `User.isBlocked`. + * Note: Updates search form normalization: whitespaces. ## `20250114t095800-all` * Bump runtimeVersion to `2025.01.14`. diff --git a/pkg/_pub_shared/lib/search/search_form.dart b/pkg/_pub_shared/lib/search/search_form.dart index d2ea6e899..7bd52f41b 100644 --- a/pkg/_pub_shared/lib/search/search_form.dart +++ b/pkg/_pub_shared/lib/search/search_form.dart @@ -367,7 +367,7 @@ class SearchForm { }) { currentPage ??= 1; pageSize ??= resultsPerPage; - final q = _stringToNull(query?.trim()); + final q = _stringToNull(query?.replaceAll(_whitespacesRegExp, ' ').trim()); return SearchForm._( query: q, order: order, diff --git a/pkg/_pub_shared/test/search/search_form_test.dart b/pkg/_pub_shared/test/search/search_form_test.dart index 85504c7a3..5b768e90f 100644 --- a/pkg/_pub_shared/test/search/search_form_test.dart +++ b/pkg/_pub_shared/test/search/search_form_test.dart @@ -30,6 +30,11 @@ void main() { expect(form.toSearchLink(page: 3), '/packages?q=web+framework&page=3'); }); + test('query with extra whitespaces', () { + final form = SearchForm(query: ' aa bbb cc '); + expect(form.query, 'aa bbb cc'); + }); + test('query with sdk context', () { final form = SearchForm(query: 'sdk:flutter some framework'); expect(form.toSearchLink(), '/packages?q=sdk%3Aflutter+some+framework');