Disable 'Search now' when nothing will be monitored

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-20 20:01:35 +02:00
co-authored by Claude Sonnet 5.5
parent 6668f91e7a
commit 5afaa15649
+33 -2
View File
@@ -13,6 +13,7 @@ import (
"git.stinnesbeck.com/nils/arr-tui/internal/arr"
"git.stinnesbeck.com/nils/arr-tui/internal/config"
"git.stinnesbeck.com/nils/arr-tui/internal/sonarr"
)
const (
@@ -310,12 +311,42 @@ func (v *searchView) add(i int) {
}
form.AddCheckbox(lMonitor, true, nil).AddCheckbox(lSearch, true, nil)
// Radarr and Sonarr skip unmonitored items in an automatic search, so
// "Search now" only makes sense when something will be monitored.
monitored := form.GetFormItemByLabel(lMonitor).(*tview.Checkbox)
searchNow := form.GetFormItemByLabel(lSearch).(*tview.Checkbox)
wantSearch := true
searchable := func() bool {
if !monitored.IsChecked() {
return false
}
return len(modes) == 0 || modes[selected(form, lEpisode)].value != sonarr.MonitorNone
}
syncSearch := func() {
if searchable() {
searchNow.SetDisabled(false)
searchNow.SetChecked(wantSearch)
return
}
searchNow.SetDisabled(true)
searchNow.SetChecked(false)
}
searchNow.SetChangedFunc(func(checked bool) {
if searchable() {
wantSearch = checked
}
})
monitored.SetChangedFunc(func(bool) { syncSearch() })
if len(modes) > 0 {
form.GetFormItemByLabel(lEpisode).(*tview.DropDown).SetSelectedFunc(func(string, int) { syncSearch() })
}
form.AddButton("Add", func() {
choice := addChoice{
profileID: profiles[selected(form, lProfile)].ID,
folder: folders[selected(form, lFolder)].Path,
monitored: form.GetFormItemByLabel(lMonitor).(*tview.Checkbox).IsChecked(),
searchNow: form.GetFormItemByLabel(lSearch).(*tview.Checkbox).IsChecked(),
monitored: monitored.IsChecked(),
searchNow: searchNow.IsChecked() && searchable(),
}
if len(modes) > 0 {
choice.monitor = modes[selected(form, lEpisode)].value