import React from 'react';
import Item from './Item';
-import { sortByResult } from '../../helpers/Participant';
+import { sortByFinished, sortByResult } from '../../helpers/Participant';
+import { maySeeResults } from '../../helpers/permissions';
import { getRunners } from '../../helpers/Tournament';
+import { compareResult } from '../../helpers/Result';
+import { withUser } from '../../helpers/UserContext';
-const List = ({ round, tournament }) => <div className="results d-flex flex-wrap">
- {sortByResult(getRunners(tournament), round).map(participant =>
- <Item
- key={participant.id}
- participant={participant}
- round={round}
- tournament={tournament}
- />
- )}
-</div>;
+const List = ({ round, tournament, user }) => {
+ if (tournament.type === 'open-async') {
+ const results = maySeeResults(user, tournament, round)
+ ? (round.results || []).sort(compareResult)
+ : round.results || [];
+ return <div className="results d-flex flex-wrap">
+ {results.map(result =>
+ <Item
+ key={result.id}
+ round={round}
+ tournament={tournament}
+ user={result.user}
+ />
+ )}
+ </div>;
+ }
+ const runners = maySeeResults(user, tournament, round)
+ ? sortByResult(getRunners(tournament), round)
+ : sortByFinished(getRunners(tournament), round);
+ return <div className="results d-flex flex-wrap">
+ {runners.map(participant =>
+ <Item
+ key={participant.id}
+ round={round}
+ tournament={tournament}
+ user={participant.user}
+ />
+ )}
+ </div>;
+};
List.propTypes = {
round: PropTypes.shape({
+ results: PropTypes.arrayOf(PropTypes.shape({
+ })),
}),
tournament: PropTypes.shape({
participants: PropTypes.arrayOf(PropTypes.shape({
})),
+ type: PropTypes.string,
+ users: PropTypes.arrayOf(PropTypes.shape({
+ })),
+ }),
+ user: PropTypes.shape({
}),
};
-export default List;
+export default withUser(List);