diff --git a/apps/desktop/src/components/ForgeAccountConfig.svelte b/apps/desktop/src/components/ForgeAccountConfig.svelte new file mode 100644 index 0000000000..6553a9884a --- /dev/null +++ b/apps/desktop/src/components/ForgeAccountConfig.svelte @@ -0,0 +1,89 @@ + + + + {#snippet title()} + {#if hasAccounts} + Configure {displayName} integration + {:else} + Connect your {displayName} account + {/if} + {/snippet} + + {#snippet caption()} + Enable {requestType} creation. Read more in the docs + {/snippet} + + {#if !hasAccounts} +
+ +
+ {:else} + {@const account = preferredAccount!} + {@const accountStr = accountToString(account)} + + {/if} +
diff --git a/apps/desktop/src/components/ForgeForm.svelte b/apps/desktop/src/components/ForgeForm.svelte index 9fcf82d909..69d8f6311f 100644 --- a/apps/desktop/src/components/ForgeForm.svelte +++ b/apps/desktop/src/components/ForgeForm.svelte @@ -1,4 +1,5 @@ @@ -100,12 +108,9 @@ {#if forge.determinedForgeType === 'default'} ({ - label: account.info.username, - value: gitlabAccountIdentifierToString(account) - }))} - onselect={(value) => { - const account = stringToGitLabAccountIdentifier(value); - if (!account) return; - projectsService.updatePreferredForgeUser(projectId, { - provider: 'gitlab', - details: account - }); - }} - disabled={gitlabAccounts.current.length <= 1} - wide - > - {#snippet itemSnippet({ item, highlighted })} - {@const itemAccount = item.value && stringToGitLabAccountIdentifier(item.value)} - - {item.label} - - {#if itemAccount} - - {/if} - - {/snippet} - - {/if} - + {#if forge.current.name === 'github'} + account.info.username} + updatePreferredAccount={updatePreferredGitHubAccount} + AccountBadge={GitHubAccountBadge} + docsUrl="https://docs.gitbutler.com/features/forge-integration/github-integration" + requestType="pull request" + /> {/if} - {#if forge.current.name === 'github'} - - {#snippet title()} - Configure GitHub integration - {/snippet} - - {#snippet caption()} - Enable pull request creation. Read more in the docs - {/snippet} - - {#if githubAccounts.current.length === 0 || !preferredGitHubAccount.current} - - {#snippet title()} - No GitHub accounts found - {/snippet} - {#snippet content()} - Add a GitHub account in General Settings to enable GitHub integration - {/snippet} - - {@render openSettingsButton()} - {:else} - {@const account = preferredGitHubAccount.current} - - {/if} - + {#if forge.current.name === 'gitlab'} + account.info.username} + updatePreferredAccount={updatePreferredGitLabAccount} + AccountBadge={GitLabAccountBadge} + docsUrl="https://docs.gitbutler.com/features/forge-integration/gitlab-integration" + requestType="merge request" + /> {/if} - -{#snippet openSettingsButton()} -
- -
-{/snippet} - - diff --git a/apps/desktop/src/components/UnassignedViewForgePrompt.svelte b/apps/desktop/src/components/UnassignedViewForgePrompt.svelte index ac893810ff..1c3f1479f7 100644 --- a/apps/desktop/src/components/UnassignedViewForgePrompt.svelte +++ b/apps/desktop/src/components/UnassignedViewForgePrompt.svelte @@ -6,8 +6,7 @@ availableForgeDocsLink, availableForgeLabel, availableForgeReviewUnit, - DEFAULT_FORGE_FACTORY, - type AvailableForge + DEFAULT_FORGE_FACTORY } from '$lib/forge/forgeFactory.svelte'; import { useSettingsModal } from '$lib/settings/settingsModal.svelte'; import { inject } from '@gitbutler/core/context'; @@ -19,7 +18,7 @@ const { projectId }: Props = $props(); - const { openGeneralSettings, openProjectSettings } = useSettingsModal(); + const { openGeneralSettings } = useSettingsModal(); const forgeFactory = inject(DEFAULT_FORGE_FACTORY); const dismissedTheIntegrationPrompt = $derived( persistedDismissedForgeIntegrationPrompt(projectId) @@ -48,15 +47,8 @@ return () => clearTimeout(timeoutId); }); - function configureIntegration(forge: AvailableForge): void { - switch (forge) { - case 'github': - openGeneralSettings('integrations'); - break; - case 'gitlab': - openProjectSettings(projectId); - break; - } + function configureIntegration(): void { + openGeneralSettings('integrations'); } function dismissPrompt() { @@ -82,9 +74,7 @@ {/if}