aboutsummaryrefslogtreecommitdiffstats
path: root/config/quickshell/modules/common/functions/object_utils.js
diff options
context:
space:
mode:
authorJa.KooLit <85185940+JaKooLit@users.noreply.github.com>2025-06-15 17:08:35 +0000
committerGitHub <noreply@github.com>2025-06-15 17:08:35 +0000
commit88abbee9fe56f2e2489f04a017daaf3cfdc97511 (patch)
treec229832f852a3e55b41addcfc675d3ceb3df2282 /config/quickshell/modules/common/functions/object_utils.js
parent4cf0d0bd5930da76e60f6770de3ee97c10ca7024 (diff)
parentd46077fe5ac56afbd63dc1222e649f10435b05e2 (diff)
Merge pull request #737 from SherLock707/overviewV2_qs
Overview Widget v2: Migration from AGS to QuickShell
Diffstat (limited to 'config/quickshell/modules/common/functions/object_utils.js')
-rw-r--r--config/quickshell/modules/common/functions/object_utils.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/config/quickshell/modules/common/functions/object_utils.js b/config/quickshell/modules/common/functions/object_utils.js
new file mode 100644
index 00000000..96c632fd
--- /dev/null
+++ b/config/quickshell/modules/common/functions/object_utils.js
@@ -0,0 +1,45 @@
+function toPlainObject(qtObj) {
+ if (qtObj === null || typeof qtObj !== "object") return qtObj;
+
+ // Handle arrays
+ if (Array.isArray(qtObj)) {
+ return qtObj.map(toPlainObject);
+ }
+
+ const result = ({});
+ for (let key in qtObj) {
+ if (
+ typeof qtObj[key] !== "function" &&
+ !key.startsWith("objectName") &&
+ !key.startsWith("children") &&
+ !key.startsWith("object") &&
+ !key.startsWith("parent") &&
+ !key.startsWith("metaObject") &&
+ !key.startsWith("destroyed") &&
+ !key.startsWith("reloadableId")
+ ) {
+ result[key] = toPlainObject(qtObj[key]);
+ }
+ }
+ return result;
+}
+
+function applyToQtObject(qtObj, jsonObj) {
+ if (!qtObj || typeof jsonObj !== "object" || jsonObj === null) return;
+
+ for (let key in jsonObj) {
+ if (!qtObj.hasOwnProperty(key)) continue;
+
+ // Check if the property is a QtObject (not a value)
+ const value = qtObj[key];
+ const jsonValue = jsonObj[key];
+
+ // If it's an object and not an array, recurse
+ if (value && typeof value === "object" && !Array.isArray(value)) {
+ applyToQtObject(value, jsonValue);
+ } else {
+ // Otherwise, assign the value
+ qtObj[key] = jsonValue;
+ }
+ }
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage