Skip to content

Commit

Permalink
update useGithubRepositories.ts, _ssg/docusaurus/src/pages/portfolio/…
Browse files Browse the repository at this point in the history
…index.tsx and tsconfig.json
  • Loading branch information
frank chen committed Jun 5, 2024
1 parent 3448ab6 commit d4eab37
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 29 deletions.
64 changes: 53 additions & 11 deletions _ssg/docusaurus/src/hooks/useGithubRepositories.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,26 @@ type Options = {
};

export type Repository =
paths['/users/{username}/repos']['get']['responses']['200']['content']['application/json'][0];
paths['/users/{username}/repos']['get']['responses']['200']['content']['application/json'][0] | paths['/repos/{owner}/{repo}']['get']['responses']['200']['content']['application/json'];

export default function useGithubRepositories(

export function useGithubRepositoriesForUser(
username: string,
options?: Options,
) {

type Repository = paths['/users/{username}/repos']['get']['responses']['200']['content']['application/json'][0]

const [repositories, setRepositories] = useState<Repository[]>([]);

options ??= {
type: 'owner',
sort: 'updated',
direction: 'desc',
per_page: 20,
page: 0,
};

async function getUserRepos(username: string, options: Options) {
try {
const {type, sort, direction, per_page, page, postRequestSort} = options;
Expand All @@ -37,6 +51,7 @@ export default function useGithubRepositories(
if (response.status != 200) return;

let repositories = response.data;

if (postRequestSort) {
repositories.sort((repo1, repo2) =>
direction === 'asc'
Expand All @@ -50,18 +65,45 @@ export default function useGithubRepositories(
}
}

options ??= {
type: 'owner',
sort: 'updated',
direction: 'desc',
per_page: 20,
page: 0,
};
const [repositories, setRepositories] = useState<Repository[]>([]);

useEffect(() => {
getUserRepos(username, options);
}, []);

return {repositories};
}


export function useGithubRepositories(
owner: string,
repos: string[],
) {
type Repository = paths['/repos/{owner}/{repo}']['get']['responses']['200']['content']['application/json'];

const [repositories, setRepositories] = useState<Repository[]>([]);

async function getRepos(owner: string, repos: string[]) {
try {
const octokit = new Octokit();
const repositories = [];

repos.map(async (repo) => {
const response = await octokit.request('GET /repos/{owner}/{repo}', {owner, repo});
if (response.status != 200) return;
let repository = response.data;
repositories.push(repository);
setRepositories([...repositories]);
console.log(`push ${repository}`);

})

} catch (error: unknown) {
console.error(error);
}
}

useEffect(() => {
getRepos(owner, repos);
}, []);

return {repositories};
}
44 changes: 29 additions & 15 deletions _ssg/docusaurus/src/pages/portfolio/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,47 @@ import Layout from '@theme/Layout';
import {translate} from '@docusaurus/Translate';

import styles from './styles.module.css';
import useGithubRepositories, {
import {
useGithubRepositoriesForUser,
Repository,
useGithubRepositories,
} from '../../hooks/useGithubRepositories';
import RepositoryCard from '../../components/RepositoryCard';

const websiteConfig = require('@site/website_config.json');

function Portfolio() {
const maxPerPage = 24;
const {repositories} = useGithubRepositories(websiteConfig.GITHUB_USER, {
type: 'owner',
sort: 'pushed',
direction: 'desc',
per_page: maxPerPage,
page: 0,
});
export default function Portfolio() : JSX.Element{
// const maxPerPage = 24;
// const {repositories} = useGithubRepositoriesForUser(websiteConfig.GITHUB_USER, {
// type: 'owner',
// sort: 'pushed',
// direction: 'desc',
// per_page: maxPerPage,
// page: 0,
// });

const repos = [
"hello-c",
"hello-cpp",
"hello-python",
"hello-assembly",
"hello-dockerfile",
"hello-docker-compose",
];
const {repositories} = useGithubRepositories(
websiteConfig.GITHUB_USER,
repos,
);
const maxPerPage = repos.length;

const title = translate({
id: 'portfolio.title',
message: 'My open-source projects',
message: 'Daily Projects',
description: "The author's portfolio",
});
const description = translate({
id: 'portfolio.description',
message: 'My {maxPerPage} most up-to-date open-source projects!',
message: 'My {maxPerPage} up-to-date daily coding playground!',
description: 'A description for the portfolio page',
});

Expand All @@ -50,6 +66,4 @@ function Portfolio() {
</div>
</Layout>
);
}

export default Portfolio;
}
5 changes: 2 additions & 3 deletions _ssg/docusaurus/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"extends": "@tsconfig/docusaurus/tsconfig.json",
"extends": "@docusaurus/tsconfig",
"compilerOptions": {
"baseUrl": ".",
"resolveJsonModule": true
"baseUrl": "."
}
}

0 comments on commit d4eab37

Please sign in to comment.