MCPcopy Create free account
hub / github.com/experdot/pointer / useConfigTree

Function useConfigTree

src/renderer/src/hooks/useSettings.ts:23–45  ·  view source on GitHub ↗
(tree: ConfigTree<T>)

Source from the content-addressed store, hash-verified

21
22// 通用树操作 Hook
23function useConfigTree<T extends ConfigItemBase>(tree: ConfigTree<T>): ConfigTreeResult<T> {
24 const rootItems = useMemo(() => {
25 const items = tree.items.filter((item) => !item.parentFolderId)
26 const folders = tree.folders.filter((f) => !f.parentFolderId)
27 return [...folders, ...items].sort((a, b) => (a.order ?? 0) - (b.order ?? 0))
28 }, [tree.items, tree.folders])
29
30 const getItemsInFolder = useCallback(
31 (folderId: string | undefined): (T | ConfigFolder)[] => {
32 const items = tree.items.filter((item) => item.parentFolderId === folderId)
33 const folders = tree.folders.filter((f) => f.parentFolderId === folderId)
34 return [...folders, ...items].sort((a, b) => (a.order ?? 0) - (b.order ?? 0))
35 },
36 [tree.items, tree.folders]
37 )
38
39 const expandedKeys = useMemo(
40 () => tree.folders.filter((f) => f.expanded).map((f) => f.id),
41 [tree.folders]
42 )
43
44 return { items: tree.items, folders: tree.folders, rootItems, getItemsInFolder, expandedKeys }
45}
46
47interface UseSettingsResult {
48 settings: Settings

Callers 2

useLLMConfigsFunction · 0.85
useModelConfigsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected