Merge pull request #275 from PR0M3TH3AN/codex/modify-list-entry-mode-behavior

Enhance list entry navigation
This commit is contained in:
thePR0M3TH3AN
2025-07-05 10:32:03 -04:00
committed by GitHub
2 changed files with 21 additions and 17 deletions

View File

@@ -874,13 +874,13 @@ class EntryManager:
def get_entry_summaries( def get_entry_summaries(
self, filter_kind: str | None = None self, filter_kind: str | None = None
) -> list[tuple[int, str]]: ) -> list[tuple[int, str, str]]:
"""Return a list of entry index and display labels.""" """Return a list of entry index, type, and display labels."""
try: try:
data = self.vault.load_index() data = self.vault.load_index()
entries_data = data.get("entries", {}) entries_data = data.get("entries", {})
summaries: list[tuple[int, str]] = [] summaries: list[tuple[int, str, str]] = []
for idx_str, entry in entries_data.items(): for idx_str, entry in entries_data.items():
etype = entry.get("type", entry.get("kind", EntryType.PASSWORD.value)) etype = entry.get("type", entry.get("kind", EntryType.PASSWORD.value))
if filter_kind and etype != filter_kind: if filter_kind and etype != filter_kind:
@@ -889,7 +889,7 @@ class EntryManager:
label = entry.get("label", entry.get("website", "")) label = entry.get("label", entry.get("website", ""))
else: else:
label = entry.get("label", etype) label = entry.get("label", etype)
summaries.append((int(idx_str), label)) summaries.append((int(idx_str), etype, label))
summaries.sort(key=lambda x: x[0]) summaries.sort(key=lambda x: x[0])
return summaries return summaries

View File

@@ -1895,19 +1895,23 @@ class PasswordManager:
summaries = self.entry_manager.get_entry_summaries(filter_kind) summaries = self.entry_manager.get_entry_summaries(filter_kind)
if not summaries: if not summaries:
continue continue
print(colored("\n[+] Entries:\n", "green")) while True:
for idx, label in summaries: print(colored("\n[+] Entries:\n", "green"))
print(colored(f"{idx}. {label}", "cyan")) for idx, etype, label in summaries:
idx_input = input( if filter_kind is None:
"Enter index to view details or press Enter to return: " display_type = etype.capitalize()
).strip() print(colored(f"{idx}. {display_type} - {label}", "cyan"))
if not idx_input: else:
return print(colored(f"{idx}. {label}", "cyan"))
if not idx_input.isdigit(): idx_input = input(
print(colored("Invalid index.", "red")) "Enter index to view details or press Enter to go back: "
continue ).strip()
self.show_entry_details_by_index(int(idx_input)) if not idx_input:
return break
if not idx_input.isdigit():
print(colored("Invalid index.", "red"))
continue
self.show_entry_details_by_index(int(idx_input))
except Exception as e: except Exception as e:
logging.error(f"Failed to list entries: {e}", exc_info=True) logging.error(f"Failed to list entries: {e}", exc_info=True)
print(colored(f"Error: Failed to list entries: {e}", "red")) print(colored(f"Error: Failed to list entries: {e}", "red"))