@@ -19,6 +19,7 @@ import {
1919 INSTALL_SOURCE_FEATURED ,
2020 INSTALL_SOURCE_TOP_RATED ,
2121 INSTALL_SOURCE_TRENDING ,
22+ SEARCH_SORT_RANDOM ,
2223 SEARCH_SORT_TRENDING ,
2324 SEARCH_SORT_TOP_RATED ,
2425} from 'core/constants' ;
@@ -45,7 +46,7 @@ export class LandingPageBase extends React.Component {
4546 context : PropTypes . string . isRequired ,
4647 dispatch : PropTypes . func . isRequired ,
4748 errorHandler : PropTypes . object . isRequired ,
48- featuredAddons : PropTypes . array . isRequired ,
49+ recommendedAddons : PropTypes . array . isRequired ,
4950 highlyRatedAddons : PropTypes . array . isRequired ,
5051 loading : PropTypes . bool . isRequired ,
5152 trendingAddons : PropTypes . array . isRequired ,
@@ -125,28 +126,38 @@ export class LandingPageBase extends React.Component {
125126 }
126127
127128 contentForType = ( visibleAddonType ) => {
128- const { i18n } = this . props ;
129+ const { _config , i18n } = this . props ;
129130 const addonType = apiAddonType ( visibleAddonType ) ;
130- const themeFilter = getAddonTypeFilter ( ADDON_TYPE_THEME , {
131- _config : this . props . _config ,
132- } ) ;
131+ const themeFilter = getAddonTypeFilter ( ADDON_TYPE_THEME , { _config } ) ;
132+ const enableFeatureRecommendedBadges = _config . get (
133+ 'enableFeatureRecommendedBadges' ,
134+ ) ;
133135
134136 const contentForTypes = {
135137 [ ADDON_TYPE_EXTENSION ] : {
136- featuredHeader : i18n . gettext ( 'Featured extensions' ) ,
137- featuredFooterLink : {
138+ recommendedHeader : enableFeatureRecommendedBadges
139+ ? i18n . gettext ( 'Recommended extensions' )
140+ : i18n . gettext ( 'Featured extensions' ) ,
141+ recommendedFooterLink : {
138142 pathname : '/search/' ,
139143 query : {
140144 addonType : ADDON_TYPE_EXTENSION ,
141- featured : true ,
145+ featured : enableFeatureRecommendedBadges ? undefined : true ,
146+ recommended : enableFeatureRecommendedBadges ? true : undefined ,
147+ sort : enableFeatureRecommendedBadges
148+ ? SEARCH_SORT_RANDOM
149+ : undefined ,
142150 } ,
143151 } ,
144- featuredFooterText : i18n . gettext ( 'See more featured extensions' ) ,
152+ recommendedFooterText : enableFeatureRecommendedBadges
153+ ? i18n . gettext ( 'See more recommended extensions' )
154+ : i18n . gettext ( 'See more featured extensions' ) ,
145155 trendingHeader : i18n . gettext ( 'Trending extensions' ) ,
146156 trendingFooterLink : {
147157 pathname : '/search/' ,
148158 query : {
149159 addonType : ADDON_TYPE_EXTENSION ,
160+ recommended : enableFeatureRecommendedBadges ? true : undefined ,
150161 sort : SEARCH_SORT_TRENDING ,
151162 } ,
152163 } ,
@@ -156,21 +167,30 @@ export class LandingPageBase extends React.Component {
156167 pathname : '/search/' ,
157168 query : {
158169 addonType : ADDON_TYPE_EXTENSION ,
170+ recommended : enableFeatureRecommendedBadges ? true : undefined ,
159171 sort : SEARCH_SORT_TOP_RATED ,
160172 } ,
161173 } ,
162174 highlyRatedFooterText : i18n . gettext ( 'See more top rated extensions' ) ,
163175 } ,
164176 [ ADDON_TYPE_THEME ] : {
165- featuredHeader : i18n . gettext ( 'Featured themes' ) ,
166- featuredFooterLink : {
177+ recommendedHeader : enableFeatureRecommendedBadges
178+ ? i18n . gettext ( 'Recommended themes' )
179+ : i18n . gettext ( 'Featured themes' ) ,
180+ recommendedFooterLink : {
167181 pathname : '/search/' ,
168182 query : {
169183 addonType : themeFilter ,
170- featured : true ,
184+ featured : enableFeatureRecommendedBadges ? undefined : true ,
185+ recommended : enableFeatureRecommendedBadges ? true : undefined ,
186+ sort : enableFeatureRecommendedBadges
187+ ? SEARCH_SORT_RANDOM
188+ : undefined ,
171189 } ,
172190 } ,
173- featuredFooterText : i18n . gettext ( 'See more featured themes' ) ,
191+ recommendedFooterText : enableFeatureRecommendedBadges
192+ ? i18n . gettext ( 'See more recommended themes' )
193+ : i18n . gettext ( 'See more featured themes' ) ,
174194 trendingHeader : i18n . gettext ( 'Trending themes' ) ,
175195 trendingFooterLink : {
176196 pathname : '/search/' ,
@@ -219,7 +239,7 @@ export class LandingPageBase extends React.Component {
219239 render ( ) {
220240 const {
221241 errorHandler,
222- featuredAddons ,
242+ recommendedAddons ,
223243 highlyRatedAddons,
224244 i18n,
225245 loading,
@@ -278,14 +298,14 @@ export class LandingPageBase extends React.Component {
278298 </ Button >
279299
280300 { this . renderIfNotEmpty (
281- featuredAddons ,
301+ recommendedAddons ,
282302 < LandingAddonsCard
283303 addonInstallSource = { INSTALL_SOURCE_FEATURED }
284- addons = { featuredAddons }
285- className = "FeaturedAddons "
286- footerText = { html . featuredFooterText }
287- footerLink = { html . featuredFooterLink }
288- header = { html . featuredHeader }
304+ addons = { recommendedAddons }
305+ className = "RecommendedAddons "
306+ footerText = { html . recommendedFooterText }
307+ footerLink = { html . recommendedFooterLink }
308+ header = { html . recommendedHeader }
289309 isTheme = { isAddonTheme }
290310 loading = { loading }
291311 /> ,
@@ -327,7 +347,7 @@ export function mapStateToProps(state) {
327347 return {
328348 addonTypeOfResults : landing . addonType ,
329349 context : viewContext . context ,
330- featuredAddons : landing . featured . results ,
350+ recommendedAddons : landing . recommended . results ,
331351 highlyRatedAddons : landing . highlyRated . results ,
332352 loading : landing . loading ,
333353 trendingAddons : landing . trending . results ,
0 commit comments