diff --git a/internal/config/provider.go b/internal/config/provider.go index dffd4dd854f029bef250a1dde9ca557ace4d33c2..32a3894358d7710743f6e0ce7c7e3f3d5212910c 100644 --- a/internal/config/provider.go +++ b/internal/config/provider.go @@ -147,6 +147,9 @@ func Providers(cfg *Config) ([]catwalk.Provider, error) { ctx, cancel := context.WithTimeout(context.Background(), 45*time.Second) defer cancel() + var hyperProvider catwalk.Provider + var hyperFound bool + wg.Go(func() { if customProvidersOnly { return @@ -177,12 +180,17 @@ func Providers(cfg *Config) ([]catwalk.Provider, error) { errs = append(errs, fmt.Errorf("Crush was unable to fetch updated information from Hyper: %w", err)) //nolint:staticcheck return } - providers.Append(item) + hyperProvider = item + hyperFound = true }) wg.Wait() - providerList = slices.Collect(providers.Seq()) + if hyperFound { + providerList = append([]catwalk.Provider{hyperProvider}, slices.Collect(providers.Seq())...) + } else { + providerList = slices.Collect(providers.Seq()) + } providerErr = errors.Join(errs...) }) return providerList, providerErr diff --git a/internal/ui/dialog/models.go b/internal/ui/dialog/models.go index 1336459741c4557d29b93a389a67bca93b2766b9..b06c62662c27fcd5d79a95618bc988b9a9b57468 100644 --- a/internal/ui/dialog/models.go +++ b/internal/ui/dialog/models.go @@ -408,20 +408,8 @@ func (m *Models) setProviderItems() error { } } - // Move "Charm Hyper" to first position. - // (But still after recent models and custom providers). - slices.SortStableFunc(m.providers, func(a, b catwalk.Provider) int { - switch { - case a.ID == "hyper": - return -1 - case b.ID == "hyper": - return 1 - default: - return 0 - } - }) - - // Now add known providers from the predefined list + // Now add known providers from the predefined list. + // Providers already has Hyper at the front of the list. for _, provider := range m.providers { providerID := string(provider.ID) if addedProviders[providerID] {