diff options
| author | rr- <rr-@sakuya.pl> | 2016-06-14 10:31:48 +0200 |
|---|---|---|
| committer | rr- <rr-@sakuya.pl> | 2016-06-18 10:35:20 +0200 |
| commit | 54e3099c5696e0b4fc7b05fb5ecc41ab4726628b (patch) | |
| tree | 29127e1c3d3d3d9bebfccefdf148da7305e2d5b3 /client/js/controllers/page_controller.js | |
| parent | c74f06da35af3c35d565a3c96e3d048f7a1ec011 (diff) | |
client/general: refactor control flow
- Controller lifetime is bound to route lifetime
- View lifetime is bound to controller lifetime
- Control lifetime is bound to view lifetime
- Enhanced event dispatching
- Enhanced responsiveness in some places
- Views communicate user input to controllers via new event system
Diffstat (limited to 'client/js/controllers/page_controller.js')
| -rw-r--r-- | client/js/controllers/page_controller.js | 50 |
1 files changed, 19 insertions, 31 deletions
diff --git a/client/js/controllers/page_controller.js b/client/js/controllers/page_controller.js index 2047484..5228674 100644 --- a/client/js/controllers/page_controller.js +++ b/client/js/controllers/page_controller.js @@ -1,43 +1,35 @@ 'use strict'; -const events = require('../events.js'); -const settings = require('../settings.js'); +const settings = require('../models/settings.js'); const EndlessPageView = require('../views/endless_page_view.js'); const ManualPageView = require('../views/manual_page_view.js'); class PageController { - constructor() { - events.listen(events.SettingsChange, () => { - this._update(); - return true; - }); - this._update(); - } + constructor(ctx) { + const extendedContext = { + clientUrl: ctx.clientUrl, + searchQuery: ctx.searchQuery, + }; + + ctx.headerContext = Object.assign({}, extendedContext); + ctx.pageContext = Object.assign({}, extendedContext); - _update() { - if (settings.getSettings().endlessScroll) { - this._pageView = new EndlessPageView(); + if (settings.get().endlessScroll) { + this._view = new EndlessPageView(ctx); } else { - this._pageView = new ManualPageView(); + this._view = new ManualPageView(ctx); } } - run(ctx) { - this._pageView.unrender(); - - const extendedContext = { - clientUrl: ctx.clientUrl, - searchQuery: ctx.searchQuery, - }; + showSuccess(message) { + this._view.showSuccess(message); + } - ctx.headerContext = ctx.headerContext || {}; - ctx.pageContext = ctx.pageContext || {}; - Object.assign(ctx.headerContext, extendedContext); - Object.assign(ctx.pageContext, extendedContext); - this._pageView.render(ctx); + showError(message) { + this._view.showError(message); } - createHistoryCacheProxy(routerCtx, requestPage) { + static createHistoryCacheProxy(routerCtx, requestPage) { return page => { if (routerCtx.state.response) { return new Promise((resolve, reject) => { @@ -52,10 +44,6 @@ class PageController { return promise; }; } - - stop() { - this._pageView.unrender(); - } } -module.exports = new PageController(); +module.exports = PageController; |