3
3
// BSD-style license that can be found in the LICENSE file.
4
4
5
5
import 'package:_pub_shared/data/page_data.dart' ;
6
+ import 'package:_pub_shared/search/search_form.dart' ;
7
+ import 'package:pub_dev/frontend/templates/listing.dart' ;
8
+ import 'package:pub_dev/package/search_adapter.dart' ;
6
9
7
10
import '../../account/models.dart' show LikeData, User, SessionData;
8
11
import '../../audit/models.dart' ;
@@ -97,16 +100,38 @@ String renderAccountPackagesPage({
97
100
String renderMyLikedPackagesPage ({
98
101
required User user,
99
102
required SessionData userSessionData,
100
- required List <LikeData > likes,
103
+ required List <LikeData >? likes,
104
+ required SearchForm ? searchForm,
105
+ required SearchResultPage ? searchResult,
101
106
}) {
102
- final resultCount = likes.isNotEmpty
103
- ? d.p (
104
- text:
105
- 'You like ${likes .length } ${likes .length == 1 ? 'package' : 'packages' }.' ,
106
- )
107
- : d.p (text: 'You have not liked any packages yet.' );
108
-
109
- final tabContent = d.fragment ([resultCount, likedPackageListNode (likes)]);
107
+ late d.Node tabContent;
108
+ if (likes != null ) {
109
+ final resultCount = likes.isNotEmpty
110
+ ? d.p (
111
+ text:
112
+ 'You like ${likes .length } ${likes .length == 1 ? 'package' : 'packages' }.' ,
113
+ )
114
+ : d.p (text: 'You have not liked any packages yet.' );
115
+
116
+ tabContent = d.fragment ([resultCount, likedPackageListNode (likes)]);
117
+ } else {
118
+ final infoNode = listingInfo (
119
+ searchForm: searchForm! ,
120
+ totalCount: searchResult! .totalCount,
121
+ title: 'My liked packages' ,
122
+ messageFromBackend: searchResult.errorMessage,
123
+ );
124
+ final listNode = packageList (searchResult);
125
+ final pagination = searchResult.hasHit
126
+ ? paginationNode (PageLinks (searchForm, searchResult.totalCount))
127
+ : null ;
128
+ tabContent = d.fragment ([
129
+ infoNode,
130
+ listNode,
131
+ if (pagination != null ) pagination,
132
+ ]);
133
+ }
134
+
110
135
final content = renderDetailPage (
111
136
headerNode: _accountDetailHeader (user, userSessionData),
112
137
tabs: [
@@ -129,6 +154,7 @@ String renderMyLikedPackagesPage({
129
154
noIndex: true ,
130
155
mainClasses: [wideHeaderDetailPageClassName],
131
156
pageData: PageData (sessionAware: true ),
157
+ searchForm: searchForm,
132
158
);
133
159
}
134
160
0 commit comments