Skip to content

Commit a05332c

Browse files
authored
chore: sort by completed (#1917)
1 parent 9f0ecd2 commit a05332c

2 files changed

Lines changed: 31 additions & 2 deletions

File tree

cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ export default function RepoFilter({
2525
const typeOptions = Object.values(FILTER_TYPE_OPTIONS);
2626
const sortOptions = Object.values(SORT_OPTIONS);
2727
const languageOptions = ['All', 'HTML', 'CSS', 'PHP'];
28-
const { filterType, setFilterType, language, setLanguage } = useRepoFilter();
28+
const { filterType, setFilterType, language, setLanguage, sortBy, setSortBy } =
29+
useRepoFilter();
2930

3031
return (
3132
<Container>
@@ -44,7 +45,12 @@ export default function RepoFilter({
4445
selectOption={setLanguage}
4546
selected={language}
4647
/>
47-
<FilterDropdown name="Sort" items={sortOptions} />
48+
<FilterDropdown
49+
name="Sort"
50+
items={sortOptions}
51+
selected={sortBy}
52+
selectOption={setSortBy}
53+
/>
4854
</FiltersWrapper>
4955
<RepoBtn>
5056
<RepoBookIcon color="#fff" />
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { SORT_OPTIONS } from '../components/repo-filter/data';
2+
import { Repository } from '../interfaces/repositories.interfaces';
3+
4+
const getTime = (time: Date) => new Date(time).getTime();
5+
6+
// Function to sort filtered repos
7+
export const sortedRepoData = ({
8+
repos,
9+
sortBy,
10+
}: {
11+
repos: Repository[];
12+
sortBy: string;
13+
}) => {
14+
const response = repos.slice();
15+
if (sortBy === SORT_OPTIONS.name) {
16+
response.sort((a, b) => a.name.localeCompare(b.name));
17+
} else if (sortBy === SORT_OPTIONS.stars) {
18+
response.sort((a, b) => (b.stargazers_count > a.stargazers_count ? 1 : -1));
19+
} else {
20+
response.sort((a, b) => getTime(b.updated_at) - getTime(a.updated_at));
21+
}
22+
return response;
23+
};

0 commit comments

Comments
 (0)