Fix parseModuleJson undefined call in custom command modules
CustomCommandModule.update() in Bar.qml called root.parseModuleJson(raw)
but the function was removed in 3b970068 (the indicator split). Any
custom command module emitting waybar-style JSON would have crashed on
first poll.
Hoist the helper into Util so both call sites — the bar's custom command
module and BarIndicator.extractData — share one definition.
This commit is contained in:
@@ -54,6 +54,20 @@ QtObject {
|
||||
return JSON.parse(JSON.stringify(value === undefined ? null : value))
|
||||
}
|
||||
|
||||
// Parse the last line of a custom-module / indicator process output as
|
||||
// waybar-style JSON ({text, class, tooltip, ...}). Falls back to {text: raw}
|
||||
// when the output isn't JSON, and {} for empty output.
|
||||
function parseModuleJson(raw) {
|
||||
var text = String(raw || "").trim()
|
||||
if (!text) return {}
|
||||
var lines = text.split("\n")
|
||||
try {
|
||||
return JSON.parse(lines[lines.length - 1])
|
||||
} catch (e) {
|
||||
return { text: text }
|
||||
}
|
||||
}
|
||||
|
||||
// Layout normalization shared by the bar host and the bar settings panel
|
||||
// so the two never drift. Entries are deep-cloned to decouple from the
|
||||
// input config; consumers can mutate without leaking back to shell.json.
|
||||
|
||||
@@ -18,15 +18,7 @@ WidgetButton {
|
||||
readonly property bool inactiveRevealed: !effectiveActive && !!indicatorHost && indicatorHost.revealInactiveIndicators
|
||||
|
||||
function extractData(raw) {
|
||||
var text = String(raw || "").trim()
|
||||
if (text === "") return {}
|
||||
|
||||
var lines = text.split("\n")
|
||||
try {
|
||||
return JSON.parse(lines[lines.length - 1])
|
||||
} catch (error) {
|
||||
return { text: text }
|
||||
}
|
||||
return Util.parseModuleJson(raw)
|
||||
}
|
||||
|
||||
function syncIndicatorOpacity() {
|
||||
|
||||
@@ -751,7 +751,7 @@ Item {
|
||||
}
|
||||
|
||||
function update(raw) {
|
||||
var data = root.parseModuleJson(raw)
|
||||
var data = Util.parseModuleJson(raw)
|
||||
var klass = data.class || data.alt || ""
|
||||
|
||||
outputText = data.text || String(raw || "").trim()
|
||||
|
||||
Reference in New Issue
Block a user