@@ -13,6 +13,7 @@ import { FetchResult } from ".";
1313import CommonPage from "../../../../components/CommonPage" ;
1414import { useNotification } from "../../../../utils/useNotification" ;
1515import { i18nContext } from "../../../../utils/i18nContext" ;
16+ import Custom404 from "../../../404" ;
1617
1718type Skill = {
1819 id : string ;
@@ -144,21 +145,30 @@ const AddSkill = () => {
144145 const [ selectedSkill , setSelectedSkill ] = useState < Skill | undefined > (
145146 undefined
146147 ) ;
147- const { data, refetch } = useQuery < FetchResult > ( SKILLS_AND_APPETITE_QUERY , {
148+ const {
149+ data,
150+ error : errorSkillsApetite ,
151+ refetch,
152+ loading : loadingSkillsApetite ,
153+ } = useQuery < FetchResult > ( SKILLS_AND_APPETITE_QUERY , {
148154 variables : { email : user . email , category : category || "" } ,
149155 fetchPolicy : "network-only" ,
150156 } ) ;
151157 const [ debouncedSearchValue ] = useDebounce ( search , 500 ) ;
152- const { data : skillsData , refetch : refetchSearch } =
153- useQuery < SkillSearchResult > ( SKILL_SEARCH_QUERY , {
154- variables : {
155- category,
156- search : `%${ debouncedSearchValue } %` ,
157- email : user ?. email ,
158- didYouMeanSearch : computeDidYouMeanSearchString ( debouncedSearchValue ) ,
159- } ,
160- fetchPolicy : "network-only" ,
161- } ) ;
158+ const {
159+ data : skillsData ,
160+ refetch : refetchSearch ,
161+ loading : loadingSearchSkill ,
162+ error : errorSearchSkills ,
163+ } = useQuery < SkillSearchResult > ( SKILL_SEARCH_QUERY , {
164+ variables : {
165+ category,
166+ search : `%${ debouncedSearchValue } %` ,
167+ email : user ?. email ,
168+ didYouMeanSearch : computeDidYouMeanSearchString ( debouncedSearchValue ) ,
169+ } ,
170+ fetchPolicy : "network-only" ,
171+ } ) ;
162172 const [ addSkill , { error : mutationError } ] = useMutation ( ADD_SKILL_MUTATION , {
163173 onCompleted : ( _ ) => {
164174 useNotification (
@@ -205,58 +215,69 @@ const AddSkill = () => {
205215 } )
206216 ) ;
207217 const categoryId = data ?. Category [ 0 ] ?. [ "id" ] ;
208-
209218 return (
210- < CommonPage page = { category } faded = { modaleOpened } context = { context } >
211- < PageWithSkillList
212- context = { context }
213- category = { category }
214- add = { true }
215- faded = { modaleOpened }
216- data = { radarData }
217- color = { data ?. Category [ 0 ] . color }
218- >
219- < div >
220- < div
221- className = { `z-20 fixed inset-y-0 right-0 h-screen w-full ${
222- modaleOpened ? "" : "hidden"
223- } ` }
219+ < div >
220+ { radarData &&
221+ ! errorSkillsApetite &&
222+ ! loadingSearchSkill &&
223+ ! loadingSkillsApetite &&
224+ ! errorSearchSkills ? (
225+ < CommonPage page = { category } faded = { modaleOpened } context = { context } >
226+ < PageWithSkillList
227+ context = { context }
228+ category = { category }
229+ add = { true }
230+ faded = { modaleOpened }
231+ data = { radarData }
232+ color = { data ?. Category [ 0 ] . color }
224233 >
225- { selectedSkill ? (
226- < div className = "flex flex-row justify-center" >
227- < AddOrEditSkillModale
228- skill = { selectedSkill }
229- cancel = { ( ) => setModaleOpened ( false ) }
230- callback = { addAction }
234+ < div >
235+ < div
236+ className = { `z-20 fixed inset-y-0 right-0 h-screen w-full ${
237+ modaleOpened ? "" : "hidden"
238+ } `}
239+ >
240+ { selectedSkill ? (
241+ < div className = "flex flex-row justify-center" >
242+ < AddOrEditSkillModale
243+ skill = { selectedSkill }
244+ cancel = { ( ) => setModaleOpened ( false ) }
245+ callback = { addAction }
246+ />
247+ </ div >
248+ ) : (
249+ < > </ >
250+ ) }
251+ </ div >
252+ < div
253+ className = { `flex flex-col ${
254+ isDesktop ? "h-radar" : ""
255+ } p-2 z-10 ${ modaleOpened ? "opacity-25" : "" } `}
256+ >
257+ < SearchBar setSearch = { setSearch } />
258+ < AddSkillListSelector
259+ action = { preAddAction }
260+ skills = { skillsData ?. Skill . filter (
261+ ( skill ) =>
262+ skill . UserSkillDesires_aggregate . aggregate . count === 0
263+ ) }
264+ categoryId = { categoryId }
265+ search = { debouncedSearchValue }
266+ didYouMeanSkills = { skillsData ?. didYouMeanSearch . filter (
267+ ( skill ) =>
268+ skill . UserSkillDesires_aggregate . aggregate . count === 0
269+ ) }
231270 />
232271 </ div >
233- ) : (
234- < > </ >
235- ) }
236- </ div >
237- < div
238- className = { `flex flex-col ${ isDesktop ? "h-radar" : "" } p-2 z-10 ${
239- modaleOpened ? "opacity-25" : ""
240- } `}
241- >
242- < SearchBar setSearch = { setSearch } />
243- < AddSkillListSelector
244- action = { preAddAction }
245- skills = { skillsData ?. Skill . filter (
246- ( skill ) =>
247- skill . UserSkillDesires_aggregate . aggregate . count === 0
248- ) }
249- categoryId = { categoryId }
250- search = { debouncedSearchValue }
251- didYouMeanSkills = { skillsData ?. didYouMeanSearch . filter (
252- ( skill ) =>
253- skill . UserSkillDesires_aggregate . aggregate . count === 0
254- ) }
255- />
256- </ div >
257- </ div >
258- </ PageWithSkillList >
259- </ CommonPage >
272+ </ div >
273+ </ PageWithSkillList >
274+ </ CommonPage >
275+ ) : loadingSkillsApetite && loadingSearchSkill ? (
276+ t ( "loading.loadingText" )
277+ ) : (
278+ < Custom404 />
279+ ) }
280+ </ div >
260281 ) ;
261282} ;
262283
0 commit comments