mirror of
https://github.com/overcuriousity/trace.git
synced 2025-12-20 04:52:21 +00:00
Fix case_detail delete logic order bug
The delete handler was checking case notes first, then evidence, but the display order is evidence first, then notes. This caused: - Selecting evidence + pressing 'd' -> asked to delete a note - Selecting note + pressing 'd' -> asked to delete evidence Fixed by reordering the checks to match display order: 1. Check if index < len(evidence) -> delete evidence 2. Otherwise check if in notes range -> delete note Now delete correctly targets the selected item type.
This commit is contained in:
33
trace/tui.py
33
trace/tui.py
@@ -2404,25 +2404,15 @@ class TUI:
|
||||
self.show_message(f"Case {case_to_del.case_number} deleted.")
|
||||
|
||||
elif self.current_view == "case_detail" and self.active_case:
|
||||
# Determine if we're deleting a note or evidence based on selected index
|
||||
# Determine if we're deleting evidence or note based on selected index
|
||||
case_notes = self.active_case.notes
|
||||
filtered = self._get_filtered_list(self.active_case.evidence, "name", "description")
|
||||
|
||||
# Check if selecting a note (indices 0 to len(notes)-1)
|
||||
if self.selected_index < len(case_notes):
|
||||
# Delete case note
|
||||
note_to_del = case_notes[self.selected_index]
|
||||
preview = note_to_del.content[:50] + "..." if len(note_to_del.content) > 50 else note_to_del.content
|
||||
if self.dialog_confirm(f"Delete note: '{preview}'?"):
|
||||
self.active_case.notes.remove(note_to_del)
|
||||
self.storage.save_data()
|
||||
self.selected_index = 0
|
||||
self.scroll_offset = 0
|
||||
self.show_message("Note deleted.")
|
||||
elif filtered and self.selected_index - len(case_notes) < len(filtered):
|
||||
# Delete evidence (adjust index by subtracting case notes count)
|
||||
evidence_idx = self.selected_index - len(case_notes)
|
||||
ev_to_del = filtered[evidence_idx]
|
||||
# Evidence items come first (indices 0 to len(filtered)-1)
|
||||
# Case notes come second (indices len(filtered) to len(filtered)+len(case_notes)-1)
|
||||
if self.selected_index < len(filtered):
|
||||
# Delete evidence
|
||||
ev_to_del = filtered[self.selected_index]
|
||||
if self.dialog_confirm(f"Delete Evidence {ev_to_del.name}?"):
|
||||
self.storage.delete_evidence(self.active_case.case_id, ev_to_del.evidence_id)
|
||||
# Check active state
|
||||
@@ -2437,6 +2427,17 @@ class TUI:
|
||||
self.selected_index = 0
|
||||
self.scroll_offset = 0
|
||||
self.show_message(f"Evidence '{ev_to_del.name}' deleted.")
|
||||
elif case_notes and self.selected_index - len(filtered) < len(case_notes):
|
||||
# Delete case note (adjust index by subtracting evidence count)
|
||||
note_idx = self.selected_index - len(filtered)
|
||||
note_to_del = case_notes[note_idx]
|
||||
preview = note_to_del.content[:50] + "..." if len(note_to_del.content) > 50 else note_to_del.content
|
||||
if self.dialog_confirm(f"Delete note: '{preview}'?"):
|
||||
self.active_case.notes.remove(note_to_del)
|
||||
self.storage.save_data()
|
||||
self.selected_index = 0
|
||||
self.scroll_offset = 0
|
||||
self.show_message("Note deleted.")
|
||||
|
||||
elif self.current_view == "evidence_detail" and self.active_evidence:
|
||||
# Delete individual notes from evidence
|
||||
|
||||
Reference in New Issue
Block a user