Skip to content

Commit c75fa2d

Browse files
final fix
1 parent 0e6136c commit c75fa2d

File tree

14 files changed

+67
-37
lines changed

14 files changed

+67
-37
lines changed

src/shared/components/MemberSearch/ListContainer/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ ListContainer.propTypes = {
4646

4747
ListContainer.defaultProps = {
4848
headerHighlightedText: '',
49-
numListItems: [],
49+
numListItems: 0,
5050
};
5151

5252
export default ListContainer;

src/shared/components/MemberSearch/MemberItem/UserInfo/index.jsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,17 @@ UserInfo.propTypes = {
5151
photoURL: PropTypes.string,
5252
handle: PropTypes.string,
5353
competitionCountryCode: PropTypes.string,
54-
wins: PropTypes.oneOf([PropTypes.number, null, undefined]),
55-
createdAt: PropTypes.string,
54+
wins: PropTypes.number,
55+
createdAt: PropTypes.number,
5656
description: PropTypes.string,
5757
}).isRequired,
58-
userPlace: PropTypes.number.isRequired,
59-
withBio: PropTypes.bool.isRequired,
58+
userPlace: PropTypes.number,
59+
withBio: PropTypes.bool,
60+
};
61+
62+
UserInfo.defaultProps = {
63+
userPlace: null,
64+
withBio: false,
6065
};
6166

6267
export default UserInfo;

src/shared/components/MemberSearch/MemberItem/UserStats/index.jsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,16 @@ const UserStats = ({ member, userPlace, searchTermTag }) => {
3939

4040
UserStats.propTypes = {
4141
member: PropTypes.shape({
42-
skills: PropTypes.arrayOf({}),
42+
skills: PropTypes.arrayOf(PropTypes.shape({})),
4343
tracks: PropTypes.arrayOf(PropTypes.string),
44-
stats: PropTypes.shape({}),
44+
stats: PropTypes.arrayOf(PropTypes.shape({})),
4545
}).isRequired,
46-
userPlace: PropTypes.number.isRequired,
46+
userPlace: PropTypes.number,
4747
searchTermTag: PropTypes.shape({}),
4848
};
4949

5050
UserStats.defaultProps = {
51+
userPlace: null,
5152
searchTermTag: null,
5253
};
5354

src/shared/components/MemberSearch/MemberList/index.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
3+
import shortId from 'shortid';
34
import MemberItem from '../MemberItem';
45

56
import './style.scss';
67

78
const MemberList = (({ members }) => (
89
<div styleName="member-list">
910
{
10-
members.map(member => <MemberItem key={member} member={member} />)
11+
members.map(member => <MemberItem key={shortId()} member={member} />)
1112
}
1213
</div>
1314
));

src/shared/components/MemberSearch/MemberSearchView/index.jsx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -212,15 +212,22 @@ MemberSearchView.propTypes = {
212212
loadingMore: PropTypes.bool.isRequired,
213213
error: PropTypes.bool.isRequired,
214214

215-
usernameMatches: PropTypes.arrayOf({}).isRequired,
215+
usernameMatches: PropTypes.arrayOf(PropTypes.shape({
216+
handle: PropTypes.string,
217+
})).isRequired,
216218
moreMatchesAvailable: PropTypes.bool.isRequired,
217219
totalCount: PropTypes.number.isRequired,
218-
topMembers: PropTypes.shape([]).isRequired,
220+
topMembers: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
219221

220-
previousSearchTerm: PropTypes.string.isRequired,
221-
searchTermTag: PropTypes.shape({}).isRequired,
222+
previousSearchTerm: PropTypes.string,
223+
searchTermTag: PropTypes.shape({}),
222224

223225
loadMemberSearch: PropTypes.func.isRequired,
224226
};
225227

228+
MemberSearchView.defaultProps = {
229+
previousSearchTerm: null,
230+
searchTermTag: null,
231+
};
232+
226233
export default MemberSearchView;
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
3+
import shortId from 'shortid';
34
import SubtrackItem from './SubtrackItem';
45

56
import './style.scss';
67

78
const SubtrackList = ({ subtracks }) => (
89
<div styleName="subtracks-list">
9-
{subtracks.map(s => <SubtrackItem key={s} subtrack={s} />)}
10+
{subtracks.map(s => <SubtrackItem key={shortId()} subtrack={s} />)}
1011
</div>
1112
);
1213

1314
SubtrackList.propTypes = {
14-
subtracks: PropTypes.shape([]).isRequired,
15+
subtracks: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
1516
};
1617

1718
export default SubtrackList;

src/shared/components/MemberSearch/TagList/TagItem/index.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ const TagItem = ({ tag }) => {
2020

2121
TagItem.propTypes = {
2222
tag: PropTypes.shape({
23-
searchedTag: PropTypes.string,
24-
specialTag: PropTypes.string,
23+
searchedTag: PropTypes.bool,
24+
specialTag: PropTypes.bool,
2525
name: PropTypes.string,
2626
}).isRequired,
2727
};

src/shared/components/MemberSearch/TagList/index.jsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
33
import classNames from 'classnames';
4+
import shortId from 'shortid';
45
import TagItem from './TagItem';
56

67
import './style.scss';
@@ -17,7 +18,7 @@ const TagList = ({ tags, label, emptyMessage = '' }) => {
1718

1819
const noTagsMessage = !tags.length && emptyMessage ? emptyMessage : null;
1920

20-
const tagItems = tags.map(t => <TagItem key={t} tag={t} />);
21+
const tagItems = tags.map(t => <TagItem key={shortId()} tag={t} />);
2122

2223
return (
2324
<div styleName={tagListStyles}>
@@ -31,7 +32,7 @@ const TagList = ({ tags, label, emptyMessage = '' }) => {
3132
};
3233

3334
TagList.propTypes = {
34-
tags: PropTypes.shape([]).isRequired,
35+
tags: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
3536
label: PropTypes.string,
3637
emptyMessage: PropTypes.string.isRequired,
3738
};

src/shared/components/MemberSearch/TopMemberList/index.jsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
33
import _ from 'lodash';
4+
import shortId from 'shortid';
45
import MemberItem from '../MemberItem';
56

67
const TopMemberList = ({ topMembers }) => {
78
const sortedTopMembers = _.orderBy(topMembers, 'wins', 'desc');
89

910
const topMemberItems = sortedTopMembers.map((member, i) => (
10-
<MemberItem key={member} member={member} userPlace={i} />
11+
<MemberItem key={shortId()} member={member} userPlace={i} />
1112
));
1213

1314
return (

src/shared/components/MemberSearch/TrackList/index.jsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
3+
import shortId from 'shortid';
34
import TrackItem from './TrackItem';
45

56
import './style.scss';
67

78
const TrackList = ({ tracks }) => {
89
let trackItems;
910
if (tracks.length) {
10-
trackItems = tracks.map(t => <TrackItem key={t} track={t} />);
11+
trackItems = tracks.map(t => <TrackItem key={shortId()} track={t} />);
1112
} else {
1213
trackItems = <TrackItem track="" />;
1314
}
@@ -20,7 +21,7 @@ const TrackList = ({ tracks }) => {
2021
};
2122

2223
TrackList.propTypes = {
23-
tracks: PropTypes.shape([]).isRequired,
24+
tracks: PropTypes.arrayOf(PropTypes.string).isRequired,
2425
};
2526

2627
export default TrackList;

src/shared/components/MemberSearch/User/UserAvatar/index.jsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ const UserAvatar = ({ showLevel, rating, photoURL }) => {
99
let levelIcon;
1010

1111
if (showLevel) {
12-
levelIcon = <LevelDesignatorIcon level={memberLevelByRating(rating)} height="17px" width="17px" />;
12+
levelIcon = (
13+
<span styleName="user-rank">
14+
<LevelDesignatorIcon level={memberLevelByRating(rating)} height="17px" width="17px" />
15+
</span>
16+
);
1317
}
1418

1519
/* eslint-disable global-require */

src/shared/components/MemberSearch/icons/LevelDesignatorIcon.jsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const LevelDesignatorIcon = ({ width, height, level }) => {
66
const fill = memberColorByLevel(level);
77

88
return (
9-
<svg className="user-rank" width={width || '20px'} height={height || '20px'} viewBox="0 0 20 20" version="1.1">
9+
<svg width={width || '20px'} height={height || '20px'} viewBox="0 0 20 20" version="1.1">
1010
<g id="Member-List" stroke="none" strokeWidth="1" fill="none" fillRule="evenodd">
1111
<g id="List-cards-members-desktop" transform="translate(-1787.000000, -747.000000)">
1212
<g id="level-designator-big" transform="translate(1788.000000, 748.000000)">
@@ -20,14 +20,14 @@ const LevelDesignatorIcon = ({ width, height, level }) => {
2020
};
2121

2222
LevelDesignatorIcon.propTypes = {
23-
width: PropTypes.number,
24-
height: PropTypes.number,
23+
width: PropTypes.string,
24+
height: PropTypes.string,
2525
level: PropTypes.number.isRequired,
2626
};
2727

2828
LevelDesignatorIcon.defaultProps = {
29-
width: 0,
30-
height: 0,
29+
width: '',
30+
height: '',
3131
};
3232

3333
export default LevelDesignatorIcon;

src/shared/components/MemberSearch/icons/RobotIcon.jsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ const RobotIcon = ({ width, height }) => (
2626
);
2727

2828
RobotIcon.propTypes = {
29-
width: PropTypes.number,
30-
height: PropTypes.number,
29+
width: PropTypes.string,
30+
height: PropTypes.string,
3131
};
3232

3333
RobotIcon.defaultProps = {
34-
width: 0,
35-
height: 0,
34+
width: '',
35+
height: '',
3636
};
3737

3838
export default RobotIcon;

src/shared/components/MemberSearch/index.jsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,15 @@ export default class MemberSearch extends Component {
1414

1515
componentWillMount() {
1616
const { location, loadMemberSearch } = this.props;
17-
window.addEventListener('scroll', this.handleScroll);
1817

1918
this.searchTermFromQuery = qs.parse(location.search, { ignoreQueryPrefix: true }).q || '';
2019
loadMemberSearch(this.searchTermFromQuery);
2120
}
2221

22+
componentDidMount() {
23+
window.addEventListener('scroll', this.handleScroll);
24+
}
25+
2326
componentWillUnmount() {
2427
window.removeEventListener('scroll', this.handleScroll);
2528
}
@@ -58,13 +61,18 @@ MemberSearch.propTypes = {
5861
loadingMore: PropTypes.bool.isRequired,
5962
error: PropTypes.bool.isRequired,
6063

61-
usernameMatches: PropTypes.arrayOf({}).isRequired,
64+
usernameMatches: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
6265
moreMatchesAvailable: PropTypes.bool.isRequired,
6366
totalCount: PropTypes.number.isRequired,
64-
topMembers: PropTypes.shape([]).isRequired,
67+
topMembers: PropTypes.arrayOf(PropTypes.shape({})).isRequired,
6568

66-
previousSearchTerm: PropTypes.string.isRequired,
67-
searchTermTag: PropTypes.shape({}).isRequired,
69+
previousSearchTerm: PropTypes.string,
70+
searchTermTag: PropTypes.shape({}),
6871

6972
loadMemberSearch: PropTypes.func.isRequired,
7073
};
74+
75+
MemberSearch.defaultProps = {
76+
previousSearchTerm: null,
77+
searchTermTag: null,
78+
};

0 commit comments

Comments
 (0)