This commit is contained in:
Vladyslav Matsiiako
2023-04-28 10:11:36 -07:00
+40 -9
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[] = [];
let page = 1;
const 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}", "GET /user/repos{?visibility,affiliation,type,sort,direction,per_page,page,since,before}",
{ {
per_page: 100, per_page,
page,
} }
) );
).data;
if (response.data.length > 0) {
repos = repos.concat(response.data);
page++;
} else {
hasMore = false;
}
}
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);