Skip to content

Commit 8f4aead

Browse files
committed
TAL-84 - remove emsi references throughout the code
1 parent 1c5c325 commit 8f4aead

File tree

29 files changed

+132
-175
lines changed

29 files changed

+132
-175
lines changed

src/apps/onboarding/src/models/MemberInfo.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { MemberEmsiSkill, MemberMaxRating } from '~/apps/talent-search/src/lib/models'
1+
import { MemberMaxRating } from '~/apps/talent-search/src/lib/models'
22
import { MemberStats } from '~/libs/core'
3+
import { Skill } from '~/libs/shared'
34

45
import MemberAddress from './MemberAddress'
56

@@ -13,7 +14,7 @@ export default interface MemberInfo {
1314
email: string
1415
accountAge: number
1516
maxRating: MemberMaxRating
16-
emsiSkills: Array<MemberEmsiSkill>
17+
emsiSkills: Array<Skill>
1718
stats: Array<MemberStats>
1819
addresses?: MemberAddress[]
1920
country: string

src/apps/onboarding/src/pages/skills/index.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ export const PageSkillsContent: FC<{
1616
}> = props => {
1717
const navigate: any = useNavigate()
1818
const [loading, setLoading] = useState(false)
19-
const { formInput: emsiFormInput, saveSkills: saveEmsiSkills }: MemberSkillEditor = useMemberSkillEditor()
19+
const editor: MemberSkillEditor = useMemberSkillEditor()
2020

2121
async function saveSkills(): Promise<void> {
2222
setLoading(true)
2323
try {
24-
await saveEmsiSkills()
24+
await editor.saveSkills()
2525
} catch (error) {
2626
}
2727

@@ -46,7 +46,7 @@ export const PageSkillsContent: FC<{
4646
Understanding your skills will allow us to connect you to the right opportunities.
4747
</span>
4848
<div className='mt-16 full-width color-black-80'>
49-
{emsiFormInput}
49+
{editor.formInput}
5050
</div>
5151
</div>
5252
</div>

src/apps/profiles/src/member-profile/MemberProfile.context.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { createContext, FC, ReactNode, useContext, useMemo } from 'react'
22

3-
import { UserEMSISkill } from '~/libs/core'
3+
import { Skill } from '~/libs/shared'
44

55
export interface MemberProfileContextValue {
66
isTalentSearch?: boolean
77
skillsRenderer?: (
8-
skills: Pick<UserEMSISkill, 'name'|'skillId'|'skillSources'>[]
8+
skills: Pick<Skill, 'name'|'id'|'skillSources'>[]
99
) => ReactNode
1010
}
1111

src/apps/profiles/src/member-profile/skills/MemberSkillsInfo.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Dispatch, FC, SetStateAction, useEffect, useMemo, useState } from 'reac
22
import { useSearchParams } from 'react-router-dom'
33
import { orderBy } from 'lodash'
44

5-
import { UserEMSISkill, UserProfile } from '~/libs/core'
5+
import { UserProfile } from '~/libs/core'
66
import { ExpandableList, HowSkillsWorkModal, isSkillVerified, Skill, SkillPill } from '~/libs/shared'
77
import { Button } from '~/libs/ui'
88

@@ -27,11 +27,11 @@ const MemberSkillsInfo: FC<MemberSkillsInfoProps> = (props: MemberSkillsInfoProp
2727

2828
const { skillsRenderer, isTalentSearch }: MemberProfileContextValue = useMemberProfileContext()
2929

30-
const memberEMSISkills: UserEMSISkill[] = useMemo(() => orderBy(
30+
const memberSkills: Skill[] = useMemo(() => orderBy(
3131
props.profile.emsiSkills ?? [],
3232
[isSkillVerified, 'name'],
3333
['desc', 'asc'],
34-
) as UserEMSISkill[], [props.profile.emsiSkills])
34+
) as Skill[], [props.profile.emsiSkills])
3535

3636
const [isEditMode, setIsEditMode]: [boolean, Dispatch<SetStateAction<boolean>>]
3737
= useState<boolean>(false)
@@ -76,7 +76,7 @@ const MemberSkillsInfo: FC<MemberSkillsInfoProps> = (props: MemberSkillsInfoProp
7676
<div className={styles.headerWrap}>
7777
<h3>Skills</h3>
7878
{
79-
canEdit && memberEMSISkills.length > 0 && (
79+
canEdit && memberSkills.length > 0 && (
8080
<EditMemberPropertyBtn
8181
onClick={handleEditSkillsClick}
8282
/>
@@ -92,11 +92,11 @@ const MemberSkillsInfo: FC<MemberSkillsInfoProps> = (props: MemberSkillsInfoProp
9292
</div>
9393

9494
<div className={styles.skillsWrap}>
95-
{skillsRenderer && memberEMSISkills.length > 0 && skillsRenderer(memberEMSISkills)}
96-
{!skillsRenderer && memberEMSISkills.length > 0 && (
95+
{skillsRenderer && memberSkills.length > 0 && skillsRenderer(memberSkills)}
96+
{!skillsRenderer && memberSkills.length > 0 && (
9797
<ExpandableList visible={10} itemLabel='skill'>
9898
{
99-
memberEMSISkills
99+
memberSkills
100100
.map(memberEMSISkill => (
101101
<SkillPill
102102
skill={memberEMSISkill as unknown as Skill}
@@ -107,7 +107,7 @@ const MemberSkillsInfo: FC<MemberSkillsInfoProps> = (props: MemberSkillsInfoProp
107107
}
108108
</ExpandableList>
109109
)}
110-
{!memberEMSISkills.length && (
110+
{!memberSkills.length && (
111111
<EmptySection
112112
title='Topcoder verifies and tracks skills as our members complete projects and challenges.'
113113
wide
@@ -119,7 +119,7 @@ const MemberSkillsInfo: FC<MemberSkillsInfoProps> = (props: MemberSkillsInfoProp
119119
</EmptySection>
120120
)}
121121
</div>
122-
{canEdit && !memberEMSISkills.length && (
122+
{canEdit && !memberSkills.length && (
123123
<AddButton
124124
label='Add skills'
125125
onClick={handleEditSkillsClick}

src/apps/profiles/src/member-profile/skills/ModifySkillsModal/ModifySkillsModal.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ const ModifySkillsModal: FC<ModifySkillsModalProps> = (props: ModifySkillsModalP
1515
const [isSaving, setIsSaving]: [boolean, Dispatch<SetStateAction<boolean>>]
1616
= useState<boolean>(false)
1717

18-
const { formInput: emsiFormInput, saveSkills: saveEmsiSkills }: MemberSkillEditor = useMemberSkillEditor()
18+
const editor: MemberSkillEditor = useMemberSkillEditor()
1919

2020
function handleModifySkillsSave(): void {
2121
setIsSaving(true)
2222

23-
saveEmsiSkills()
23+
editor.saveSkills()
2424
.then(() => {
2525
toast.success('Skills updated successfully.', { position: toast.POSITION.BOTTOM_RIGHT })
2626
props.onSave()
@@ -63,7 +63,7 @@ const ModifySkillsModal: FC<ModifySkillsModalProps> = (props: ModifySkillsModalP
6363
Understanding your skills will allow us to connect you to the right opportunities.
6464
</p>
6565
<div className={styles.skillPicker}>
66-
{emsiFormInput}
66+
{editor.formInput}
6767
</div>
6868
</div>
6969
</BaseModal>

src/apps/talent-search/src/components/popular-skills/PopularSkills.tsx

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,22 @@ import styles from './PopularSkills.module.scss'
99
// TODO: Make this configurable, or read from a service. We need to discuss
1010
// how we want to handle this.
1111
const popularSkills: Skill[] = [
12-
{ emsiId: 'KS120076FGP5WGWYMP0F', name: 'Java (Programming Language)' },
13-
{ emsiId: 'KS126QY605N7YVHFYCTW', name: 'MySQL' },
14-
{ emsiId: 'KS127296VDYS7ZFWVC46', name: 'Node.js' },
15-
{ emsiId: 'KS121F45VPV8C9W3QFYH', name: 'Cascading Style Sheets (CSS)' },
16-
{ emsiId: 'KS1200771D9CR9LB4MWW', name: 'JavaScript (Programming Language)' },
17-
{ emsiId: 'KS1261Z68KSKR1X31KS3', name: 'Machine Learning' },
18-
{ emsiId: 'KS120SX72T8B5VLXS1VN', name: 'Unit Testing' },
19-
{ emsiId: 'KS120H6772VQ0MQ5RLVD', name: 'Angular (Web Framework)' },
20-
{ emsiId: 'KS1200B62W5ZF38RJ7TD', name: '.NET Framework' },
21-
{ emsiId: 'KS125LS6N7WP4S6SFTCK', name: 'Python (Programming Language)' },
22-
{ emsiId: 'KS120GZ5YXC6YVM1NGPR', name: 'Android (Operating System)' },
23-
{ emsiId: 'ES5269FD2583B0B9875C', name: 'Figma (Design Software)' },
24-
{ emsiId: 'KS120V86MZWV9Z9LKQY3', name: 'Microsoft Azure' },
25-
{ emsiId: 'KS1206V6K46N1SDVJGBD', name: 'Adobe Illustrator' },
26-
{ emsiId: 'KSY4WFI1S164RQUBSPCC', name: 'Docker (Software)' },
27-
{ emsiId: 'KSDJCA4E89LB98JAZ7LZ', name: 'React.js' },
12+
{ id: 'f81d2a78-ff52-4c77-8cdb-8863601b87c7', name: 'Java (Programming Language)' },
13+
{ id: '1aabc882-c28d-4b56-8546-5e961b53bf5d', name: 'MySQL' },
14+
{ id: 'b3181231-af8f-4a44-aff2-97fe00c57d76', name: 'Node.js' },
15+
{ id: '4328c534-ba51-4589-a3e7-7b5ba76d2b55', name: 'Cascading Style Sheets (CSS)' },
16+
{ id: 'e3b2b1f1-6bbf-4989-b53d-d8531a10ea5d', name: 'JavaScript (Programming Language)' },
17+
{ id: '41ffc4d5-2e43-45e1-af36-ae7a23b47c21', name: 'Machine Learning' },
18+
{ id: '047203fc-8c85-4be0-be0b-0e2fe11c3a16', name: 'Unit Testing' },
19+
{ id: '8c6703bd-63dd-4f6d-9cf0-5b411e531a9f', name: 'Angular (Web Framework)' },
20+
{ id: '34ec4bf0-0b44-4d04-9f11-e3daa2c045ce', name: '.NET Framework' },
21+
{ id: 'a9bb69aa-edc2-4d5f-8141-de33a139f119', name: 'Python (Programming Language)' },
22+
{ id: '67c623db-09e4-499d-800b-24868b1eb85b', name: 'Android (Operating System)' },
23+
{ id: '36292f61-c359-42a4-89b9-95245ee494ea', name: 'Figma (Design Software)' },
24+
{ id: 'cf39f07c-0e7a-48a2-acec-21834900c437', name: 'Microsoft Azure' },
25+
{ id: 'b33f8342-8015-4244-afea-5fd089bf52a6', name: 'Adobe Illustrator' },
26+
{ id: 'f21aecd2-5c67-4783-97a4-a77c67cf4f67', name: 'Docker (Software)' },
27+
{ id: '43baf79e-3632-4b04-889a-7202cbf62a6c', name: 'React.js' },
2828
]
2929

3030
interface PopularSkillsProps {
@@ -41,7 +41,7 @@ const PopularSkills: FC<PopularSkillsProps> = props => {
4141
// Either delete the value from the list, if we're toggling one that's already in the list
4242
// Or add the new item to the list
4343
props.selectedSkills.forEach(filterSkill => {
44-
if (filterSkill.emsiId === skill.emsiId) {
44+
if (filterSkill.id === skill.id) {
4545
deleted = true
4646
} else {
4747
newFilter.push(filterSkill)
@@ -59,7 +59,7 @@ const PopularSkills: FC<PopularSkillsProps> = props => {
5959
}, [props.onChange, props.selectedSkills])
6060

6161
function isSelected(skill: Skill): boolean {
62-
return !!props.selectedSkills.find(s => s.emsiId === skill.emsiId)
62+
return !!props.selectedSkills.find(s => s.id === skill.id)
6363
}
6464

6565
return (
@@ -69,7 +69,7 @@ const PopularSkills: FC<PopularSkillsProps> = props => {
6969
<div className={styles.pills}>
7070
{popularSkills.map(skill => (
7171
<SkillPill
72-
key={skill.emsiId}
72+
key={skill.id}
7373
skill={skill}
7474
selected={isSelected(skill)}
7575
onClick={toggleSkill}

src/apps/talent-search/src/components/profile-skills-match/ProfileSkillsMatch.tsx

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
11
import { FC } from 'react'
22
import classNames from 'classnames'
33

4-
import { UserEMSISkill } from '~/libs/core'
5-
import { EmsiSkill, ExpandableList, isSkillVerified, Skill, SkillPill } from '~/libs/shared'
4+
import { ExpandableList, isSkillVerified, Skill, SkillPill } from '~/libs/shared'
65

76
import { useIsMatchingSkill } from '../../lib/utils'
87

98
import styles from './ProfileSkillsMatch.module.scss'
109

1110
interface ProfileSkillsMatchProps {
1211
matchValue: number
13-
profileSkills: Pick<UserEMSISkill, 'name'|'skillId'|'skillSources'>[]
12+
profileSkills: Pick<Skill, 'name'|'id'|'skillSources'>[]
1413
queriedSkills: Skill[]
1514
}
1615

1716
const ProfileSkillsMatch: FC<ProfileSkillsMatchProps> = props => {
1817
const isMatchingSkill = useIsMatchingSkill(props.queriedSkills)
19-
const matchedSkills = (props.profileSkills as unknown as EmsiSkill[]).filter(isMatchingSkill)
20-
const unMatchedSkills = (props.profileSkills as unknown as EmsiSkill[]).filter(s => !isMatchingSkill(s))
18+
const matchedSkills = props.profileSkills.filter(isMatchingSkill)
19+
const unMatchedSkills = props.profileSkills.filter(s => !isMatchingSkill(s))
2120
const provenMatched = matchedSkills.filter(isSkillVerified)
2221
const selfSkillmatched = matchedSkills.filter(s => !isSkillVerified(s))
23-
const missingSkills = props.queriedSkills.filter(qs => !matchedSkills.find(ms => ms.skillId === qs.emsiId))
22+
const missingSkills = props.queriedSkills.filter(qs => !matchedSkills.find(ms => ms.id === qs.id))
2423

2524
return (
2625
<div className={styles.wrap}>
@@ -41,7 +40,7 @@ const ProfileSkillsMatch: FC<ProfileSkillsMatchProps> = props => {
4140
</div>
4241
<div className={styles.skillsList}>
4342
{provenMatched.map(skill => (
44-
<SkillPill skill={skill} theme='verified' key={skill.skillId} />
43+
<SkillPill skill={skill} theme='verified' key={skill.id} />
4544
))}
4645
</div>
4746
</>
@@ -54,7 +53,7 @@ const ProfileSkillsMatch: FC<ProfileSkillsMatchProps> = props => {
5453
</div>
5554
<div className={styles.skillsList}>
5655
{selfSkillmatched.map(skill => (
57-
<SkillPill skill={skill} theme='dark' key={skill.skillId} />
56+
<SkillPill skill={skill} theme='dark' key={skill.id} />
5857
))}
5958
</div>
6059
</>
@@ -82,7 +81,7 @@ const ProfileSkillsMatch: FC<ProfileSkillsMatchProps> = props => {
8281
<div className={styles.skillsList}>
8382
<ExpandableList visible={10} itemLabel='skill'>
8483
{unMatchedSkills.map(skill => (
85-
<SkillPill skill={skill} theme='dark' key={skill.skillId} />
84+
<SkillPill skill={skill} theme='dark' key={skill.id} />
8685
))}
8786
</ExpandableList>
8887
</div>

src/apps/talent-search/src/components/search-input/SearchInput.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { FC, MouseEvent, Ref, useMemo } from 'react'
22
import classNames from 'classnames'
33

44
import { IconOutline, InputMultiselectOption } from '~/libs/ui'
5-
import { EmsiSkill, EmsiSkillSources, InputSkillSelector, Skill } from '~/libs/shared'
5+
import { InputSkillSelector, Skill, SkillSources } from '~/libs/shared'
66

77
import { SKILL_SEARCH_LIMIT } from '../../config'
88

@@ -18,16 +18,16 @@ interface SearchInputProps {
1818
}
1919

2020
const SearchInput: FC<SearchInputProps> = props => {
21-
const emsiSkills: EmsiSkill[] = useMemo(() => props.skills.map(s => ({
21+
const skills: Skill[] = useMemo(() => props.skills.map(s => ({
22+
id: s.id,
2223
name: s.name,
23-
skillId: s.emsiId,
24-
skillSources: [EmsiSkillSources.selfPicked],
24+
skillSources: [SkillSources.selfPicked],
2525
})), [props.skills])
2626

2727
function onChange(ev: any): void {
2828
const options = (ev.target.value as unknown) as InputMultiselectOption[]
2929
props.onChange(options.map(v => ({
30-
emsiId: v.value,
30+
id: v.value,
3131
name: v.label as string,
3232
})))
3333
}
@@ -41,13 +41,13 @@ const SearchInput: FC<SearchInputProps> = props => {
4141

4242
const searchIcon = useMemo(() => (
4343
<div
44-
className={classNames(styles.searchIcon, !emsiSkills.length && styles.disabled)}
44+
className={classNames(styles.searchIcon, !skills.length && styles.disabled)}
4545
onClick={handleSearchClick}
4646
onTouchStart={handleSearchClick as any}
4747
>
4848
<IconOutline.SearchIcon />
4949
</div>
50-
), [props.onSearch, emsiSkills])
50+
), [props.onSearch, skills])
5151

5252
return (
5353
<div className={styles.wrap}>
@@ -58,13 +58,13 @@ const SearchInput: FC<SearchInputProps> = props => {
5858
useWrapper={false}
5959
theme='clear'
6060
dropdownIcon={searchIcon}
61-
value={emsiSkills}
61+
value={skills}
6262
onChange={onChange}
6363
onSubmit={props.onSearch}
6464
inputRef={props.inputRef}
6565
limit={SKILL_SEARCH_LIMIT}
6666
/>
67-
{emsiSkills.length >= SKILL_SEARCH_LIMIT && (
67+
{skills.length >= SKILL_SEARCH_LIMIT && (
6868
<div className={styles.maxLimit}>
6969
{`You can only search up to ${SKILL_SEARCH_LIMIT} skills at one time`}
7070
</div>

src/apps/talent-search/src/components/talent-card/TalentCard.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ const TalentCard: FC<TalentCardProps> = props => {
129129
<div ref={restLabelRef} className={styles.unmatchedSkills}>+0 more matched skill</div>
130130
{matchedSkills.length > 0 && matchedSkills.map(skill => (
131131
<SkillPill
132-
key={skill.skillId}
132+
key={skill.id}
133133
theme='dark'
134134
skill={skill}
135135
/>

src/apps/talent-search/src/lib/models/Member.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1+
import { Skill } from '~/libs/shared'
2+
13
import { MemberDisplayName } from './MemberDisplayName'
24
import MemberAddress from './MemberAddress'
3-
import MemberEmsiSkill from './MemberEmsiSkill'
45
import MemberMaxRating from './MemberMaxRating'
56
import MemberStats from './MemberStats'
67

@@ -12,7 +13,7 @@ export default interface Member {
1213
createdAt: number;
1314
description: string;
1415
email: string;
15-
emsiSkills: Array <MemberEmsiSkill>;
16+
emsiSkills: Array <Skill>;
1617
firstName: string;
1718
handle: string;
1819
homeCountryCode: string;

0 commit comments

Comments
 (0)