From dadeb7f3e53a850bd806f3058e7729f0d9501f7e Mon Sep 17 00:00:00 2001 From: RMidhunSuresh Date: Fri, 20 Aug 2021 15:42:43 +0530 Subject: [PATCH] Do not override childOptions Signed-off-by: RMidhunSuresh --- src/domain/login/CompleteSSOLoginViewModel.js | 4 +- src/domain/login/LoginViewModel.js | 54 ++++++++++++------- src/domain/login/PasswordLoginViewModel.js | 3 +- 3 files changed, 36 insertions(+), 25 deletions(-) diff --git a/src/domain/login/CompleteSSOLoginViewModel.js b/src/domain/login/CompleteSSOLoginViewModel.js index 90d25fda..9434f84a 100644 --- a/src/domain/login/CompleteSSOLoginViewModel.js +++ b/src/domain/login/CompleteSSOLoginViewModel.js @@ -23,12 +23,10 @@ export class CompleteSSOLoginViewModel extends ViewModel { const { loginToken, sessionContainer, - ready, attemptLogin, showError, } = options; this._loginToken = loginToken; - this._ready = ready; this._sessionContainer = sessionContainer; this._attemptLogin = attemptLogin; this._showError = showError; @@ -53,7 +51,7 @@ export class CompleteSSOLoginViewModel extends ViewModel { error = `Your login-token is invalid.`; break; case LoginFailure.Connection: - error = `Can't connect to ${this._homeserver}.`; + error = `Can't connect to ${homeserver}.`; break; case LoginFailure.Unknown: error = `Something went wrong while checking your login-token.`; diff --git a/src/domain/login/LoginViewModel.js b/src/domain/login/LoginViewModel.js index 63c4d253..df779ec0 100644 --- a/src/domain/login/LoginViewModel.js +++ b/src/domain/login/LoginViewModel.js @@ -55,7 +55,14 @@ export class LoginViewModel extends ViewModel { async _createViewModels(homeserver) { if (this._loginToken) { this._hideHomeserver = true; - this._completeSSOLoginViewModel = this.track(new CompleteSSOLoginViewModel(this.childOptions({loginToken: this._loginToken}))); + this._completeSSOLoginViewModel = this.track(new CompleteSSOLoginViewModel( + this.childOptions( + { + sessionContainer: this._sessionContainer, + attemptLogin: loginMethod => this.attemptLogin(loginMethod), + showError: message => this.showError(message), + loginToken: this._loginToken + }))); this.emitChange("completeSSOLoginViewModel"); } else { @@ -80,12 +87,23 @@ export class LoginViewModel extends ViewModel { } _showPasswordLogin() { - this._passwordLoginViewModel = this.track(new PasswordLoginViewModel(this.childOptions())); + this._passwordLoginViewModel = this.track(new PasswordLoginViewModel( + this.childOptions({ + sessionContainer: this._sessionContainer, + loginOptions: this._loginOptions, + homeserver: this._homeserver, + attemptLogin: loginMethod => this.attemptLogin(loginMethod), + showError: message => this.showError(message) + }))); this.emitChange("passwordLoginViewModel"); } _showSSOLogin() { - this._startSSOLoginViewModel = this.track(new StartSSOLoginViewModel(this.childOptions())); + this._startSSOLoginViewModel = this.track( + new StartSSOLoginViewModel( + this.childOptions({ loginOptions: this._loginOptions, homeserver: this._homeserver }) + ) + ); this.emitChange("startSSOLoginViewModel"); } @@ -122,7 +140,19 @@ export class LoginViewModel extends ViewModel { if (this._loadViewModel) { this._loadViewModel = this.disposeTracked(this._loadViewModel); } - this._loadViewModel = this.track(new SessionLoadViewModel(this.childOptions())); + this._loadViewModel = this.track( + new SessionLoadViewModel( + this.childOptions({ + ready: (sessionContainer) => { + // make sure we don't delete the session in dispose when navigating away + this._sessionContainer = null; + this._ready(sessionContainer); + }, + sessionContainer: this._sessionContainer, + homeserver: this._homeserver + }) + ) + ); this._loadViewModel.start(); this.emitChange("loadViewModel"); this._loadViewModelSubscription = this.track( @@ -148,22 +178,6 @@ export class LoginViewModel extends ViewModel { this._createViewModels(newHomeserver); } - childOptions(options = {}) { - return { - ...super.childOptions(options), - ready: sessionContainer => { - // make sure we don't delete the session in dispose when navigating away - this._sessionContainer = null; - this._ready(sessionContainer); - }, - sessionContainer: this._sessionContainer, - loginOptions: this._loginOptions, - homeserver: this._homeserver, - attemptLogin: loginMethod => this.attemptLogin(loginMethod), - showError: message => this.showError(message) - } - } - dispose() { super.dispose(); if (this._sessionContainer) { diff --git a/src/domain/login/PasswordLoginViewModel.js b/src/domain/login/PasswordLoginViewModel.js index 99f54826..d08b8312 100644 --- a/src/domain/login/PasswordLoginViewModel.js +++ b/src/domain/login/PasswordLoginViewModel.js @@ -20,8 +20,7 @@ import {LoginFailure} from "../../matrix/SessionContainer.js"; export class PasswordLoginViewModel extends ViewModel { constructor(options) { super(options); - const {ready, loginOptions, sessionContainer, homeserver, attemptLogin, showError} = options; - this._ready = ready; + const {loginOptions, sessionContainer, homeserver, attemptLogin, showError} = options; this._sessionContainer = sessionContainer; this._loginOptions = loginOptions; this._attemptLogin = attemptLogin;