From c3ef8015666f7e592d5c3daf6dba41bd390e7f0e Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Tue, 18 May 2021 15:27:31 +0200 Subject: [PATCH] offer back button when session loading fails --- src/domain/LoginViewModel.js | 4 ++-- src/domain/RootViewModel.js | 4 ++-- src/domain/SessionLoadViewModel.js | 1 + src/platform/web/ui/css/themes/element/theme.css | 4 ++++ src/platform/web/ui/login/SessionLoadView.js | 5 +++-- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/domain/LoginViewModel.js b/src/domain/LoginViewModel.js index c0bea189..1b52e1a5 100644 --- a/src/domain/LoginViewModel.js +++ b/src/domain/LoginViewModel.js @@ -46,7 +46,7 @@ export class LoginViewModel extends ViewModel { if (this._loadViewModel) { this._loadViewModel = this.disposeTracked(this._loadViewModel); } - this._loadViewModel = this.track(new SessionLoadViewModel({ + this._loadViewModel = this.track(new SessionLoadViewModel(this.childOptions({ createAndStartSessionContainer: () => { this._sessionContainer = this._createSessionContainer(); this._sessionContainer.startWithLogin(homeserver, username, password); @@ -58,7 +58,7 @@ export class LoginViewModel extends ViewModel { this._ready(sessionContainer); }, homeserver, - })); + }))); this._loadViewModel.start(); this.emitChange("loadViewModel"); this._loadViewModelSubscription = this.track(this._loadViewModel.disposableOn("change", () => { diff --git a/src/domain/RootViewModel.js b/src/domain/RootViewModel.js index 8d9a032f..fca8d779 100644 --- a/src/domain/RootViewModel.js +++ b/src/domain/RootViewModel.js @@ -124,14 +124,14 @@ export class RootViewModel extends ViewModel { _showSessionLoader(sessionId) { this._setSection(() => { - this._sessionLoadViewModel = new SessionLoadViewModel({ + this._sessionLoadViewModel = new SessionLoadViewModel(this.childOptions({ createAndStartSessionContainer: () => { const sessionContainer = this._createSessionContainer(); sessionContainer.startWithExistingSession(sessionId); return sessionContainer; }, ready: sessionContainer => this._showSession(sessionContainer) - }); + })); this._sessionLoadViewModel.start(); }); } diff --git a/src/domain/SessionLoadViewModel.js b/src/domain/SessionLoadViewModel.js index d8736077..0b785e47 100644 --- a/src/domain/SessionLoadViewModel.js +++ b/src/domain/SessionLoadViewModel.js @@ -28,6 +28,7 @@ export class SessionLoadViewModel extends ViewModel { this._deleteSessionOnCancel = deleteSessionOnCancel; this._loading = false; this._error = null; + this.backUrl = this.urlCreator.urlForSegment("session", true); } async start() { diff --git a/src/platform/web/ui/css/themes/element/theme.css b/src/platform/web/ui/css/themes/element/theme.css index 706bd90d..c6c18445 100644 --- a/src/platform/web/ui/css/themes/element/theme.css +++ b/src/platform/web/ui/css/themes/element/theme.css @@ -215,6 +215,10 @@ a.button-action { text-align: center; } +.SessionLoadView { + padding-top: 16px; +} + @media screen and (min-width: 600px) { .PreSessionScreen { box-shadow: 0px 6px 32px rgba(0, 0, 0, 0.1); diff --git a/src/platform/web/ui/login/SessionLoadView.js b/src/platform/web/ui/login/SessionLoadView.js index 30489335..6837cf21 100644 --- a/src/platform/web/ui/login/SessionLoadView.js +++ b/src/platform/web/ui/login/SessionLoadView.js @@ -22,9 +22,10 @@ export class SessionLoadView extends TemplateView { return t.div({className: "PreSessionScreen"}, [ t.div({className: "logo"}), t.div({className: "SessionLoadView"}, [ - t.h1(vm.i18n`Loading…`), t.view(new SessionLoadStatusView(vm)) - ]) + ]), + t.div({className: {"button-row": true, hidden: vm => vm.loading}}, + t.a({className: "button-action primary", href: vm.backUrl}, vm.i18n`Go back`)) ]); } }