1
1
import { Router , navigate } from "@reach/router" ;
2
2
import _ from "lodash" ;
3
- import React , { useCallback , useState , useEffect } from "react" ;
3
+ import React , { useCallback , useState , useEffect , useMemo } from "react" ;
4
4
import { useDispatch , useSelector } from "react-redux" ;
5
+ import { useData } from "hooks/useData" ;
6
+ import { getSkills } from "services/skills" ;
5
7
import { searchRoles } from "services/teams" ;
6
8
import { isCustomRole , setCurrentStage } from "utils/helpers" ;
7
9
import {
@@ -21,9 +23,42 @@ function SearchAndSubmit(props) {
21
23
22
24
const [ searchState , setSearchState ] = useState ( null ) ;
23
25
const [ isNewRole , setIsNewRole ] = useState ( false ) ;
24
-
26
+ const [ skills ] = useData ( getSkills ) ;
25
27
const { matchingRole } = useSelector ( ( state ) => state . searchedRoles ) ;
26
28
29
+ const matchedSkills = useMemo ( ( ) => {
30
+ if (
31
+ skills &&
32
+ matchingRole &&
33
+ matchingRole . listOfSkills &&
34
+ searchObject &&
35
+ searchObject . skills &&
36
+ searchObject . skills . length
37
+ ) {
38
+ return _ . map ( searchObject . skills , ( s ) =>
39
+ _ . find ( skills , ( skill ) => skill . id === s )
40
+ ) ;
41
+ } else {
42
+ return [ ] ;
43
+ }
44
+ } , [ skills , matchingRole , searchObject ] ) ;
45
+
46
+ const unMatchedSkills = useMemo ( ( ) => {
47
+ if (
48
+ skills &&
49
+ matchingRole &&
50
+ matchingRole . listOfSkills &&
51
+ matchedSkills . length
52
+ ) {
53
+ const list = _ . filter (
54
+ matchingRole . listOfSkills ,
55
+ ( l ) => ! _ . find ( matchedSkills , ( m ) => m . name === l )
56
+ ) ;
57
+ return _ . map ( list , ( s ) => _ . find ( skills , ( skill ) => skill . name === s ) ) ;
58
+ } else {
59
+ return [ ] ;
60
+ }
61
+ } , [ skills , matchingRole , matchedSkills ] ) ;
27
62
useEffect ( ( ) => {
28
63
const isFromInputPage =
29
64
searchObject . role ||
@@ -99,13 +134,17 @@ function SearchAndSubmit(props) {
99
134
path = "search"
100
135
previousSearchId = { previousSearchId }
101
136
addedRoles = { addedRoles }
137
+ matchedSkills = { matchedSkills }
138
+ unMatchedSkills = { unMatchedSkills }
102
139
searchState = { searchState }
103
140
matchingRole = { matchingRole }
104
141
isNewRole = { isNewRole }
105
142
{ ...props }
106
143
/>
107
144
< SubmitContainer
108
145
path = "result"
146
+ matchedSkills = { matchedSkills }
147
+ unMatchedSkills = { unMatchedSkills }
109
148
addedRoles = { addedRoles }
110
149
previousSearchId = { previousSearchId }
111
150
matchingRole = { matchingRole }
0 commit comments