From 49c2501fbc9cc5a228981d7c2c095815b5f023ff Mon Sep 17 00:00:00 2001 From: zarzet Date: Wed, 25 Mar 2026 21:47:31 +0700 Subject: [PATCH] refactor: use pointer returns and unified forceRefresh in ExtensionStore --- go_backend/exports.go | 6 +----- go_backend/extension_store.go | 27 +++++++++++++++++---------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/go_backend/exports.go b/go_backend/exports.go index a1cf605b..f26f263e 100644 --- a/go_backend/exports.go +++ b/go_backend/exports.go @@ -3214,11 +3214,7 @@ func GetStoreExtensionsJSON(forceRefresh bool) (string, error) { return "", fmt.Errorf("extension store not initialized") } - if forceRefresh { - store.FetchRegistry(true) - } - - extensions, err := store.GetExtensionsWithStatus() + extensions, err := store.getExtensionsWithStatus(forceRefresh) if err != nil { return "", err } diff --git a/go_backend/extension_store.go b/go_backend/extension_store.go index 22ac2d0a..ed8915ab 100644 --- a/go_backend/extension_store.go +++ b/go_backend/extension_store.go @@ -97,8 +97,8 @@ type StoreExtensionResponse struct { HasUpdate bool `json:"has_update"` } -func (e *StoreExtension) ToResponse() StoreExtensionResponse { - return StoreExtensionResponse{ +func (e *StoreExtension) ToResponse() *StoreExtensionResponse { + return &StoreExtensionResponse{ ID: e.ID, Name: e.Name, DisplayName: e.getDisplayName(), @@ -289,8 +289,8 @@ func (s *ExtensionStore) FetchRegistry(forceRefresh bool) (*StoreRegistry, error return ®istry, nil } -func (s *ExtensionStore) GetExtensionsWithStatus() ([]StoreExtensionResponse, error) { - registry, err := s.FetchRegistry(false) +func (s *ExtensionStore) getExtensionsWithStatus(forceRefresh bool) ([]*StoreExtensionResponse, error) { + registry, err := s.FetchRegistry(forceRefresh) if err != nil { return nil, err } @@ -304,22 +304,29 @@ func (s *ExtensionStore) GetExtensionsWithStatus() ([]StoreExtensionResponse, er } } - result := make([]StoreExtensionResponse, len(registry.Extensions)) - for i, ext := range registry.Extensions { - resp := ext.ToResponse() + LogDebug("ExtensionStore", "Building store response for %d registry extensions (%d installed)", len(registry.Extensions), len(installed)) + result := make([]*StoreExtensionResponse, 0, len(registry.Extensions)) + for i := range registry.Extensions { + ext := ®istry.Extensions[i] + resp := ext.ToResponse() if installedVersion, ok := installed[ext.ID]; ok { resp.IsInstalled = true resp.InstalledVersion = installedVersion resp.HasUpdate = compareVersions(ext.Version, installedVersion) > 0 } - result[i] = resp + result = append(result, resp) } + LogDebug("ExtensionStore", "Built store response payload for %d extensions", len(result)) return result, nil } +func (s *ExtensionStore) GetExtensionsWithStatus() ([]*StoreExtensionResponse, error) { + return s.getExtensionsWithStatus(false) +} + func (s *ExtensionStore) DownloadExtension(extensionID string, destPath string) error { registry, err := s.FetchRegistry(false) if err != nil { @@ -470,7 +477,7 @@ func (s *ExtensionStore) GetCategories() []string { } } -func (s *ExtensionStore) SearchExtensions(query string, category string) ([]StoreExtensionResponse, error) { +func (s *ExtensionStore) SearchExtensions(query string, category string) ([]*StoreExtensionResponse, error) { extensions, err := s.GetExtensionsWithStatus() if err != nil { return nil, err @@ -480,7 +487,7 @@ func (s *ExtensionStore) SearchExtensions(query string, category string) ([]Stor return extensions, nil } - var result []StoreExtensionResponse + result := make([]*StoreExtensionResponse, 0, len(extensions)) queryLower := toLower(query) for _, ext := range extensions {