forked from Shinonome/dots-hyprland
50 lines
1.4 KiB
QML
50 lines
1.4 KiB
QML
pragma Singleton
|
|
pragma ComponentBehavior: Bound
|
|
|
|
import QtQuick
|
|
import Quickshell
|
|
import Quickshell.Services.Polkit
|
|
|
|
Singleton {
|
|
id: root
|
|
property alias agent: polkitAgent
|
|
property alias active: polkitAgent.isActive
|
|
property alias flow: polkitAgent.flow
|
|
property bool interactionAvailable: false
|
|
property string cleanMessage: {
|
|
if (!root.flow) return "";
|
|
return root.flow.message.endsWith(".")
|
|
? root.flow.message.slice(0, -1)
|
|
: root.flow.message
|
|
}
|
|
property string cleanPrompt: {
|
|
const inputPrompt = PolkitService.flow?.inputPrompt.trim() ?? "";
|
|
const cleanedInputPrompt = inputPrompt.endsWith(":") ? inputPrompt.slice(0, -1) : inputPrompt;
|
|
const usePasswordChars = !PolkitService.flow?.responseVisible ?? true
|
|
return cleanedInputPrompt || (usePasswordChars ? Translation.tr("Password") : Translation.tr("Input"))
|
|
}
|
|
|
|
function cancel() {
|
|
root.flow.cancelAuthenticationRequest()
|
|
}
|
|
|
|
function submit(string) {
|
|
root.flow.submit(string)
|
|
root.interactionAvailable = false
|
|
}
|
|
|
|
Connections {
|
|
target: root.flow
|
|
function onAuthenticationFailed() {
|
|
root.interactionAvailable = true;
|
|
}
|
|
}
|
|
|
|
PolkitAgent {
|
|
id: polkitAgent
|
|
onAuthenticationRequestStarted: {
|
|
root.interactionAvailable = true;
|
|
}
|
|
}
|
|
}
|