76882b59ef
I'm tired of page.js lack of documentation around finer quirks, and being forced to read its crap code. Refactored into classes, removed unused cruft.
53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
const router = require('../router.js');
|
|
const api = require('../api.js');
|
|
const events = require('../events.js');
|
|
const topNavController = require('../controllers/top_nav_controller.js');
|
|
const HomeView = require('../views/home_view.js');
|
|
const NotFoundView = require('../views/not_found_view.js');
|
|
|
|
class HomeController {
|
|
constructor() {
|
|
this._homeView = new HomeView();
|
|
this._notFoundView = new NotFoundView();
|
|
}
|
|
|
|
registerRoutes() {
|
|
router.enter(
|
|
'/',
|
|
(ctx, next) => { this._indexRoute(); });
|
|
router.enter(
|
|
'*',
|
|
(ctx, next) => { this._notFoundRoute(ctx); });
|
|
}
|
|
|
|
_indexRoute() {
|
|
topNavController.activate('home');
|
|
|
|
api.get('/info')
|
|
.then(response => {
|
|
this._homeView.render({
|
|
canListPosts: api.hasPrivilege('posts:list'),
|
|
diskUsage: response.diskUsage,
|
|
postCount: response.postCount,
|
|
featuredPost: response.featuredPost,
|
|
featuringUser: response.featuringUser,
|
|
featuringTime: response.featuringTime,
|
|
});
|
|
},
|
|
response => {
|
|
this._homeView.render({
|
|
canListPosts: api.hasPrivilege('posts:list'),
|
|
});
|
|
events.notify(events.Error, response.description);
|
|
});
|
|
}
|
|
|
|
_notFoundRoute(ctx) {
|
|
topNavController.activate('');
|
|
this._notFoundView.render({path: ctx.canonicalPath});
|
|
}
|
|
}
|
|
|
|
module.exports = new HomeController();
|