Integrations.utils.ts54 lines · main
1import type { IntegrationsData } from '@/data/integrations/integrations-query'
2import type { IntegrationName } from '@/data/integrations/integrations.types'
3import type { Organization } from '@/types'
4
5export function getHasInstalledObject({
6 integrationName,
7 integrationData,
8 organizationsData,
9 installationId,
10}: {
11 integrationName: IntegrationName
12 integrationData: IntegrationsData
13 organizationsData: Organization[]
14 installationId?: string | number
15}): { [orgSlug: string]: boolean } {
16 if (integrationName === 'Vercel') {
17 return Object.fromEntries(
18 organizationsData
19 .map((org) => [
20 org.slug,
21 Boolean(
22 integrationData.find(
23 (integration) =>
24 integration.organization.slug === org.slug &&
25 integration.integration.name === 'Vercel'
26 )
27 ),
28 ])
29 .filter(([, v]) => Boolean(v))
30 )
31 }
32
33 if (integrationName === 'GitHub') {
34 return Object.fromEntries(
35 organizationsData
36 .map((org) => [
37 org.slug,
38 Boolean(
39 integrationData.find(
40 (integration) =>
41 integration.organization.slug === org.slug &&
42 integration.integration.name === 'GitHub' &&
43 integration.metadata !== undefined &&
44 'installation_id' in (integration.metadata as any) &&
45 String((integration.metadata as any).installation_id) === String(installationId)
46 )
47 ),
48 ])
49 .filter(([, v]) => Boolean(v))
50 )
51 }
52
53 return {}
54}