gdmUtil: Refactor on no-more-messages case
There are few places where we want to perform an action when no more messages are present. Create a function that covers this use case and use it. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2412>
This commit is contained in:
parent
e177669842
commit
dd97a2589b
@ -273,16 +273,13 @@ var ShellUserVerifier = class extends Signals.EventEmitter {
|
||||
this._userVerifierChoiceList.call_select_choice(serviceName, key, this._cancellable, null);
|
||||
}
|
||||
|
||||
answerQuery(serviceName, answer) {
|
||||
if (!this.hasPendingMessages) {
|
||||
async answerQuery(serviceName, answer) {
|
||||
try {
|
||||
await this._handlePendingMessages();
|
||||
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
|
||||
} else {
|
||||
const cancellable = this._cancellable;
|
||||
let signalId = this.connect('no-more-messages', () => {
|
||||
this.disconnect(signalId);
|
||||
if (!cancellable.is_cancelled())
|
||||
this._userVerifier.call_answer_query(serviceName, answer, cancellable, null);
|
||||
});
|
||||
} catch (e) {
|
||||
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
|
||||
logError(e);
|
||||
}
|
||||
}
|
||||
|
||||
@ -702,7 +699,7 @@ var ShellUserVerifier = class extends Signals.EventEmitter {
|
||||
(this._reauthOnly || this._failCounter < this.allowedFailures);
|
||||
}
|
||||
|
||||
_verificationFailed(serviceName, shouldRetry) {
|
||||
async _verificationFailed(serviceName, shouldRetry) {
|
||||
if (serviceName === FINGERPRINT_SERVICE_NAME) {
|
||||
if (this._fingerprintFailedId)
|
||||
GLib.source_remove(this._fingerprintFailedId);
|
||||
@ -716,35 +713,37 @@ var ShellUserVerifier = class extends Signals.EventEmitter {
|
||||
|
||||
const doneTrying = !shouldRetry || !this._canRetry();
|
||||
|
||||
this.emit('verification-failed', serviceName, !doneTrying);
|
||||
try {
|
||||
if (doneTrying) {
|
||||
this._disconnectSignals();
|
||||
|
||||
// eslint-disable-next-line no-lonely-if
|
||||
if (!this.hasPendingMessages) {
|
||||
await this._handlePendingMessages();
|
||||
this._cancelAndReset();
|
||||
} else {
|
||||
}
|
||||
|
||||
await this._handlePendingMessages();
|
||||
this._retry(serviceName);
|
||||
} catch (e) {
|
||||
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
|
||||
logError(e);
|
||||
}
|
||||
}
|
||||
|
||||
_handlePendingMessages() {
|
||||
if (!this.hasPendingMessage)
|
||||
return Promise.resolve();
|
||||
|
||||
const cancellable = this._cancellable;
|
||||
return new Promise((resolve, reject) => {
|
||||
let signalId = this.connect('no-more-messages', () => {
|
||||
this.disconnect(signalId);
|
||||
if (!cancellable.is_cancelled())
|
||||
this._cancelAndReset();
|
||||
if (cancellable.is_cancelled())
|
||||
reject(new GLib.Error(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED, 'Operation was cancelled'));
|
||||
else
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
this.emit('verification-failed', serviceName, !doneTrying);
|
||||
|
||||
if (!this.hasPendingMessages) {
|
||||
this._retry(serviceName);
|
||||
} else {
|
||||
const cancellable = this._cancellable;
|
||||
let signalId = this.connect('no-more-messages', () => {
|
||||
this.disconnect(signalId);
|
||||
if (!cancellable.is_cancelled())
|
||||
this._retry(serviceName);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
_onServiceUnavailable(_client, serviceName, errorMessage) {
|
||||
this._unavailableServices.add(serviceName);
|
||||
|
Loading…
Reference in New Issue
Block a user