@@ -6,6 +6,8 @@ import 'package:_pub_shared/format/x_ago_format.dart';
66import 'package:_pub_shared/search/search_form.dart' ;
77import 'package:_pub_shared/search/tags.dart' ;
88import 'package:clock/clock.dart' ;
9+ import 'package:pub_dev/frontend/request_context.dart' ;
10+ import 'package:pub_dev/frontend/templates/views/pkg/liked_package_list.dart' ;
911
1012import '../../../../package/models.dart' ;
1113import '../../../../package/screenshots/backend.dart' ;
@@ -31,6 +33,11 @@ d.Node listOfPackagesNode({
3133}) {
3234 final bestNameMatch =
3335 (nameMatches == null || nameMatches.isEmpty) ? null : nameMatches.first;
36+ final listingPackagesLikedByMe =
37+ requestContext.experimentalFlags.useMyLikedSearch &&
38+ (searchForm? .parsedQuery.tagsPredicate
39+ .isRequiredTag (AccountTag .isLikedByMe) ??
40+ false );
3441 return d.div (
3542 classes: ['packages' ],
3643 children: [
@@ -39,6 +46,7 @@ d.Node listOfPackagesNode({
3946 hit,
4047 searchForm: searchForm,
4148 isNameMatch: hit.name == bestNameMatch,
49+ isLiked: listingPackagesLikedByMe,
4250 )),
4351 imageCarousel (),
4452 ],
@@ -77,6 +85,7 @@ d.Node _packageItem(
7785 PackageView view, {
7886 required SearchForm ? searchForm,
7987 required bool isNameMatch,
88+ required bool isLiked,
8089}) {
8190 final isFlutterFavorite = view.tags.contains (PackageTags .isFlutterFavorite);
8291 final isNullSafe = view.tags.contains (PackageVersionTags .isNullSafe);
@@ -188,6 +197,9 @@ d.Node _packageItem(
188197 labeledScoresNode: labeledScoresNodeFromPackageView (view),
189198 description: view.ellipsizedDescription ?? '' ,
190199 metadataNode: metadataNode,
200+ likeIcon: isLiked
201+ ? renderLikeButton (view.name, likeCount: view.likes, isLiked: isLiked)
202+ : null ,
191203 copyIcon:
192204 copyIcon (package: view.name, version: view.releases.stable.version),
193205 tagsNode: tagsNodeFromPackageView (searchForm: searchForm, package: view),
@@ -220,6 +232,7 @@ d.Node _item({
220232 required String description,
221233 required d.Node metadataNode,
222234 required d.Node ? tagsNode,
235+ d.Node ? likeIcon,
223236 d.Node ? copyIcon,
224237 required String ? replacedBy,
225238 required List <_ApiPageUrl >? apiPages,
@@ -237,6 +250,7 @@ d.Node _item({
237250 'pub-monochrome-icon-hoverable' ,
238251 ], children: [
239252 d.a (href: url, text: name),
253+ if (likeIcon != null ) ...[d.text (' ' ), likeIcon],
240254 if (copyIcon != null ) copyIcon,
241255 d.text (' ' ),
242256 if (isNameMatch) nameMatchBadgeNode,
0 commit comments