{#if loading}
{#each new Array(3) as _} {/each}
{:else}
{#each Object.entries(supportedServices) as [serviceName, config]} {@const integration = getIntegrationByService(serviceName)} {@const isConnecting = connecting === serviceName} {@const workspaceApp = hasWorkspaceApp(integration)} {@const usesInstanceApp = !workspaceApp && instanceSharingAvailable[serviceName]} {@const serviceConnections = connections[serviceName] ?? []}
{config.displayName}
{config.description}
{#if workspaceApp || usesInstanceApp} {/if} {#if integration?.oauth_data} {/if} {#if config.docsUrl} {/if}
{#if usesInstanceApp}
{#if serviceName === 'google'}

Your instance admin shares a Google OAuth app. Before connecting, ensure the following redirect URI has been added to it in the Google Cloud Console:

{:else} Your instance admin shares a {config.displayName} OAuth app, so members can connect their accounts without further setup. {/if}
{/if} {#if choosingPathFor === serviceName}
Choose where to save the connection. Save it in a folder to let the folder's members create triggers with this account.
{/if} {#if serviceConnections.length > 0}
Connected accounts
{#each serviceConnections as connection (connection.path)}
{connection.path}
{#if connection.owner} connected by {connection.owner} {/if}
{/each}
{/if} {#if showingConfig === serviceName}
{#if serviceName === 'nextcloud'}

Nextcloud integration requires:

{/if} { await createOrUpdateIntegration(serviceName, oauthData) showingConfig = null }} />
{/if}
{/each}
{/if}