@@ -58,7 +58,7 @@ export function useInfiniteTreeNodes(props: TreeNodeContainerProps): {
5858 // trigger fetch children via datasource.setFilter
5959 const fetchChildren = useCallback (
6060 ( item ?: ItemType ) => {
61- return new Promise < TreeNodeItem [ ] > ( resolve => {
61+ return new Promise < TreeNodeItem [ ] > ( ( resolve , reject ) => {
6262 if ( isInfiniteTreeNodesEnabled && fetchingItem . current === undefined ) {
6363 resolvePromise . current = resolve ;
6464 if ( Array . isArray ( item ) ) {
@@ -67,6 +67,12 @@ export function useInfiniteTreeNodes(props: TreeNodeContainerProps): {
6767 fetchingItem . current = item ;
6868 }
6969 datasource . setFilter ( filterContent ( item ) ) ;
70+ } else {
71+ reject (
72+ new Error ( "Infinite Tree Nodes is not enabled or already fetching children" , {
73+ cause : { code : 1 }
74+ } )
75+ ) ;
7076 }
7177 } ) ;
7278 } ,
@@ -175,23 +181,29 @@ export function useLocalizedTreeNode(
175181 useEffect ( ( ) => {
176182 if ( isInfiniteTreeNodesEnabled ) {
177183 if ( Array . isArray ( items ) ) {
178- fetchChildren ( items ) . then ( childItems => {
179- const newLocalizedItems = items . map ( localItem => {
180- const currentChildItems = childItems . filter ( childItem => childItem . parentId === localItem . id ) ;
181- if ( currentChildItems . length > 0 ) {
182- return {
183- ...localItem ,
184- children : currentChildItems
185- } ;
186- } else {
187- return {
188- ...localItem ,
189- isUserDefinedLeafNode : true
190- } ;
191- }
184+ fetchChildren ( items )
185+ . then ( childItems => {
186+ const newLocalizedItems = items . map ( localItem => {
187+ const currentChildItems = childItems . filter (
188+ childItem => childItem . parentId === localItem . id
189+ ) ;
190+ if ( currentChildItems . length > 0 ) {
191+ return {
192+ ...localItem ,
193+ children : currentChildItems
194+ } ;
195+ } else {
196+ return {
197+ ...localItem ,
198+ isUserDefinedLeafNode : true
199+ } ;
200+ }
201+ } ) ;
202+ setLocalizedItems ( newLocalizedItems ) ;
203+ } )
204+ . catch ( ( ) => {
205+ // TODO: handle error state
192206 } ) ;
193- setLocalizedItems ( newLocalizedItems ) ;
194- } ) ;
195207 }
196208 }
197209 } , [ items , isInfiniteTreeNodesEnabled ] ) ;
0 commit comments