From bf798a1b20a596d13307638a5875b4611c49b40c Mon Sep 17 00:00:00 2001 From: Jerry Hogan Date: Mon, 14 Aug 2023 14:09:58 +0100 Subject: [PATCH 1/9] chore: in progress --- .../src/helpers/languageFilterFunction.ts | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 cra-rxjs-styled-components/src/helpers/languageFilterFunction.ts diff --git a/cra-rxjs-styled-components/src/helpers/languageFilterFunction.ts b/cra-rxjs-styled-components/src/helpers/languageFilterFunction.ts new file mode 100644 index 000000000..65fa663c6 --- /dev/null +++ b/cra-rxjs-styled-components/src/helpers/languageFilterFunction.ts @@ -0,0 +1,24 @@ +import { defaultLanguage } from '../components/repo-filter/data'; +import { Repository } from '../interfaces/repositories.interfaces'; + +const matchText = (target: string, value: string) => + target?.match(new RegExp(value, 'i')); + +// Function to filter repos by language +export const repoDataFilteredByLanguage = ({ + repos, + language, +}: { + repos: Repository[]; + language: string; +}): Repository[] => { + let response = repos.slice(); + if (repos && language && language !== defaultLanguage) { + // response = repos.filter((repo: Repository) => + // matchText(repo?.primaryLanguage?.name, language) + // ); + } else if (language === defaultLanguage) { + response = repos; + } + return response; +}; From 9e6feff0983aeaa20169b099faa7eb285da57406 Mon Sep 17 00:00:00 2001 From: Jerry Hogan Date: Mon, 14 Aug 2023 15:04:35 +0100 Subject: [PATCH 2/9] chore: completed --- .../src/components/repo-filter/Repofilter.tsx | 9 ++++++++- .../src/helpers/languageFilterFunction.ts | 6 +++--- .../src/hooks/repositories/use-repos.ts | 7 +++++++ .../src/interfaces/repositories.interfaces.ts | 1 + cra-rxjs-styled-components/src/routes/profile.tsx | 12 +++++++++--- cra-rxjs-styled-components/tsconfig.json | 12 +++++++++--- 6 files changed, 37 insertions(+), 10 deletions(-) diff --git a/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx b/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx index ebff84e4c..aec275ea1 100644 --- a/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx +++ b/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx @@ -1,3 +1,4 @@ +import { useRepoFilter } from '../../context/RepoFilterContext'; import FilterDropdown from '../filter-dropdown/FilterDropdown'; import { RepoBookIcon } from '../icons'; import { @@ -24,6 +25,9 @@ export default function RepoFilter({ const typeOptions = Object.values(FILTER_TYPE_OPTIONS); const sortOptions = Object.values(SORT_OPTIONS); const languageOptions = ['All', 'HTML', 'CSS', 'PHP']; + const { setLanguage, language } = useRepoFilter(); + + const selectLanguage = (value: string) => setLanguage(value); return ( @@ -31,17 +35,20 @@ export default function RepoFilter({ - 0 ? languages : languageOptions} + selectOption={selectLanguage} + selected={language} /> + {repoBtnText || 'New'} + {language} ); } diff --git a/cra-rxjs-styled-components/src/helpers/languageFilterFunction.ts b/cra-rxjs-styled-components/src/helpers/languageFilterFunction.ts index 65fa663c6..b20bd46b2 100644 --- a/cra-rxjs-styled-components/src/helpers/languageFilterFunction.ts +++ b/cra-rxjs-styled-components/src/helpers/languageFilterFunction.ts @@ -14,9 +14,9 @@ export const repoDataFilteredByLanguage = ({ }): Repository[] => { let response = repos.slice(); if (repos && language && language !== defaultLanguage) { - // response = repos.filter((repo: Repository) => - // matchText(repo?.primaryLanguage?.name, language) - // ); + response = repos.filter((repo: Repository) => + matchText(repo?.language, language) + ); } else if (language === defaultLanguage) { response = repos; } diff --git a/cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts b/cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts index 2c81b3f1c..de32022ef 100644 --- a/cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts +++ b/cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts @@ -31,6 +31,7 @@ export function useRepos( isTopRepos?: boolean ): UseRepo { const [state, setState] = useState([]); + const [languages, setLanguages] = useState([]); const [paginationPages, setPaginationPages] = useState({ prevPage: '', nextPage: '1', @@ -64,6 +65,11 @@ export function useRepos( filter((repos) => !!repos.length), switchMap((repositories: Repository[]) => { const requests = repositories.map(createBranchCountRequest); + const reposLaguages = repositories + .map((res) => res.language) + .filter((res) => res) + .sort(); + setLanguages([...new Set(reposLaguages)]); return zip(...requests).pipe( map(mergeRepositoriesWithBranchCount(repositories)) ); @@ -88,6 +94,7 @@ export function useRepos( return { repositories: state, + languages, prevPage, nextPage, hasNextPage: paginationPages.hasNextPage, diff --git a/cra-rxjs-styled-components/src/interfaces/repositories.interfaces.ts b/cra-rxjs-styled-components/src/interfaces/repositories.interfaces.ts index fea293e41..bacf248d5 100644 --- a/cra-rxjs-styled-components/src/interfaces/repositories.interfaces.ts +++ b/cra-rxjs-styled-components/src/interfaces/repositories.interfaces.ts @@ -33,6 +33,7 @@ export interface Pagination { export interface UseRepo { repositories: RepositoryWithBranchCount[]; + languages: string[]; prevPage: () => void; nextPage: () => void; hasNextPage: boolean; diff --git a/cra-rxjs-styled-components/src/routes/profile.tsx b/cra-rxjs-styled-components/src/routes/profile.tsx index 33d943ce7..988c1f104 100644 --- a/cra-rxjs-styled-components/src/routes/profile.tsx +++ b/cra-rxjs-styled-components/src/routes/profile.tsx @@ -18,8 +18,14 @@ import RepoFilter from '../components/repo-filter/Repofilter'; function Profile() { const context = useUser(); - const { repositories, prevPage, nextPage, hasNextPage, hasPrevPage } = - useRepos(context?.user?.login); + const { + repositories, + languages, + prevPage, + nextPage, + hasNextPage, + hasPrevPage, + } = useRepos(context?.user?.login); const ContentLayout = styled.div` grid-area: content; @@ -38,7 +44,7 @@ function Profile() { - + {repositories.map((repo) => ( ))} diff --git a/cra-rxjs-styled-components/tsconfig.json b/cra-rxjs-styled-components/tsconfig.json index 1ab71cb4b..e481c508e 100644 --- a/cra-rxjs-styled-components/tsconfig.json +++ b/cra-rxjs-styled-components/tsconfig.json @@ -1,8 +1,12 @@ { "extends": "./tsconfig.paths.json", "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], + "target": "ES2020", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, @@ -17,5 +21,7 @@ "noEmit": true, "jsx": "react-jsx" }, - "include": ["src"] + "include": [ + "src" + ] } From 754b04814dc6e5cd20ccce4ef18b1bc288a18912 Mon Sep 17 00:00:00 2001 From: Jerry Hogan Date: Mon, 14 Aug 2023 15:05:11 +0100 Subject: [PATCH 3/9] chore: clean up --- .../src/components/repo-filter/Repofilter.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx b/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx index aec275ea1..46b2d073a 100644 --- a/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx +++ b/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx @@ -48,7 +48,6 @@ export default function RepoFilter({ {repoBtnText || 'New'} - {language} ); } From 0ba10d6d920f0ace4114a0123ada50b48c2bd826 Mon Sep 17 00:00:00 2001 From: Jerry Hogan Date: Mon, 14 Aug 2023 15:11:45 +0100 Subject: [PATCH 4/9] chore: clean up --- .../src/components/repo-filter/Repofilter.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx b/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx index 46b2d073a..576dcb496 100644 --- a/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx +++ b/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx @@ -27,8 +27,6 @@ export default function RepoFilter({ const languageOptions = ['All', 'HTML', 'CSS', 'PHP']; const { setLanguage, language } = useRepoFilter(); - const selectLanguage = (value: string) => setLanguage(value); - return ( @@ -38,7 +36,7 @@ export default function RepoFilter({ 0 ? languages : languageOptions} - selectOption={selectLanguage} + selectOption={setLanguage} selected={language} /> From 8a99f5ea7c4275b97ca0d8702451f75a83edc140 Mon Sep 17 00:00:00 2001 From: Jerry Hogan Date: Mon, 14 Aug 2023 15:14:32 +0100 Subject: [PATCH 5/9] chore: fixing CI --- cra-rxjs-styled-components/tsconfig.json | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/cra-rxjs-styled-components/tsconfig.json b/cra-rxjs-styled-components/tsconfig.json index e481c508e..b12f377ea 100644 --- a/cra-rxjs-styled-components/tsconfig.json +++ b/cra-rxjs-styled-components/tsconfig.json @@ -2,11 +2,7 @@ "extends": "./tsconfig.paths.json", "compilerOptions": { "target": "ES2020", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], + "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, @@ -21,7 +17,5 @@ "noEmit": true, "jsx": "react-jsx" }, - "include": [ - "src" - ] + "include": ["src"] } From e9e051928dc0821b26d622fe0933551192abdbe1 Mon Sep 17 00:00:00 2001 From: Jerry Hogan Date: Mon, 14 Aug 2023 15:27:09 +0100 Subject: [PATCH 6/9] chore: fixing sonarcloud --- cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts b/cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts index de32022ef..9fa9eec7c 100644 --- a/cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts +++ b/cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts @@ -68,7 +68,7 @@ export function useRepos( const reposLaguages = repositories .map((res) => res.language) .filter((res) => res) - .sort(); + .sort((a,b) => a.localeCompare(b)); setLanguages([...new Set(reposLaguages)]); return zip(...requests).pipe( map(mergeRepositoriesWithBranchCount(repositories)) From 8c9d7774de402b0264068935c841b99e649b86e0 Mon Sep 17 00:00:00 2001 From: Jerry Hogan Date: Mon, 14 Aug 2023 15:27:30 +0100 Subject: [PATCH 7/9] chore: fixing sonarcloud --- cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts b/cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts index 9fa9eec7c..e4f43f800 100644 --- a/cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts +++ b/cra-rxjs-styled-components/src/hooks/repositories/use-repos.ts @@ -68,7 +68,7 @@ export function useRepos( const reposLaguages = repositories .map((res) => res.language) .filter((res) => res) - .sort((a,b) => a.localeCompare(b)); + .sort((a, b) => a.localeCompare(b)); setLanguages([...new Set(reposLaguages)]); return zip(...requests).pipe( map(mergeRepositoriesWithBranchCount(repositories)) From 1dae672bb81baf703fcfae1dd47a234faf17a3b5 Mon Sep 17 00:00:00 2001 From: Jerry Hogan Date: Mon, 14 Aug 2023 15:29:45 +0100 Subject: [PATCH 8/9] chore: fixing duplications --- .../src/components/repo-filter/Repofilter.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx b/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx index b89ffed4e..f53a45c63 100644 --- a/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx +++ b/cra-rxjs-styled-components/src/components/repo-filter/Repofilter.tsx @@ -25,8 +25,7 @@ export default function RepoFilter({ const typeOptions = Object.values(FILTER_TYPE_OPTIONS); const sortOptions = Object.values(SORT_OPTIONS); const languageOptions = ['All', 'HTML', 'CSS', 'PHP']; - const { setLanguage, language } = useRepoFilter(); - const { filterType, setFilterType } = useRepoFilter(); + const { filterType, setFilterType, language, setLanguage } = useRepoFilter(); return ( From 4a6a400df601fb2b11cf98b1688255212ee66697 Mon Sep 17 00:00:00 2001 From: Jerry Hogan Date: Mon, 14 Aug 2023 15:34:33 +0100 Subject: [PATCH 9/9] chore: fixing code smell --- .../src/helpers/languageFilterFunction.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cra-rxjs-styled-components/src/helpers/languageFilterFunction.ts b/cra-rxjs-styled-components/src/helpers/languageFilterFunction.ts index b20bd46b2..542d6f56a 100644 --- a/cra-rxjs-styled-components/src/helpers/languageFilterFunction.ts +++ b/cra-rxjs-styled-components/src/helpers/languageFilterFunction.ts @@ -2,7 +2,7 @@ import { defaultLanguage } from '../components/repo-filter/data'; import { Repository } from '../interfaces/repositories.interfaces'; const matchText = (target: string, value: string) => - target?.match(new RegExp(value, 'i')); + new RegExp(value, 'i').exec(target); // Function to filter repos by language export const repoDataFilteredByLanguage = ({