@@ -33,71 +33,12 @@ module.exports = {
3333 hasSuggestions : true , 
3434 } , 
3535
36-  create : Components . detect ( ( context ,  components )  =>  ( { 
36+  create : Components . detect ( ( context ,  components ,   util )  =>  ( { 
3737 CallExpression ( node )  { 
3838 const  isImmediateReturn  =  node . parent 
3939 &&  node . parent . type  ===  'ReturnStatement' ; 
4040
41-  if  ( isImmediateReturn )  { 
42-  return ; 
43-  } 
44- 
45-  const  defaultReactImports  =  components . getDefaultReactImports ( ) ; 
46-  const  namedReactImports  =  components . getNamedReactImports ( ) ; 
47-  const  defaultReactImportSpecifier  =  defaultReactImports 
48-  ? defaultReactImports [ 0 ] 
49-  : undefined ; 
50-  const  defaultReactImportName  =  defaultReactImportSpecifier 
51-  ? defaultReactImportSpecifier . local . name 
52-  : undefined ; 
53-  const  useStateReactImportSpecifier  =  namedReactImports 
54-  ? namedReactImports . find ( ( specifier )  =>  specifier . imported . name  ===  'useState' ) 
55-  : undefined ; 
56-  const  useStateReactImportName  =  useStateReactImportSpecifier 
57-  ? useStateReactImportSpecifier . local . name 
58-  : undefined ; 
59- 
60-  const  isPotentialReactUseStateCall  =  ( 
61-  defaultReactImportName 
62-  &&  node . callee . type  ===  'MemberExpression' 
63-  &&  node . callee . object . type  ===  'Identifier' 
64-  &&  node . callee . object . name  ===  defaultReactImportName 
65-  &&  node . callee . property . type  ===  'Identifier' 
66-  &&  node . callee . property . name  ===  'useState' 
67-  ) ; 
68- 
69-  const  isPotentialUseStateCall  =  ( 
70-  useStateReactImportName 
71-  &&  node . callee . type  ===  'Identifier' 
72-  &&  node . callee . name  ===  useStateReactImportName 
73-  ) ; 
74- 
75-  const  scope  =  isPotentialReactUseStateCall  ||  isPotentialUseStateCall 
76-  ? context . getScope ( ) 
77-  : undefined ; 
78- 
79-  const  reactResolvedDefs  =  isPotentialReactUseStateCall  &&  scope . references . find ( 
80-  ( reference )  =>  reference . identifier . name  ===  defaultReactImportName 
81-  ) . resolved . defs ; 
82-  const  useStateResolvedDefs  =  isPotentialUseStateCall  &&  scope . references . find ( 
83-  ( reference )  =>  reference . identifier . name  ===  useStateReactImportName 
84-  ) . resolved . defs ; 
85- 
86-  const  ultimateReactResolvedDef  =  reactResolvedDefs 
87-  ? reactResolvedDefs [ reactResolvedDefs . length  -  1 ] 
88-  : undefined ; 
89-  const  ultimateUseStateResolvedDef  =  useStateResolvedDefs 
90-  ? useStateResolvedDefs [ useStateResolvedDefs . length  -  1 ] 
91-  : undefined ; 
92- 
93-  const  isReactShadowed  =  ultimateReactResolvedDef  &&  ultimateReactResolvedDef . type  !==  'ImportBinding' ; 
94-  const  isUseStateShadowed  =  ultimateUseStateResolvedDef  &&  ultimateUseStateResolvedDef . type  !==  'ImportBinding' ; 
95- 
96-  const  isReactUseStateCall  =  isPotentialReactUseStateCall  &&  ! isReactShadowed ; 
97-  const  isUseStateCall  =  isPotentialUseStateCall  &&  ! isUseStateShadowed ; 
98- 
99-  // Ignore unless this is a useState() or React.useState() call. 
100-  if  ( ! isReactUseStateCall  &&  ! isUseStateCall )  { 
41+  if  ( isImmediateReturn  ||  ! util . isReactHookCall ( node ,  [ 'useState' ] ) )  { 
10142 return ; 
10243 } 
10344
@@ -151,6 +92,20 @@ module.exports = {
15192 } , 
15293 ] ; 
15394
95+  const  defaultReactImports  =  components . getDefaultReactImports ( ) ; 
96+  const  defaultReactImportSpecifier  =  defaultReactImports 
97+  ? defaultReactImports [ 0 ] 
98+  : undefined ; 
99+ 
100+  const  defaultReactImportName  =  defaultReactImportSpecifier 
101+  ? defaultReactImportSpecifier . local . name 
102+  : undefined ; 
103+ 
104+  const  namedReactImports  =  components . getNamedReactImports ( ) ; 
105+  const  useStateReactImportSpecifier  =  namedReactImports 
106+  ? namedReactImports . find ( ( specifier )  =>  specifier . imported . name  ===  'useState' ) 
107+  : undefined ; 
108+ 
154109 const  isSingleGetter  =  valueVariable  &&  variableNodes . length  ===  1 ; 
155110 const  isUseStateCalledWithSingleArgument  =  node . arguments . length  ===  1 ; 
156111 if  ( isSingleGetter  &&  isUseStateCalledWithSingleArgument )  { 
0 commit comments