Skip to content

Commit

Permalink
feat: git provider adding ux (#572)
Browse files Browse the repository at this point in the history
Signed-off-by: Ivan Dagelic <[email protected]>
  • Loading branch information
idagelic authored May 17, 2024
1 parent 0ccdb7a commit 45241c9
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion pkg/views/gitprovider/select.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"errors"
"fmt"
"log"
"slices"

"github.com/charmbracelet/huh"
"github.com/daytonaio/daytona/cmd/daytona/config"
Expand All @@ -22,10 +23,13 @@ type GitProviderView struct {
Token string
}

var commonGitProviderIds = []string{"github", "gitlab", "bitbucket"}

func GitProviderSelectionView(gitProviderAddView *serverapiclient.GitProvider, userGitProviders []serverapiclient.GitProvider, isDeleting bool) {
supportedProviders := config.GetSupportedGitProviders()

var gitProviderOptions []huh.Option[string]
var otherGitProviderOptions []huh.Option[string]
for _, supportedProvider := range supportedProviders {
if isDeleting {
for _, userProvider := range userGitProviders {
Expand All @@ -34,10 +38,18 @@ func GitProviderSelectionView(gitProviderAddView *serverapiclient.GitProvider, u
}
}
} else {
gitProviderOptions = append(gitProviderOptions, huh.Option[string]{Key: supportedProvider.Name, Value: supportedProvider.Id})
if slices.Contains(commonGitProviderIds, supportedProvider.Id) {
gitProviderOptions = append(gitProviderOptions, huh.Option[string]{Key: supportedProvider.Name, Value: supportedProvider.Id})
} else {
otherGitProviderOptions = append(otherGitProviderOptions, huh.Option[string]{Key: supportedProvider.Name, Value: supportedProvider.Id})
}
}
}

if len(otherGitProviderOptions) > 0 {
gitProviderOptions = append(gitProviderOptions, huh.Option[string]{Key: "Other", Value: "other"})
}

gitProviderForm := huh.NewForm(
huh.NewGroup(
huh.NewSelect[string]().
Expand All @@ -46,6 +58,15 @@ func GitProviderSelectionView(gitProviderAddView *serverapiclient.GitProvider, u
gitProviderOptions...,
).
Value(gitProviderAddView.Id)),
huh.NewGroup(
huh.NewSelect[string]().
Title("Choose a Git provider").
Options(
otherGitProviderOptions...,
).
Value(gitProviderAddView.Id)).WithHideFunc(func() bool {
return *gitProviderAddView.Id != "other"
}),
).WithTheme(views.GetCustomTheme())

err := gitProviderForm.Run()
Expand Down

0 comments on commit 45241c9

Please sign in to comment.