aboutsummaryrefslogtreecommitdiffstats
path: root/config/quickshell/modules/common/functions/object_utils.js
blob: 96c632fd380143e95e54bf84a679bb04991498ee (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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