Skip to content

Commit 0d14a77

Browse files
committed
Makes HomeView dropdown using 'supports' field of IntegrationDescriptor
(#4131)
1 parent 402e90c commit 0d14a77

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

src/webviews/home/homeWebview.ts

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -989,25 +989,29 @@ export class HomeWebviewProvider implements WebviewProvider<State, State, HomeWe
989989

990990
private async getIntegrationStates(force = false) {
991991
if (force || this._integrationStates == null) {
992-
const promises = filterMap(await this.container.integrations.getConfigured(), i =>
993-
isSupportedCloudIntegrationId(i.integrationId)
994-
? ({
995-
id: i.integrationId,
996-
name: providersMetadata[i.integrationId].name,
997-
icon: `gl-provider-${providersMetadata[i.integrationId].iconKey}`,
998-
connected: true,
999-
supports:
1000-
providersMetadata[i.integrationId].type === 'hosting'
1001-
? ['prs', 'issues']
1002-
: providersMetadata[i.integrationId].type === 'issues'
1003-
? ['issues']
1004-
: [],
1005-
requiresPro:
1006-
supportedCloudIntegrationDescriptors.find(item => item.id === i.integrationId)
1007-
?.requiresPro ?? false,
1008-
} satisfies IntegrationState)
1009-
: undefined,
1010-
);
992+
const promises = filterMap(await this.container.integrations.getConfigured(), i => {
993+
if (!isSupportedCloudIntegrationId(i.integrationId)) {
994+
return undefined;
995+
}
996+
const supportedCloudDescriptor = supportedCloudIntegrationDescriptors.find(
997+
item => item.id === i.integrationId,
998+
);
999+
return {
1000+
id: i.integrationId,
1001+
name: providersMetadata[i.integrationId].name,
1002+
icon: `gl-provider-${providersMetadata[i.integrationId].iconKey}`,
1003+
connected: true,
1004+
supports:
1005+
supportedCloudDescriptor?.supports != null
1006+
? supportedCloudDescriptor.supports
1007+
: providersMetadata[i.integrationId].type === 'hosting'
1008+
? ['prs', 'issues']
1009+
: providersMetadata[i.integrationId].type === 'issues'
1010+
? ['issues']
1011+
: [],
1012+
requiresPro: supportedCloudDescriptor?.requiresPro ?? false,
1013+
} satisfies IntegrationState;
1014+
});
10111015

10121016
const integrationsResults = await Promise.allSettled(promises);
10131017
const integrations: IntegrationState[] = [...filterMap(integrationsResults, r => getSettledValue(r))];

0 commit comments

Comments
 (0)