Update getAppsGitHub to include pagination

This commit is contained in:
Tuan Dang
2023-04-28 20:10:29 +03:00
parent b9ae224aef
commit 102e45891c
+42 -11
View File
@@ -270,28 +270,59 @@ const getAppsNetlify = async ({ accessToken }: { accessToken: string }) => {
const getAppsGithub = async ({ accessToken }: { accessToken: string }) => { const getAppsGithub = async ({ accessToken }: { accessToken: string }) => {
let apps; let apps;
try { try {
interface GitHubApp {
id: string;
name: string;
permissions: {
admin: boolean;
};
owner: {
login: string;
}
}
const octokit = new Octokit({ const octokit = new Octokit({
auth: accessToken, auth: accessToken,
}); });
const repos = ( const getAllRepos = async () => {
await octokit.request( let repos: GitHubApp[] = [];
"GET /user/repos{?visibility,affiliation,type,sort,direction,per_page,page,since,before}", let page = 1;
{ const per_page = 100;
per_page: 100, let hasMore = true;
while (hasMore) {
const response = await octokit.request(
"GET /user/repos{?visibility,affiliation,type,sort,direction,per_page,page,since,before}",
{
per_page,
page,
}
);
if (response.data.length > 0) {
repos = repos.concat(response.data);
page++;
} else {
hasMore = false;
} }
) }
).data;
return repos;
};
const repos = await getAllRepos();
apps = repos apps = repos
.filter((a: any) => a.permissions.admin === true) .filter((a: GitHubApp) => a.permissions.admin === true)
.map((a: any) => { .map((a: GitHubApp) => {
return ({ return {
appId: a.id, appId: a.id,
name: a.name, name: a.name,
owner: a.owner.login, owner: a.owner.login,
}); };
}); });
} catch (err) { } catch (err) {
Sentry.setUser(null); Sentry.setUser(null);
Sentry.captureException(err); Sentry.captureException(err);