diff --git a/app/lib/frontend/handlers/account.dart b/app/lib/frontend/handlers/account.dart index d1a206edd3..fea0164cb6 100644 --- a/app/lib/frontend/handlers/account.dart +++ b/app/lib/frontend/handlers/account.dart @@ -332,43 +332,30 @@ Future accountMyLikedPackagesPageHandler( return redirectResponse(request.requestedUri.path); } - if (requestContext.experimentalFlags.useMyLikedSearch) { - // redirect to the search page when any search or pagination is present - final searchForm = SearchForm.parse(request.requestedUri.queryParameters); - if (searchForm.isNotEmpty) { - final redirectForm = searchForm.addRequiredTagIfAbsent( - AccountTag.isLikedByMe, - ); - return redirectResponse( - redirectForm.toSearchLink(page: searchForm.currentPage), - ); - } - - final appliedSearchForm = SearchForm().toggleRequiredTag( + // redirect to the search page when any search or pagination is present + final searchForm = SearchForm.parse(request.requestedUri.queryParameters); + if (searchForm.isNotEmpty) { + final redirectForm = searchForm.addRequiredTagIfAbsent( AccountTag.isLikedByMe, ); - final searchResult = await searchAdapter.search( - appliedSearchForm, - // Do not apply rate limit here. - rateLimitKey: null, + return redirectResponse( + redirectForm.toSearchLink(page: searchForm.currentPage), ); - final html = renderMyLikedPackagesPage( - user: user, - userSessionData: requestContext.sessionData!, - likes: null, - searchForm: appliedSearchForm, - searchResult: searchResult, - ); - return htmlResponse(html); } - final likes = await likeBackend.listPackageLikes(user.userId); + final appliedSearchForm = SearchForm().toggleRequiredTag( + AccountTag.isLikedByMe, + ); + final searchResult = await searchAdapter.search( + appliedSearchForm, + // Do not apply rate limit here. + rateLimitKey: null, + ); final html = renderMyLikedPackagesPage( user: user, userSessionData: requestContext.sessionData!, - likes: likes, - searchForm: null, - searchResult: null, + searchForm: appliedSearchForm, + searchResult: searchResult, ); return htmlResponse(html); } diff --git a/app/lib/frontend/handlers/experimental.dart b/app/lib/frontend/handlers/experimental.dart index 7188d423e2..d745713e2b 100644 --- a/app/lib/frontend/handlers/experimental.dart +++ b/app/lib/frontend/handlers/experimental.dart @@ -10,10 +10,6 @@ typedef PublicFlag = ({String name, String description}); const _publicFlags = { (name: 'example', description: 'Short description'), - ( - name: 'my-liked-search', - description: 'New "My liked packages" page and search.', - ), }; final _allFlags = { @@ -92,8 +88,6 @@ class ExperimentalFlags { bool get isDarkModeDefault => isEnabled('dark-as-default'); - bool get useMyLikedSearch => true; - String encodedAsCookie() => _enabled.join(':'); @override diff --git a/app/lib/frontend/templates/admin.dart b/app/lib/frontend/templates/admin.dart index 0df3c290aa..d7e2d158ef 100644 --- a/app/lib/frontend/templates/admin.dart +++ b/app/lib/frontend/templates/admin.dart @@ -7,7 +7,7 @@ import 'package:_pub_shared/search/search_form.dart'; import 'package:pub_dev/frontend/templates/listing.dart'; import 'package:pub_dev/package/search_adapter.dart'; -import '../../account/models.dart' show LikeData, User, SessionData; +import '../../account/models.dart' show User, SessionData; import '../../audit/models.dart'; import '../../frontend/templates/views/account/activity_log_table.dart'; import '../../package/models.dart'; @@ -19,7 +19,6 @@ import '_consts.dart'; import 'detail_page.dart'; import 'layout.dart'; import 'views/account/authorized.dart'; -import 'views/pkg/liked_package_list.dart'; import 'views/pkg/package_list.dart'; import 'views/publisher/publisher_list.dart'; @@ -100,37 +99,24 @@ String renderAccountPackagesPage({ String renderMyLikedPackagesPage({ required User user, required SessionData userSessionData, - required List? likes, - required SearchForm? searchForm, - required SearchResultPage? searchResult, + required SearchForm searchForm, + required SearchResultPage searchResult, }) { - late d.Node tabContent; - if (likes != null) { - final resultCount = likes.isNotEmpty - ? d.p( - text: - 'You like ${likes.length} ${likes.length == 1 ? 'package' : 'packages'}.', - ) - : d.p(text: 'You have not liked any packages yet.'); - - tabContent = d.fragment([resultCount, likedPackageListNode(likes)]); - } else { - final infoNode = listingInfo( - searchForm: searchForm!, - totalCount: searchResult!.totalCount, - title: 'My liked packages', - messageFromBackend: searchResult.errorMessage, - ); - final listNode = packageList(searchResult); - final pagination = searchResult.hasHit - ? paginationNode(PageLinks(searchForm, searchResult.totalCount)) - : null; - tabContent = d.fragment([ - infoNode, - listNode, - if (pagination != null) pagination, - ]); - } + final infoNode = listingInfo( + searchForm: searchForm, + totalCount: searchResult.totalCount, + title: 'My liked packages', + messageFromBackend: searchResult.errorMessage, + ); + final listNode = packageList(searchResult); + final pagination = searchResult.hasHit + ? paginationNode(PageLinks(searchForm, searchResult.totalCount)) + : null; + final tabContent = d.fragment([ + infoNode, + listNode, + if (pagination != null) pagination, + ]); final content = renderDetailPage( headerNode: _accountDetailHeader(user, userSessionData), diff --git a/app/lib/frontend/templates/views/pkg/liked_package_list.dart b/app/lib/frontend/templates/views/pkg/liked_package_list.dart index 2fa7e9fc4f..c52035f17c 100644 --- a/app/lib/frontend/templates/views/pkg/liked_package_list.dart +++ b/app/lib/frontend/templates/views/pkg/liked_package_list.dart @@ -4,71 +4,10 @@ import 'package:_pub_shared/format/number_format.dart'; -import '../../../../account/models.dart'; -import '../../../../shared/urls.dart' as urls; - import '../../../dom/dom.dart' as d; import '../../../dom/material.dart' as material; import '../../../static_files.dart' show staticUrls; -/// Renders the package list of /my-liked-packages page. -d.Node likedPackageListNode(List likes) { - final thumbUpOutlinedUrl = staticUrls.getAssetUrl( - '/static/img/thumb-up-24px.svg', - ); - final thumbUpFilledUrl = staticUrls.getAssetUrl( - '/static/img/thumb-up-filled-24px.svg', - ); - return d.div( - classes: ['packages', '-compact'], - children: likes.map( - (like) => d.div( - classes: ['packages-item'], - children: [ - d.div( - classes: ['packages-header'], - children: [ - d.h3( - classes: ['packages-title'], - child: d.a( - href: urls.pkgPageUrl(like.package!), - text: like.package, - ), - ), - d.div( - classes: ['packages-icons'], - child: material.button( - unelevated: true, - customTypeClass: '-pub-like-button', - attributes: { - 'data-package': like.package!, - 'data-thumb_up_outlined': thumbUpOutlinedUrl, - 'data-thumb_up_filled': thumbUpFilledUrl, - }, - icon: d.Image( - src: thumbUpFilledUrl, - alt: 'thumb up', - width: 24, - height: 24, - ), - label: 'Unlike', - ), - ), - ], - ), - d.p( - classes: ['packages-metadata'], - children: [ - d.text(' Liked '), - d.xAgoTimestamp(like.created!, datePrefix: 'on'), - ], - ), - ], - ), - ), - ); -} - d.Node renderLikeButtonAndLabel({ required String package, required int likeCount, diff --git a/app/lib/frontend/templates/views/pkg/package_list.dart b/app/lib/frontend/templates/views/pkg/package_list.dart index 92690f6bff..52c79ae423 100644 --- a/app/lib/frontend/templates/views/pkg/package_list.dart +++ b/app/lib/frontend/templates/views/pkg/package_list.dart @@ -6,7 +6,6 @@ import 'package:_pub_shared/format/x_ago_format.dart'; import 'package:_pub_shared/search/search_form.dart'; import 'package:_pub_shared/search/tags.dart'; import 'package:clock/clock.dart'; -import 'package:pub_dev/frontend/request_context.dart'; import 'package:pub_dev/frontend/templates/views/pkg/liked_package_list.dart'; import '../../../../package/models.dart'; @@ -35,11 +34,10 @@ d.Node listOfPackagesNode({ ? null : nameMatches.first; final listingPackagesLikedByMe = - requestContext.experimentalFlags.useMyLikedSearch && - (searchForm?.parsedQuery.tagsPredicate.isRequiredTag( - AccountTag.isLikedByMe, - ) ?? - false); + searchForm?.parsedQuery.tagsPredicate.isRequiredTag( + AccountTag.isLikedByMe, + ) ?? + false; return d.div( classes: ['packages'], children: [ diff --git a/app/lib/search/search_client.dart b/app/lib/search/search_client.dart index 75ad7b1aa2..eddc452e6f 100644 --- a/app/lib/search/search_client.dart +++ b/app/lib/search/search_client.dart @@ -75,11 +75,9 @@ class SearchClient { if (hasLikedByMeTag) { skipCache = true; } - final useLikedByMe = - hasLikedByMeTag && requestContext.experimentalFlags.useMyLikedSearch; List? packages; - if (userId != null && useLikedByMe) { + if (userId != null && hasLikedByMeTag) { final likedPackages = await likeBackend.listPackageLikes(userId); packages = likedPackages.map((l) => l.package!).toList(); } @@ -93,7 +91,7 @@ class SearchClient { return await withRetryHttpClient( (client) async { var data = query.toSearchRequestData(); - if (userId != null && useLikedByMe) { + if (userId != null && hasLikedByMeTag) { final newQuery = data.query ?.replaceAll(AccountTag.isLikedByMe, ' ') .trim(); diff --git a/app/test/frontend/golden/my_liked_packages.html b/app/test/frontend/golden/my_liked_packages.html index dcba119b0c..f21a534d4e 100644 --- a/app/test/frontend/golden/my_liked_packages.html +++ b/app/test/frontend/golden/my_liked_packages.html @@ -43,11 +43,6 @@
-