Do not override childOptions

Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
This commit is contained in:
RMidhunSuresh 2021-08-20 15:42:43 +05:30
parent bdc860eb79
commit dadeb7f3e5
3 changed files with 36 additions and 25 deletions

View file

@ -23,12 +23,10 @@ export class CompleteSSOLoginViewModel extends ViewModel {
const { const {
loginToken, loginToken,
sessionContainer, sessionContainer,
ready,
attemptLogin, attemptLogin,
showError, showError,
} = options; } = options;
this._loginToken = loginToken; this._loginToken = loginToken;
this._ready = ready;
this._sessionContainer = sessionContainer; this._sessionContainer = sessionContainer;
this._attemptLogin = attemptLogin; this._attemptLogin = attemptLogin;
this._showError = showError; this._showError = showError;
@ -53,7 +51,7 @@ export class CompleteSSOLoginViewModel extends ViewModel {
error = `Your login-token is invalid.`; error = `Your login-token is invalid.`;
break; break;
case LoginFailure.Connection: case LoginFailure.Connection:
error = `Can't connect to ${this._homeserver}.`; error = `Can't connect to ${homeserver}.`;
break; break;
case LoginFailure.Unknown: case LoginFailure.Unknown:
error = `Something went wrong while checking your login-token.`; error = `Something went wrong while checking your login-token.`;

View file

@ -55,7 +55,14 @@ export class LoginViewModel extends ViewModel {
async _createViewModels(homeserver) { async _createViewModels(homeserver) {
if (this._loginToken) { if (this._loginToken) {
this._hideHomeserver = true; 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"); this.emitChange("completeSSOLoginViewModel");
} }
else { else {
@ -80,12 +87,23 @@ export class LoginViewModel extends ViewModel {
} }
_showPasswordLogin() { _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"); this.emitChange("passwordLoginViewModel");
} }
_showSSOLogin() { _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"); this.emitChange("startSSOLoginViewModel");
} }
@ -122,7 +140,19 @@ export class LoginViewModel extends ViewModel {
if (this._loadViewModel) { if (this._loadViewModel) {
this._loadViewModel = this.disposeTracked(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._loadViewModel.start();
this.emitChange("loadViewModel"); this.emitChange("loadViewModel");
this._loadViewModelSubscription = this.track( this._loadViewModelSubscription = this.track(
@ -148,22 +178,6 @@ export class LoginViewModel extends ViewModel {
this._createViewModels(newHomeserver); 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() { dispose() {
super.dispose(); super.dispose();
if (this._sessionContainer) { if (this._sessionContainer) {

View file

@ -20,8 +20,7 @@ import {LoginFailure} from "../../matrix/SessionContainer.js";
export class PasswordLoginViewModel extends ViewModel { export class PasswordLoginViewModel extends ViewModel {
constructor(options) { constructor(options) {
super(options); super(options);
const {ready, loginOptions, sessionContainer, homeserver, attemptLogin, showError} = options; const {loginOptions, sessionContainer, homeserver, attemptLogin, showError} = options;
this._ready = ready;
this._sessionContainer = sessionContainer; this._sessionContainer = sessionContainer;
this._loginOptions = loginOptions; this._loginOptions = loginOptions;
this._attemptLogin = attemptLogin; this._attemptLogin = attemptLogin;