From dc16f0d8a13125243b44f029c8acecbad35c19ec Mon Sep 17 00:00:00 2001 From: Mukhtar Akere Date: Thu, 23 Jan 2025 03:06:11 +0100 Subject: [PATCH] Fix arr storage --- pkg/arr/arr.go | 2 +- pkg/qbit/server/templates/repair.html | 9 +++++-- pkg/qbit/server/ui_handlers.go | 35 +++++++++------------------ 3 files changed, 20 insertions(+), 26 deletions(-) diff --git a/pkg/arr/arr.go b/pkg/arr/arr.go index 38e7bd4..34e5210 100644 --- a/pkg/arr/arr.go +++ b/pkg/arr/arr.go @@ -98,7 +98,7 @@ func NewStorage(cfg []common.ArrConfig) *Storage { func (as *Storage) AddOrUpdate(arr *Arr) { as.mu.Lock() defer as.mu.Unlock() - as.Arrs[arr.Host] = arr + as.Arrs[arr.Name] = arr } func (as *Storage) Get(name string) *Arr { diff --git a/pkg/qbit/server/templates/repair.html b/pkg/qbit/server/templates/repair.html index e23a890..e277be1 100644 --- a/pkg/qbit/server/templates/repair.html +++ b/pkg/qbit/server/templates/repair.html @@ -60,6 +60,13 @@ submitBtn.disabled = true; submitBtn.innerHTML = 'Repairing...'; let mediaIds = document.getElementById('mediaIds').value.split(',').map(id => id.trim()); + let arr = document.getElementById('arrSelect').value; + if (!arr) { + alert('Please select an Arr instance'); + submitBtn.disabled = false; + submitBtn.innerHTML = originalText; + return; + } try { const response = await fetch('/internal/repair', { method: 'POST', @@ -74,8 +81,6 @@ }); if (!response.ok) throw new Error(await response.text()); - - const result = await response.json(); alert('Repair process initiated successfully!'); } catch (error) { alert(`Error starting repair: ${error.message}`); diff --git a/pkg/qbit/server/ui_handlers.go b/pkg/qbit/server/ui_handlers.go index c9acca9..149727b 100644 --- a/pkg/qbit/server/ui_handlers.go +++ b/pkg/qbit/server/ui_handlers.go @@ -176,15 +176,8 @@ func (u *uiHandler) handleRepairMedia(w http.ResponseWriter, r *http.Request) { } _arr := u.qbit.Arrs.Get(req.ArrName) - arrs := make([]*arr.Arr, 0) - if _arr != nil { - arrs = append(arrs, _arr) - } else { - arrs = u.qbit.Arrs.GetAll() - } - - if len(arrs) == 0 { - http.Error(w, "No arrays found to repair", http.StatusNotFound) + if _arr == nil { + http.Error(w, "No Arrs found to repair", http.StatusNotFound) return } @@ -194,26 +187,22 @@ func (u *uiHandler) handleRepairMedia(w http.ResponseWriter, r *http.Request) { } if req.Async { - for _, a := range arrs { - for _, tvId := range mediaIds { - go func() { - err := a.Repair(tvId) - if err != nil { - u.logger.Info().Msgf("Failed to repair: %v", err) - } - }() - } + for _, tvId := range mediaIds { + go func() { + err := _arr.Repair(tvId) + if err != nil { + u.logger.Info().Msgf("Failed to repair: %v", err) + } + }() } common.JSONResponse(w, "Repair process started", http.StatusOK) return } var errs []error - for _, a := range arrs { - for _, tvId := range mediaIds { - if err := a.Repair(tvId); err != nil { - errs = append(errs, err) - } + for _, tvId := range mediaIds { + if err := _arr.Repair(tvId); err != nil { + errs = append(errs, err) } }