Publish Framework tray enhancements and idle fingerprint retry
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
import QtQml
|
||||
|
||||
Timer {
|
||||
id: retry
|
||||
|
||||
required property QtObject auth
|
||||
required property int fingerprintType
|
||||
property bool enabled: true
|
||||
readonly property bool fingerprintActive: (auth.authenticatorTypes & fingerprintType) !== 0
|
||||
property bool sawInfo: false
|
||||
property bool sawError: false
|
||||
|
||||
interval: 6000
|
||||
|
||||
function reset() {
|
||||
stop();
|
||||
sawInfo = false;
|
||||
sawError = false;
|
||||
}
|
||||
|
||||
onEnabledChanged: {
|
||||
if (!enabled) {
|
||||
reset();
|
||||
}
|
||||
}
|
||||
onFingerprintActiveChanged: {
|
||||
if (fingerprintActive) {
|
||||
reset();
|
||||
} else if (enabled && sawInfo && !sawError) {
|
||||
// An idle conversation ended. Consume the retry until another
|
||||
// conversation actually supplies fingerprint instructions.
|
||||
sawInfo = false;
|
||||
restart();
|
||||
}
|
||||
}
|
||||
onTriggered: {
|
||||
if (enabled && !fingerprintActive) {
|
||||
auth.startAuthenticating();
|
||||
}
|
||||
}
|
||||
|
||||
property Connections authenticationSignals: Connections {
|
||||
target: retry.auth
|
||||
function onNoninteractiveInfo(kind, source) {
|
||||
if (retry.enabled && (kind & retry.fingerprintType)) {
|
||||
retry.sawInfo = true;
|
||||
}
|
||||
}
|
||||
function onNoninteractiveError(kind, source) {
|
||||
if (kind & retry.fingerprintType) {
|
||||
// Do not automatically replenish failed scan attempts.
|
||||
retry.sawError = true;
|
||||
retry.stop();
|
||||
}
|
||||
}
|
||||
function onFailed(kind, source) {
|
||||
if (kind === 0) {
|
||||
retry.reset();
|
||||
}
|
||||
}
|
||||
function onSucceeded() {
|
||||
retry.reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user