From ae1801cd82db7dbd46fbf2c8c58e5d347e7e62cc Mon Sep 17 00:00:00 2001 From: e-for-eshaan Date: Thu, 18 Apr 2024 16:46:14 +0530 Subject: [PATCH 1/3] fixes API call in Promis.all --- web-server/pages/api/resources/orgs/[org_id]/teams/v2.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/web-server/pages/api/resources/orgs/[org_id]/teams/v2.ts b/web-server/pages/api/resources/orgs/[org_id]/teams/v2.ts index 1634bc737..6e9987397 100644 --- a/web-server/pages/api/resources/orgs/[org_id]/teams/v2.ts +++ b/web-server/pages/api/resources/orgs/[org_id]/teams/v2.ts @@ -86,10 +86,11 @@ endpoint.handle.GET(getSchema, async (req, res) => { const [teams, orgRepos] = await Promise.all([ getQuery, - ( - await getAllOrgRepos(org_id, provider as CodeSourceProvidersIntegration) - ).flat() + getAllOrgRepos(org_id, provider as CodeSourceProvidersIntegration).then( + (res) => res.flat() + ) ]); + const repos = ( await Promise.all(teams.map((team) => getTeamRepos(team.id))) ).flat(); From 03acfdafc7c40134aabac5567e4f0ca0f2881809 Mon Sep 17 00:00:00 2001 From: e-for-eshaan Date: Thu, 18 Apr 2024 16:46:47 +0530 Subject: [PATCH 2/3] adds an impeding flow for unlinking github --- .../content/Dashboards/IntegrationCards.tsx | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/web-server/src/content/Dashboards/IntegrationCards.tsx b/web-server/src/content/Dashboards/IntegrationCards.tsx index 48eeda1aa..0e823bae6 100644 --- a/web-server/src/content/Dashboards/IntegrationCards.tsx +++ b/web-server/src/content/Dashboards/IntegrationCards.tsx @@ -94,22 +94,27 @@ export const GithubIntegrationCard = () => { link.github(); return; } - localLoading.true(); - await unlink - .github() - .then(() => { - enqueueSnackbar('Github unlinked successfully', { - variant: 'success' - }); - }) - .then(async () => dispatch(fetchCurrentOrg())) - .catch((e) => { - console.error('Failed to unlink Github', e); - enqueueSnackbar('Failed to unlink Github', { - variant: 'error' - }); - }) - .finally(localLoading.false); + const shouldExecute = window.confirm( + 'Are you sure you want to unlink?' + ); + if (shouldExecute) { + localLoading.true(); + await unlink + .github() + .then(() => { + enqueueSnackbar('Github unlinked successfully', { + variant: 'success' + }); + }) + .then(async () => dispatch(fetchCurrentOrg())) + .catch((e) => { + console.error('Failed to unlink Github', e); + enqueueSnackbar('Failed to unlink Github', { + variant: 'error' + }); + }) + .finally(localLoading.false); + } }} label={!isLinked ? 'Link' : 'Unlink'} bgOpacity={!isLinked ? 0.45 : 0.25} From e5a2c58a4f9560cfa8498b918fe0546faa64e429 Mon Sep 17 00:00:00 2001 From: e-for-eshaan Date: Thu, 18 Apr 2024 17:15:22 +0530 Subject: [PATCH 3/3] fixes the org-repo map payload for the creation and updation of teams --- .../src/components/Teams/useTeamsConfig.tsx | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/web-server/src/components/Teams/useTeamsConfig.tsx b/web-server/src/components/Teams/useTeamsConfig.tsx index dca234291..cbaf306d9 100644 --- a/web-server/src/components/Teams/useTeamsConfig.tsx +++ b/web-server/src/components/Teams/useTeamsConfig.tsx @@ -69,7 +69,7 @@ export const TeamsCRUDProvider: React.FC<{ const teamReposMaps = useSelector((s) => s.team.teamReposMaps); const teams = useSelector((s) => s.team.teams); const orgRepos = useSelector((s) => s.team.orgRepos); - const { orgId, org } = useAuth(); + const { orgId } = useAuth(); const isPageLoading = useSelector( (s) => s.team.requests?.teams === FetchState.REQUEST ); @@ -180,16 +180,8 @@ export const TeamsCRUDProvider: React.FC<{ const teamCreation = useCallback( async (callBack?: AnyFunction) => { depFn(isSaveLoading.true); - const repoPayload = { - [org?.name]: selections.value.map( - (repo) => - ({ - idempotency_key: repo.id, - name: repo.name, - slug: repo.slug - }) as RepoUniqueDetails - ) - }; + const repoPayload = repoToPayload(selections.value); + return dispatch( createTeam({ org_id: orgId, @@ -221,7 +213,6 @@ export const TeamsCRUDProvider: React.FC<{ fetchTeamsAndRepos, isSaveLoading.false, isSaveLoading.true, - org?.name, orgId, selections.value, teamName.value @@ -231,16 +222,8 @@ export const TeamsCRUDProvider: React.FC<{ const teamUpdation = useCallback( async (callBack?: AnyFunction) => { depFn(isSaveLoading.true); - const repoPayload = { - [org?.name]: selections.value.map( - (repo) => - ({ - idempotency_key: repo.id, - name: repo.name, - slug: repo.slug - }) as RepoUniqueDetails - ) - }; + const repoPayload = repoToPayload(selections.value); + return dispatch( updateTeam({ team_id: teamId, @@ -273,7 +256,6 @@ export const TeamsCRUDProvider: React.FC<{ fetchTeamsAndRepos, isSaveLoading.false, isSaveLoading.true, - org?.name, orgId, selections.value, teamId, @@ -367,3 +349,23 @@ export const TeamsCRUDProvider: React.FC<{ ); }; + +const repoToPayload = (repos: BaseRepo[]) => { + const repoPayload = {} as Record; + repos.forEach((repo) => { + const orgRepo = { + idempotency_key: repo.id, + name: repo.name, + slug: repo.slug + } as RepoUniqueDetails; + const orgName = repo.parent; + + if (repoPayload[orgName]) { + repoPayload[orgName].push(orgRepo); + } else { + repoPayload[orgName] = [orgRepo]; + } + }); + + return repoPayload; +};