[gnome-shell] authPrompt: Bump the user verifier timeout when wiggling the message



commit ed1ace1d99de2956105ed52657f8a9946b451704
Author: Marco Trevisan (TreviƱo) <mail 3v1n0 net>
Date:   Mon Feb 8 19:34:09 2021 +0100

    authPrompt: Bump the user verifier timeout when wiggling the message
    
    Wiggle may make the error message to be visible for less time so provide
    the auth prompt an API to increase the timeout to be used for showing a
    message in some cases.
    
    This could be reworked when we'll have a proper asyn wiggle function so
    that we could just make the user verifier to "freeze", then await for
    the wiggle transition to complete and eventually release the verifier.
    
    Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1652>

 js/gdm/authPrompt.js | 12 ++++++++++--
 js/gdm/util.js       |  8 +++++++-
 2 files changed, 17 insertions(+), 3 deletions(-)
---
diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js
index 7b5d03ef42..d2c9a16594 100644
--- a/js/gdm/authPrompt.js
+++ b/js/gdm/authPrompt.js
@@ -432,8 +432,16 @@ var AuthPrompt = GObject.registerClass({
         }
 
         if (type === GdmUtil.MessageType.ERROR &&
-            this._userVerifier.serviceIsFingerprint(serviceName))
-            Util.wiggle(this._message);
+            this._userVerifier.serviceIsFingerprint(serviceName)) {
+            // TODO: Use Await for wiggle to be over before unfreezing the user verifier queue
+            const wiggleParameters = {
+                duration: 65,
+                wiggleCount: 3,
+            };
+            this._userVerifier.increaseCurrentMessageTimeout(
+                wiggleParameters.duration * (wiggleParameters.wiggleCount + 2));
+            Util.wiggle(this._message, wiggleParameters);
+        }
     }
 
     updateSensitivity(sensitive) {
diff --git a/js/gdm/util.js b/js/gdm/util.js
index f6a980a2ae..1666fd842d 100644
--- a/js/gdm/util.js
+++ b/js/gdm/util.js
@@ -285,6 +285,11 @@ var ShellUserVerifier = class {
         this.emit('no-more-messages');
     }
 
+    increaseCurrentMessageTimeout(interval) {
+        if (!this._messageQueueTimeoutId && interval > 0)
+            this._currentMessageExtraInterval = interval;
+    }
+
     _queueMessageTimeout() {
         if (this._messageQueue.length == 0) {
             this.finishMessageQueue();
@@ -296,10 +301,11 @@ var ShellUserVerifier = class {
 
         let message = this._messageQueue.shift();
 
+        delete this._currentMessageExtraInterval;
         this.emit('show-message', message.serviceName, message.text, message.type);
 
         this._messageQueueTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
-                                                       message.interval,
+            message.interval + (this._currentMessageExtraInterval | 0),
                                                        () => {
                                                            this._messageQueueTimeoutId = 0;
                                                            this._queueMessageTimeout();


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]