1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-28 15:32:50 -05:00

plugins: add PluginGlobalVar

- Allow syncing vars to all widget instances, like a singleton
This commit is contained in:
bbedward
2025-10-15 16:08:24 -04:00
parent 59d123a4a1
commit 24f5e9a7e6
3 changed files with 170 additions and 0 deletions

View File

@@ -30,12 +30,14 @@ Singleton {
property var knownManifests: ({})
property var pathToPluginId: ({})
property var pluginInstances: ({})
property var globalVars: ({})
signal pluginLoaded(string pluginId)
signal pluginUnloaded(string pluginId)
signal pluginLoadFailed(string pluginId, string error)
signal pluginDataChanged(string pluginId)
signal pluginListUpdated()
signal globalVarChanged(string pluginId, string varName)
Timer {
id: resyncDebounce
@@ -589,4 +591,22 @@ Singleton {
}
return plugins
}
function getGlobalVar(pluginId, varName, defaultValue) {
if (globalVars[pluginId] && varName in globalVars[pluginId]) {
return globalVars[pluginId][varName]
}
return defaultValue
}
function setGlobalVar(pluginId, varName, value) {
const newGlobals = Object.assign({}, globalVars)
if (!newGlobals[pluginId]) {
newGlobals[pluginId] = {}
}
newGlobals[pluginId] = Object.assign({}, newGlobals[pluginId])
newGlobals[pluginId][varName] = value
globalVars = newGlobals
globalVarChanged(pluginId, varName)
}
}