Skip to content

Commit 2e2c92f

Browse files
authored
Like button in is:liked-by-me search results. (#8942)
1 parent 541bd94 commit 2e2c92f

35 files changed

+121
-79
lines changed

app/lib/account/like_backend.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class LikeBackend {
7575
tx.queueMutations(inserts: [p, newLike]);
7676
return newLike;
7777
});
78+
await cache.packageView(package).purge();
7879
await purgeAccountCache(userId: user.userId);
7980
return res;
8081
}
@@ -100,6 +101,7 @@ class LikeBackend {
100101
p.likes--;
101102
tx.queueMutations(inserts: [p], deletes: [likeKey]);
102103
});
104+
await cache.packageView(package).purge();
103105
await cache.userPackageLikes(user.userId).purge();
104106
}
105107
}

app/lib/frontend/templates/views/pkg/liked_package_list.dart

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,22 +72,20 @@ d.Node renderLikeButtonAndLabel(
7272
return d.div(
7373
classes: ['like-button-and-label'],
7474
children: [
75-
_renderLikeButton(package, isLiked),
75+
renderLikeButton(package, likeCount: likeCount, isLiked: isLiked),
7676
d.span(
7777
classes: ['like-button-and-label--count-wrapper'],
7878
child: d.span(
7979
classes: ['like-button-and-label--count'],
8080
text: _formatPackageLikes(likeCount),
81-
attributes: {
82-
'data-value': likeCount.toString(),
83-
},
8481
),
8582
),
8683
],
8784
);
8885
}
8986

90-
d.Node _renderLikeButton(String package, bool isLiked) {
87+
d.Node renderLikeButton(String package,
88+
{required int likeCount, required bool isLiked}) {
9189
return material.iconButton(
9290
classes: ['like-button-and-label--button'],
9391
isOn: isLiked,
@@ -108,6 +106,7 @@ d.Node _renderLikeButton(String package, bool isLiked) {
108106
'data-ga-click-event': 'toggle-like',
109107
'aria-pressed': isLiked ? 'true' : 'false',
110108
'data-package': package,
109+
'data-value': likeCount.toString(),
111110
},
112111
);
113112
}

app/lib/frontend/templates/views/pkg/package_list.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import 'package:_pub_shared/format/x_ago_format.dart';
66
import 'package:_pub_shared/search/search_form.dart';
77
import 'package:_pub_shared/search/tags.dart';
88
import '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

1012
import '../../../../package/models.dart';
1113
import '../../../../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,

app/test/frontend/golden/pkg_activity_log_page.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,12 +186,12 @@ <h1 class="title pub-monochrome-icon-hoverable">
186186
</div>
187187
</div>
188188
<div class="like-button-and-label">
189-
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" title="Like this package">
189+
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" data-value="0" title="Like this package">
190190
<img class="mdc-icon-button__icon" src="/static/hash-%%etag%%/img/like-inactive.svg" alt="liked status: inactive" width="18" height="18"/>
191191
<img class="mdc-icon-button__icon mdc-icon-button__icon--on" src="/static/hash-%%etag%%/img/like-active.svg" alt="liked status: active" width="18" height="18"/>
192192
</button>
193193
<span class="like-button-and-label--count-wrapper">
194-
<span class="like-button-and-label--count" data-value="0">0</span>
194+
<span class="like-button-and-label--count">0</span>
195195
</span>
196196
</div>
197197
</div>

app/test/frontend/golden/pkg_admin_page.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,12 +186,12 @@ <h1 class="title pub-monochrome-icon-hoverable">
186186
</div>
187187
</div>
188188
<div class="like-button-and-label">
189-
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" title="Like this package">
189+
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" data-value="0" title="Like this package">
190190
<img class="mdc-icon-button__icon" src="/static/hash-%%etag%%/img/like-inactive.svg" alt="liked status: inactive" width="18" height="18"/>
191191
<img class="mdc-icon-button__icon mdc-icon-button__icon--on" src="/static/hash-%%etag%%/img/like-active.svg" alt="liked status: active" width="18" height="18"/>
192192
</button>
193193
<span class="like-button-and-label--count-wrapper">
194-
<span class="like-button-and-label--count" data-value="0">0</span>
194+
<span class="like-button-and-label--count">0</span>
195195
</span>
196196
</div>
197197
</div>

app/test/frontend/golden/pkg_changelog_page.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,12 @@ <h1 class="title pub-monochrome-icon-hoverable">
161161
</div>
162162
</div>
163163
<div class="like-button-and-label">
164-
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" title="Like this package">
164+
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" data-value="0" title="Like this package">
165165
<img class="mdc-icon-button__icon" src="/static/hash-%%etag%%/img/like-inactive.svg" alt="liked status: inactive" width="18" height="18"/>
166166
<img class="mdc-icon-button__icon mdc-icon-button__icon--on" src="/static/hash-%%etag%%/img/like-active.svg" alt="liked status: active" width="18" height="18"/>
167167
</button>
168168
<span class="like-button-and-label--count-wrapper">
169-
<span class="like-button-and-label--count" data-value="0">0</span>
169+
<span class="like-button-and-label--count">0</span>
170170
</span>
171171
</div>
172172
</div>

app/test/frontend/golden/pkg_example_page.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,12 @@ <h1 class="title pub-monochrome-icon-hoverable">
161161
</div>
162162
</div>
163163
<div class="like-button-and-label">
164-
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" title="Like this package">
164+
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" data-value="0" title="Like this package">
165165
<img class="mdc-icon-button__icon" src="/static/hash-%%etag%%/img/like-inactive.svg" alt="liked status: inactive" width="18" height="18"/>
166166
<img class="mdc-icon-button__icon mdc-icon-button__icon--on" src="/static/hash-%%etag%%/img/like-active.svg" alt="liked status: active" width="18" height="18"/>
167167
</button>
168168
<span class="like-button-and-label--count-wrapper">
169-
<span class="like-button-and-label--count" data-value="0">0</span>
169+
<span class="like-button-and-label--count">0</span>
170170
</span>
171171
</div>
172172
</div>

app/test/frontend/golden/pkg_install_page.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,12 @@ <h1 class="title pub-monochrome-icon-hoverable">
161161
</div>
162162
</div>
163163
<div class="like-button-and-label">
164-
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" title="Like this package">
164+
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" data-value="0" title="Like this package">
165165
<img class="mdc-icon-button__icon" src="/static/hash-%%etag%%/img/like-inactive.svg" alt="liked status: inactive" width="18" height="18"/>
166166
<img class="mdc-icon-button__icon mdc-icon-button__icon--on" src="/static/hash-%%etag%%/img/like-active.svg" alt="liked status: active" width="18" height="18"/>
167167
</button>
168168
<span class="like-button-and-label--count-wrapper">
169-
<span class="like-button-and-label--count" data-value="0">0</span>
169+
<span class="like-button-and-label--count">0</span>
170170
</span>
171171
</div>
172172
</div>

app/test/frontend/golden/pkg_score_page.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,12 @@ <h1 class="title pub-monochrome-icon-hoverable">
161161
</div>
162162
</div>
163163
<div class="like-button-and-label">
164-
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" title="Like this package">
164+
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" data-value="0" title="Like this package">
165165
<img class="mdc-icon-button__icon" src="/static/hash-%%etag%%/img/like-inactive.svg" alt="liked status: inactive" width="18" height="18"/>
166166
<img class="mdc-icon-button__icon mdc-icon-button__icon--on" src="/static/hash-%%etag%%/img/like-active.svg" alt="liked status: active" width="18" height="18"/>
167167
</button>
168168
<span class="like-button-and-label--count-wrapper">
169-
<span class="like-button-and-label--count" data-value="0">0</span>
169+
<span class="like-button-and-label--count">0</span>
170170
</span>
171171
</div>
172172
</div>

app/test/frontend/golden/pkg_score_page_with_downloads_chart.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,12 @@ <h1 class="title pub-monochrome-icon-hoverable">
161161
</div>
162162
</div>
163163
<div class="like-button-and-label">
164-
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" title="Like this package">
164+
<button class="mdc-icon-button like-button-and-label--button" data-ga-click-event="toggle-like" aria-pressed="false" data-package="oxygen" data-value="0" title="Like this package">
165165
<img class="mdc-icon-button__icon" src="/static/hash-%%etag%%/img/like-inactive.svg" alt="liked status: inactive" width="18" height="18"/>
166166
<img class="mdc-icon-button__icon mdc-icon-button__icon--on" src="/static/hash-%%etag%%/img/like-active.svg" alt="liked status: active" width="18" height="18"/>
167167
</button>
168168
<span class="like-button-and-label--count-wrapper">
169-
<span class="like-button-and-label--count" data-value="0">0</span>
169+
<span class="like-button-and-label--count">0</span>
170170
</span>
171171
</div>
172172
</div>

0 commit comments

Comments
 (0)