34 lines
803 B
TypeScript
34 lines
803 B
TypeScript
|
import Page from "./page";
|
||
|
import PlayerPage from "./impl/player-page";
|
||
|
import {pageChangeCallback} from "../common/page-utils";
|
||
|
|
||
|
export default class PageHandler {
|
||
|
private pages: Page[] = [];
|
||
|
|
||
|
constructor() {
|
||
|
// Register the pages to handle
|
||
|
this.registerPage(new PlayerPage());
|
||
|
|
||
|
// Handle page changes
|
||
|
pageChangeCallback((path) => {
|
||
|
console.log(`Page changed to: ${path}`);
|
||
|
|
||
|
for (let page of this.pages) {
|
||
|
if (path.startsWith(page.route)) {
|
||
|
console.log(`Handling page: ${page.route}`);
|
||
|
page.onLoad();
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Registers a page to be handled
|
||
|
*
|
||
|
* @param page The page to register
|
||
|
*/
|
||
|
private registerPage(page: Page) {
|
||
|
console.log(`Registered page: ${page.route}`)
|
||
|
this.pages.push(page);
|
||
|
}
|
||
|
}
|