
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.
74 lines
2.0 KiB
JavaScript
74 lines
2.0 KiB
JavaScript
'use strict';
|
|
|
|
require('./util/polyfill.js');
|
|
const misc = require('./util/misc.js');
|
|
|
|
const router = require('./router.js');
|
|
|
|
const origPushState = router.Context.prototype.pushState;
|
|
router.Context.prototype.pushState = function() {
|
|
window.scrollTo(0, 0);
|
|
origPushState.call(this);
|
|
};
|
|
|
|
router.cancel = function(ctx) {
|
|
prevContext = ctx;
|
|
ctx.pushState();
|
|
};
|
|
|
|
router.exit(
|
|
/.*/,
|
|
(ctx, next) => {
|
|
views.unlistenToMessages();
|
|
if (misc.confirmPageExit()) {
|
|
next();
|
|
} else {
|
|
router.cancel(ctx);
|
|
}
|
|
});
|
|
|
|
const mousetrap = require('mousetrap');
|
|
router.enter(
|
|
/.*/,
|
|
(ctx, next) => {
|
|
mousetrap.reset();
|
|
next();
|
|
});
|
|
|
|
let controllers = [];
|
|
controllers.push(require('./controllers/auth_controller.js'));
|
|
controllers.push(require('./controllers/posts_controller.js'));
|
|
controllers.push(require('./controllers/users_controller.js'));
|
|
controllers.push(require('./controllers/help_controller.js'));
|
|
controllers.push(require('./controllers/comments_controller.js'));
|
|
controllers.push(require('./controllers/history_controller.js'));
|
|
controllers.push(require('./controllers/tags_controller.js'));
|
|
controllers.push(require('./controllers/settings_controller.js'));
|
|
|
|
// home defines 404 routes, need to be registered as last
|
|
controllers.push(require('./controllers/home_controller.js'));
|
|
|
|
const tags = require('./tags.js');
|
|
const events = require('./events.js');
|
|
const views = require('./util/views.js');
|
|
for (let controller of controllers) {
|
|
controller.registerRoutes();
|
|
}
|
|
|
|
const api = require('./api.js');
|
|
Promise.all([tags.refreshExport(), api.loginFromCookies()])
|
|
.then(() => {
|
|
router.start();
|
|
}).catch(errorMessage => {
|
|
if (window.location.href.indexOf('login') !== -1) {
|
|
api.forget();
|
|
router.start();
|
|
} else {
|
|
router.start('/');
|
|
events.notify(
|
|
events.Error,
|
|
'An error happened while trying to log you in: ' +
|
|
errorMessage);
|
|
}
|
|
});
|