• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

waldiez / react / 12966103330

25 Jan 2025 03:13PM UTC coverage: 90.002%. Remained the same
12966103330

push

github

lazToum
update package.json

2784 of 3068 branches covered (90.74%)

Branch coverage included in aggregate %.

15634 of 17396 relevant lines covered (89.87%)

249.18 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

54.69
/src/waldiez/containers/flow/modals/importFlowModal/steps/preview/hooks/useFlowModels.ts
1
/**
2
 * SPDX-License-Identifier: Apache-2.0
3
 * Copyright 2024 - 2025 Waldiez & contributors
4
 */
5
import { Node } from "@xyflow/react";
6

7
import { useEffect } from "react";
1✔
8

9
import { ImportFlowState } from "@waldiez/containers/flow/modals/importFlowModal/types";
10
import { ThingsToImport } from "@waldiez/types";
11

12
export const useFlowModels = (props: {
1✔
13
    flowId: string;
14
    state: ImportFlowState;
15
    onStateChange: (newState: Partial<ImportFlowState>) => void;
16
}) => {
3✔
17
    const { flowId, state, onStateChange } = props;
3✔
18
    const { selectedProps, loadedFlowData: flowData } = state;
3✔
19
    const modelNodes = flowData?.nodes.filter(node => node.type === "model");
3✔
20
    useEffect(() => {
3✔
21
        checkAllNoneIndeterminate();
1✔
22
    }, [selectedProps]);
3✔
23
    const onSelectedPropsChange = (thingsToImport: Partial<ThingsToImport>) => {
3✔
24
        onStateChange({
×
25
            selectedProps: {
×
26
                ...selectedProps,
×
27
                ...thingsToImport,
×
28
            },
×
29
        });
×
30
    };
×
31
    const checkAllNoneIndeterminate = () => {
3✔
32
        const allNoneCheckbox = document.getElementById(
1✔
33
            `import-flow-modal-models-all-none-${flowId}`,
1✔
34
        ) as HTMLInputElement;
1✔
35
        if (allNoneCheckbox) {
1✔
36
            const atLeastOneChecked = selectedProps.nodes.models.length > 0;
1✔
37
            if (atLeastOneChecked) {
1!
38
                const allChecked = selectedProps.nodes.models.length === modelNodes?.length;
×
39
                allNoneCheckbox.indeterminate = !allChecked;
×
40
                allNoneCheckbox.checked = allChecked;
×
41
            } else {
1✔
42
                allNoneCheckbox.indeterminate = false;
1✔
43
                allNoneCheckbox.checked = false;
1✔
44
            }
1✔
45
        }
1✔
46
    };
1✔
47
    const onModelsChange = (node: Node) => {
3✔
48
        onSelectedPropsChange({
×
49
            nodes: {
×
50
                models: selectedProps.nodes.models.some(model => model.id === node.id)
×
51
                    ? selectedProps.nodes.models.filter(model => model.id !== node.id)
×
52
                    : [...selectedProps.nodes.models, node],
×
53
                skills: selectedProps.nodes.skills,
×
54
                agents: selectedProps.nodes.agents,
×
55
            },
×
56
        });
×
57
    };
×
58
    const onAllNoneModelsChange = (event: React.ChangeEvent<HTMLInputElement>) => {
3✔
59
        onSelectedPropsChange({
×
60
            nodes: {
×
61
                models: event.target.checked ? modelNodes! : [],
×
62
                skills: selectedProps.nodes.skills,
×
63
                agents: selectedProps.nodes.agents,
×
64
            },
×
65
        });
×
66
    };
×
67
    return {
3✔
68
        modelNodes,
3✔
69
        onModelsChange,
3✔
70
        onAllNoneModelsChange,
3✔
71
    };
3✔
72
};
3✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc