fix: ensure all providers are shown unless `disable_default_providers` is set (#2197)

Andrey Nering created

Change summary

internal/config/provider.go  |  6 +++++-
internal/ui/dialog/models.go | 15 ++++++---------
2 files changed, 11 insertions(+), 10 deletions(-)

Detailed changes

internal/config/provider.go 🔗

@@ -145,11 +145,15 @@ func Providers(cfg *Config) ([]catwalk.Provider, error) {
 		var errs []error
 		providers := csync.NewSlice[catwalk.Provider]()
 		autoupdate := !cfg.Options.DisableProviderAutoUpdate
+		customProvidersOnly := cfg.Options.DisableDefaultProviders
 
 		ctx, cancel := context.WithTimeout(context.Background(), 45*time.Second)
 		defer cancel()
 
 		wg.Go(func() {
+			if customProvidersOnly {
+				return
+			}
 			catwalkURL := cmp.Or(os.Getenv("CATWALK_URL"), defaultCatwalkURL)
 			client := catwalk.NewWithURL(catwalkURL)
 			path := cachePathFor("providers")
@@ -165,7 +169,7 @@ func Providers(cfg *Config) ([]catwalk.Provider, error) {
 		})
 
 		wg.Go(func() {
-			if !hyper.Enabled() {
+			if customProvidersOnly || !hyper.Enabled() {
 				return
 			}
 			path := cachePathFor("hyper")

internal/ui/dialog/models.go 🔗

@@ -14,7 +14,6 @@ import (
 	"github.com/charmbracelet/crush/internal/ui/common"
 	"github.com/charmbracelet/crush/internal/ui/util"
 	uv "github.com/charmbracelet/ultraviolet"
-	xslice "github.com/charmbracelet/x/exp/slice"
 )
 
 // ModelType represents the type of model to select.
@@ -143,14 +142,12 @@ func NewModels(com *common.Common, isOnboarding bool) (*Models, error) {
 	)
 	m.keyMap.Close = CloseKey
 
-	m.providers = slices.Collect(
-		xslice.Map(
-			com.Config().Providers.Seq(),
-			func(pc config.ProviderConfig) catwalk.Provider {
-				return pc.ToProvider()
-			},
-		),
-	)
+	var err error
+	m.providers, err = config.Providers(m.com.Config())
+	if err != nil {
+		return nil, fmt.Errorf("failed to get providers: %w", err)
+	}
+
 	if err := m.setProviderItems(); err != nil {
 		return nil, fmt.Errorf("failed to set provider items: %w", err)
 	}