Implement state recovery, make ask before reload opt-in

This commit is contained in:
Kristóf Tóth 2018-07-20 09:24:28 +02:00
parent 362804f54d
commit bc50d52f4d
3 changed files with 16 additions and 5 deletions

View File

@ -17,6 +17,7 @@ export class AppComponent implements OnInit {
ngOnInit() {
this.titleService.setTitle(this.documentTitle);
if (config.dashboard.askReloadSite) {
window.addEventListener('beforeunload', (event) => {
const confirmationMessage = 'Refreshing this page may mess up your challenge/tutorial state. Are you sure?';
event.returnValue = confirmationMessage;
@ -24,3 +25,4 @@ export class AppComponent implements OnInit {
});
}
}
}

View File

@ -6,6 +6,8 @@ export const config = {
dashboard: {
route: 'dashboard',
triggerFirstFSMStep: 'step_1',
askReloadSite: false,
recoverAfterPageReload: true,
terminalOrConsole: 'terminal',
currentLayout: 'terminal-ide-web',
enabledLayouts: [

View File

@ -44,6 +44,7 @@ export class DashboardComponent implements OnInit, OnDestroy {
this.initCommandHandling();
this.initDeploymentNotifications();
this.triggerFirstFSMStepIfNeeded();
this.recoverIfNeeded();
}
initCommandHandling() {
@ -74,6 +75,12 @@ export class DashboardComponent implements OnInit, OnDestroy {
}
}
recoverIfNeeded() {
if (config.dashboard.recoverAfterPageReload) {
setTimeout(() => this.webSocketService.sendJSON({'key': 'recover'}));
}
}
layoutHandler(data: LayoutCommand) {
if (config.dashboard.enabledLayouts.includes(data.value)) {
this.setLayout(data.value);