package ui import ( "context" "github.com/rivo/tview" ) // confirmDelete asks before removing a title from the library. Deleting the // files is a separate, unticked choice: by default only the library entry goes. func (a *App) confirmDelete(label, summary string, onDelete func(deleteFiles, exclude bool)) { box, _ := a.newDeleteDialog(label, summary, onDelete) a.openModal(box, 66, 14) } func (a *App) newDeleteDialog(label, summary string, onDelete func(deleteFiles, exclude bool)) (*tview.Flex, *tview.Form) { const ( lFiles = "Delete files from disk" lExclude = "Don't let import lists re-add it" ) text := tview.NewTextView().SetDynamicColors(true).SetWordWrap(true). SetText("[::b]" + label + "[::-]\n" + summary) form := tview.NewForm() form.AddCheckbox(lFiles, false, nil) form.AddCheckbox(lExclude, false, nil) files := form.GetFormItemByLabel(lFiles).(*tview.Checkbox) exclude := form.GetFormItemByLabel(lExclude).(*tview.Checkbox) // Cancel first so a stray Enter is safe. form.AddButton("Cancel", a.closeModal) form.AddButton("Delete", func() { a.closeModal() onDelete(files.IsChecked(), exclude.IsChecked()) }) form.SetFocus(form.GetFormItemCount()) // the Cancel button arrowNavigation(form, a.closeModal, nil) box := tview.NewFlex().SetDirection(tview.FlexRow). AddItem(text, 4, 0, false). AddItem(form, 0, 1, true) box.SetBorder(true).SetTitle(" Remove from library ") return box, form } // remove asks to delete the selected library item. func (v *libraryView) remove() { it, ok := v.selected() if !ok { return } summary := "[gray]Untick “Delete files” to keep the files on disk.[-]" if it.have { summary = "[yellow]" + it.size + " on disk.[-] Files are kept unless you tick “Delete files”." } v.app.confirmDelete(it.label, summary, func(deleteFiles, exclude bool) { what := "Removed " + it.label if deleteFiles { what = "Removed " + it.label + " and its files" } v.run("Removing "+it.label, what, func(ctx context.Context) error { if it.movie != nil { return v.radarr.DeleteMovie(ctx, it.id, deleteFiles, exclude) } return v.sonarr.DeleteSeries(ctx, it.id, deleteFiles, exclude) }, v.reload) }) }