Skip to content

Commit a0c3ef7

Browse files
refactor: optimize code
1 parent 51ecdf0 commit a0c3ef7

11 files changed

+32
-34
lines changed

src/profile/__mocks__/invalidUser.mockStore.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ module.exports = {
2929
drafts: {},
3030
isLoadingProfile: false,
3131
isAuthenticatedUserProfile: true,
32-
countries: [],
32+
countriesCodesList: [],
3333
},
3434
router: {
3535
location: {

src/profile/__mocks__/savingEditedBio.mockStore.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ module.exports = {
126126
],
127127
drafts: {},
128128
isLoadingProfile: false,
129-
countries: [],
129+
countriesCodesList: [],
130130
},
131131
router: {
132132
location: {

src/profile/__mocks__/viewOtherProfile.mockStore.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ module.exports = {
8686
drafts: {},
8787
isLoadingProfile: false,
8888
learningGoal: 'advance_career',
89-
countries: [],
89+
countriesCodesList: [],
9090
},
9191
router: {
9292
location: {

src/profile/__mocks__/viewOwnProfile.mockStore.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ module.exports = {
124124
createdDate: '2019-03-04T19:31:39.896806Z'
125125
}
126126
],
127-
countries:[{code:"AX", name:"Åland Islands"},{code:"AL", name:"Albania"}],
127+
countriesCodesList:[{code:"AX"},{code:"AL"}],
128128
drafts: {},
129129
isLoadingProfile: false
130130
},

src/profile/data/actions.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ export const fetchProfileSuccess = (
2525
preferences,
2626
courseCertificates,
2727
isAuthenticatedUserProfile,
28-
countries,
28+
countriesCodesList,
2929
) => ({
3030
type: FETCH_PROFILE.SUCCESS,
3131
account,
3232
preferences,
3333
courseCertificates,
3434
isAuthenticatedUserProfile,
35-
countries,
35+
countriesCodesList,
3636
});
3737

3838
export const fetchProfileReset = () => ({

src/profile/data/reducers.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export const initialState = {
2222
drafts: {},
2323
isLoadingProfile: true,
2424
isAuthenticatedUserProfile: false,
25-
countries: [],
25+
countriesCodesList: [],
2626
};
2727

2828
const profilePage = (state = initialState, action = {}) => {
@@ -43,7 +43,7 @@ const profilePage = (state = initialState, action = {}) => {
4343
courseCertificates: action.courseCertificates,
4444
isLoadingProfile: false,
4545
isAuthenticatedUserProfile: action.isAuthenticatedUserProfile,
46-
countries: action.countries,
46+
countriesCodesList: action.countriesCodesList,
4747
};
4848
case SAVE_PROFILE.BEGIN:
4949
return {

src/profile/data/sagas.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export function* handleFetchProfile(action) {
4141
let preferences = {};
4242
let account = userAccount;
4343
let courseCertificates = null;
44-
let countries = [];
44+
let countriesCodesList = [];
4545

4646
try {
4747
yield put(fetchProfileBegin());
@@ -63,9 +63,9 @@ export function* handleFetchProfile(action) {
6363
const result = yield all(calls);
6464

6565
if (isAuthenticatedUserProfile) {
66-
[account, courseCertificates, countries, preferences] = result;
66+
[account, courseCertificates, countriesCodesList, preferences] = result;
6767
} else {
68-
[account, courseCertificates, countries] = result;
68+
[account, courseCertificates, countriesCodesList] = result;
6969
}
7070

7171
// Set initial visibility values for account
@@ -91,7 +91,7 @@ export function* handleFetchProfile(action) {
9191
preferences,
9292
courseCertificates,
9393
isAuthenticatedUserProfile,
94-
countries,
94+
countriesCodesList,
9595
));
9696

9797
yield put(fetchProfileReset());

src/profile/data/sagas.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ describe('RootSaga', () => {
9191
username: 'gonzo',
9292
other: 'data',
9393
};
94-
const countries = [{ code: 'AX', name: 'Åland Islands' }, { code: 'AL', name: 'Albania' }];
94+
const countriesCodesList = [{ code: 'AX' }, { code: 'AL' }];
9595
getAuthenticatedUser.mockReturnValue(userAccount);
9696
const selectorData = {
9797
userAccount,
@@ -100,7 +100,7 @@ describe('RootSaga', () => {
100100
const action = profileActions.fetchProfile('booyah');
101101
const gen = handleFetchProfile(action);
102102

103-
const result = [{}, [1, 2, 3], countries];
103+
const result = [{}, [1, 2, 3], countriesCodesList];
104104

105105
expect(gen.next().value).toEqual(select(userAccountSelector));
106106
expect(gen.next(selectorData).value).toEqual(put(profileActions.fetchProfileBegin()));
@@ -110,7 +110,7 @@ describe('RootSaga', () => {
110110
call(ProfileApiService.getCountryList),
111111
]));
112112
expect(gen.next(result).value)
113-
.toEqual(put(profileActions.fetchProfileSuccess(result[0], {}, result[1], false, countries)));
113+
.toEqual(put(profileActions.fetchProfileSuccess(result[0], {}, result[1], false, countriesCodesList)));
114114
expect(gen.next().value).toEqual(put(profileActions.fetchProfileReset()));
115115
expect(gen.next().value).toBeUndefined();
116116
});

src/profile/data/selectors.js

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export const isLoadingProfileSelector = state => state.profilePage.isLoadingProf
2323
export const currentlyEditingFieldSelector = state => state.profilePage.currentlyEditingField;
2424
export const accountErrorsSelector = state => state.profilePage.errors;
2525
export const isAuthenticatedUserProfileSelector = state => state.profilePage.isAuthenticatedUserProfile;
26-
export const countriesSelector = state => state.profilePage.countries;
26+
export const countriesCodesListSelector = state => state.profilePage.countriesCodesList;
2727

2828
export const editableFormModeSelector = createSelector(
2929
profileAccountSelector,
@@ -113,14 +113,13 @@ export const sortedLanguagesSelector = createSelector(
113113

114114
export const sortedCountriesSelector = createSelector(
115115
localeSelector,
116-
countriesSelector,
116+
countriesCodesListSelector,
117117
profileAccountSelector,
118-
(locale, countries, profileAccount) => {
118+
(locale, countriesCodesList, profileAccount) => {
119119
const countryList = getCountryList(locale);
120-
const countriesCodes = new Set(countries.map(({ code }) => code));
121-
const userCountryCode = profileAccount.country;
120+
const userCountry = profileAccount.country;
122121

123-
return countryList.filter(({ code }) => code === userCountryCode || countriesCodes.has(code));
122+
return countryList.filter(({ code }) => code === userCountry || countriesCodesList.find(x => x === code));
124123
},
125124
);
126125

@@ -139,12 +138,12 @@ export const countrySelector = createSelector(
139138
editableFormSelector,
140139
sortedCountriesSelector,
141140
countryMessagesSelector,
142-
countriesSelector,
143-
(editableForm, sortedCountries, countryMessages, countries) => ({
141+
countriesCodesListSelector,
142+
(editableForm, translatedCountries, countryMessages, countriesCodesList) => ({
144143
...editableForm,
145-
sortedCountries,
144+
translatedCountries,
146145
countryMessages,
147-
countries,
146+
countriesCodesList,
148147
}),
149148
);
150149

src/profile/data/services.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ export async function getCourseCertificates(username) {
152152
function extractCountryList(data) {
153153
return data?.fields
154154
.find(({ name }) => name === FIELD_LABELS.COUNTRY)
155-
?.options?.map(({ value, name }) => ({ code: value, name })) || [];
155+
?.options?.map(({ value }) => (value)) || [];
156156
}
157157

158158
export async function getCountryList() {

src/profile/forms/Country.jsx

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,9 @@ class Country extends React.Component {
4848
}
4949

5050
isDisabledCountry = (country) => {
51-
const { countries } = this.props;
52-
const countriesCode = new Set(countries.map(({ code }) => code));
51+
const { countriesCodesList } = this.props;
5352

54-
return countries.length > 0 && !countriesCode.has(country);
53+
return countriesCodesList.length > 0 && !countriesCodesList.find(code => code === country);
5554
};
5655

5756
render() {
@@ -63,14 +62,14 @@ class Country extends React.Component {
6362
saveState,
6463
error,
6564
intl,
66-
sortedCountries,
65+
translatedCountries,
6766
countryMessages,
6867
} = this.props;
6968

7069
return (
7170
<SwitchContent
7271
className="mb-5"
73-
expression={editMode}
72+
expression={'editing'}
7473
cases={{
7574
editing: (
7675
<div role="dialog" aria-labelledby={`${formId}-label`}>
@@ -92,7 +91,7 @@ class Country extends React.Component {
9291
onChange={this.handleChange}
9392
>
9493
<option value="">&nbsp;</option>
95-
{sortedCountries.map(({ code, name }) => (
94+
{translatedCountries.map(({ code, name }) => (
9695
<option key={code} value={code} disabled={this.isDisabledCountry(code)}>{name}</option>
9796
))}
9897
</select>
@@ -161,11 +160,11 @@ Country.propTypes = {
161160
editMode: PropTypes.oneOf(['editing', 'editable', 'empty', 'static']),
162161
saveState: PropTypes.string,
163162
error: PropTypes.string,
164-
sortedCountries: PropTypes.arrayOf(PropTypes.shape({
163+
translatedCountries: PropTypes.arrayOf(PropTypes.shape({
165164
code: PropTypes.string.isRequired,
166165
name: PropTypes.string.isRequired,
167166
})).isRequired,
168-
countries: PropTypes.arrayOf(PropTypes.shape({
167+
countriesCodesList: PropTypes.arrayOf(PropTypes.shape({
169168
code: PropTypes.string.isRequired,
170169
name: PropTypes.string.isRequired,
171170
})).isRequired,

0 commit comments

Comments
 (0)