11import React , { ReactElement , useCallback , useEffect , useState } from 'react' ;
22import { FlatList , Pressable } from 'react-native' ;
3- import globalHook , { Store } from 'use-global-hook ' ;
4- import { GlobalState , INode , NodeActions } from './types' ;
3+ import { useNodesContext } from '../nodes-context-provider ' ;
4+ import { INode } from './types' ;
55
66export interface IProps {
77 getChildrenName : ( item : INode ) => string ;
@@ -18,24 +18,6 @@ export interface IProps {
1818 keepOpenedState ?: boolean ;
1919}
2020
21- const actions = {
22- setOpenedNode : (
23- store : Store < GlobalState , NodeActions > ,
24- { internalId, opened } : any ,
25- ) => {
26- store . setState ( {
27- nodesState : { ...store . state . nodesState , [ internalId ] : opened } ,
28- } ) ;
29- } ,
30- } ;
31-
32- const initialState : GlobalState = {
33- nodesState : { root : true } ,
34- } ;
35-
36- // @ts -ignore
37- const useGlobal = globalHook < GlobalState , NodeActions > ( initialState , actions ) ;
38-
3921const NodeView : React . FC < IProps > = React . memo (
4022 ( {
4123 renderNode,
@@ -46,13 +28,13 @@ const NodeView: React.FC<IProps> = React.memo(
4628 onNodePressed,
4729 keepOpenedState,
4830 } ) => {
49- const [ globalState , globalActions ] : [ any , any ] = useGlobal ( ) ;
31+ const { openedNodes , setOpenNode } = useNodesContext ( ) ;
5032
5133 const [ _node , setNode ] : [ INode , any ] = useState ( {
5234 ...node ,
5335 opened :
54- keepOpenedState && globalState ?. nodesState [ node . _internalId ]
55- ? ! ! globalState ?. nodesState [ node . _internalId ]
36+ keepOpenedState && openedNodes [ node . _internalId ]
37+ ? ! ! openedNodes [ node . _internalId ]
5638 : ! ! node . opened ,
5739 } ) ;
5840
@@ -65,7 +47,7 @@ const NodeView: React.FC<IProps> = React.memo(
6547
6648 const _onNodePressed = useCallback ( ( ) => {
6749 if ( keepOpenedState ) {
68- globalActions . setOpenedNode ( {
50+ setOpenNode ( {
6951 internalId : _node . _internalId ,
7052 opened : ! _node . opened ,
7153 } ) ;
@@ -79,7 +61,7 @@ const NodeView: React.FC<IProps> = React.memo(
7961 if ( onNodePressed ) {
8062 onNodePressed ( _node ) ;
8163 }
82- } , [ _node , globalActions , keepOpenedState , onNodePressed ] ) ;
64+ } , [ _node , keepOpenedState , onNodePressed , setOpenNode ] ) ;
8365
8466 const renderChildren = useCallback (
8567 ( item : INode , _level : number ) : ReactElement => (
@@ -107,8 +89,7 @@ const NodeView: React.FC<IProps> = React.memo(
10789 const nodeChildren : [ ] = _node [ nodeChildrenName ] ;
10890
10991 const isNodeOpened =
110- ( keepOpenedState && globalState ?. nodesState [ node . _internalId ] ) ||
111- _node . opened ;
92+ ( keepOpenedState && openedNodes [ node . _internalId ] ) || _node . opened ;
11293
11394 return (
11495 < >
0 commit comments