Skip to content

Commit 0c815cd

Browse files
committed
refactor: Decouple Blog badge update using StateProvider (#8399)
1 parent 3a1a75f commit 0c815cd

4 files changed

Lines changed: 58 additions & 13 deletions

File tree

apps/portal/view/HeaderToolbar.mjs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,16 @@ class HeaderToolbar extends Base {
3636
text : 'Learn',
3737
route: '/learn'
3838
}, {
39-
text : 'News',
39+
bind : {badgeText: 'blogPostCount'},
4040
reference: 'news-header-button',
41-
route : '/news'
41+
route : '/news',
42+
text : 'News'
4243
}, {
43-
text : 'Examples',
44-
route: '/examples'
44+
route: '/examples',
45+
text : 'Examples'
4546
}, {
46-
text : 'Services',
47-
route: '/services'
47+
route: '/services',
48+
text : 'Services'
4849
}, {
4950
ntype : 'container',
5051
layout : 'hbox',

apps/portal/view/ViewportController.mjs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,6 @@ class ViewportController extends Controller {
170170
}
171171
}
172172

173-
/**
174-
* @param {Object[]} records
175-
*/
176-
onBlogPostStoreLoad(records) {
177-
this.getReference('news-header-button').badgeText = records.length + ''
178-
}
179-
180173
/**
181174
* @param {Object} params
182175
* @param {Object} value

apps/portal/view/ViewportStateProvider.mjs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ class ViewportStateProvider extends StateProvider {
1515
* @member {Object} data
1616
*/
1717
data: {
18+
/**
19+
* @member {Number|null} blogPostCount=null
20+
*/
21+
blogPostCount: null,
1822
/**
1923
* Values are: large, medium, small, xSmall, null
2024
* @member {String|null} size
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import Controller from '../../../../src/controller/Component.mjs';
2+
3+
/**
4+
* @class Portal.view.news.TabContainerController
5+
* @extends Neo.controller.Component
6+
*/
7+
class TabContainerController extends Controller {
8+
static config = {
9+
/**
10+
* @member {String} className='Portal.view.news.TabContainerController'
11+
* @protected
12+
*/
13+
className: 'Portal.view.news.TabContainerController',
14+
/**
15+
* @member {Object} routes
16+
*/
17+
routes: {
18+
'/news' : 'onBlogRoute',
19+
'/news/blog' : 'onBlogRoute',
20+
'/news/releases' : 'onReleasesRoute',
21+
'/news/releases/{*itemId}': 'onReleasesRoute'
22+
}
23+
}
24+
25+
/**
26+
* @param {Object} data
27+
*/
28+
onBlogRoute(data) {
29+
this.component.activeIndex = 0
30+
}
31+
32+
/**
33+
* @param {Object[]} records
34+
*/
35+
onBlogPostStoreLoad(records) {
36+
this.getStateProvider().setData({blogPostCount: records.length})
37+
}
38+
39+
/**
40+
* @param {Object} data
41+
*/
42+
onReleasesRoute(data) {
43+
this.component.activeIndex = 1
44+
}
45+
}
46+
47+
export default Neo.setupClass(TabContainerController);

0 commit comments

Comments
 (0)