forked from mystiq/hydrogen-web
clear everything when typing in homeserver field
as it's not relevant anymore
This commit is contained in:
parent
e944dc5cac
commit
e0d53e57ba
1 changed files with 14 additions and 7 deletions
|
@ -158,9 +158,14 @@ export class LoginViewModel extends ViewModel {
|
||||||
|
|
||||||
async setHomeserver(newHomeserver) {
|
async setHomeserver(newHomeserver) {
|
||||||
this._homeserver = newHomeserver;
|
this._homeserver = newHomeserver;
|
||||||
// abort ongoing query, if any
|
// clear everything set by queryHomeserver
|
||||||
|
this._loginOptions = null;
|
||||||
|
this._queriedHomeserver = null;
|
||||||
|
this._showError("");
|
||||||
|
this._disposeViewModels();
|
||||||
this._abortQueryOperation = this.disposeTracked(this._abortQueryOperation);
|
this._abortQueryOperation = this.disposeTracked(this._abortQueryOperation);
|
||||||
this.emitChange("isFetchingLoginOptions");
|
this.emitChange(); // multiple fields changing
|
||||||
|
// also clear the timeout if it is still running
|
||||||
this.disposeTracked(this._abortHomeserverQueryTimeout);
|
this.disposeTracked(this._abortHomeserverQueryTimeout);
|
||||||
const timeout = this.clock.createTimeout(1000);
|
const timeout = this.clock.createTimeout(1000);
|
||||||
this._abortHomeserverQueryTimeout = this.track(() => timeout.abort());
|
this._abortHomeserverQueryTimeout = this.track(() => timeout.abort());
|
||||||
|
@ -177,14 +182,16 @@ export class LoginViewModel extends ViewModel {
|
||||||
this.queryHomeserver();
|
this.queryHomeserver();
|
||||||
}
|
}
|
||||||
|
|
||||||
this._errorMessage = "";
|
|
||||||
this.emitChange("errorMessage");
|
|
||||||
// if query is called before the typing timeout hits (e.g. field lost focus), cancel the timeout so we don't query again.
|
|
||||||
async queryHomeserver() {
|
async queryHomeserver() {
|
||||||
|
// given that setHomeserver already clears everything set here,
|
||||||
|
// and that is the only way to change the homeserver,
|
||||||
|
// we don't need to reset things again here.
|
||||||
|
// However, clear things set by setHomeserver:
|
||||||
|
// if query is called before the typing timeout hits (e.g. field lost focus),
|
||||||
|
// cancel the timeout so we don't query again.
|
||||||
this._abortHomeserverQueryTimeout = this.disposeTracked(this._abortHomeserverQueryTimeout);
|
this._abortHomeserverQueryTimeout = this.disposeTracked(this._abortHomeserverQueryTimeout);
|
||||||
// cancel ongoing query operation, if any
|
// cancel ongoing query operation, if any
|
||||||
this._abortQueryOperation = this.disposeTracked(this._abortQueryOperation);
|
this._abortQueryOperation = this.disposeTracked(this._abortQueryOperation);
|
||||||
this._disposeViewModels();
|
|
||||||
try {
|
try {
|
||||||
const queryOperation = this._sessionContainer.queryLogin(this._homeserver);
|
const queryOperation = this._sessionContainer.queryLogin(this._homeserver);
|
||||||
this._abortQueryOperation = this.track(() => queryOperation.abort());
|
this._abortQueryOperation = this.track(() => queryOperation.abort());
|
||||||
|
@ -209,7 +216,7 @@ export class LoginViewModel extends ViewModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this._showError("Could not query login methods supported by the homeserver");
|
this._showError(`Could not query login methods supported by ${this.homeserver}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue