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
while True:
print(colored("\n[+] Entries:\n", "green")) print(colored("\n[+] Entries:\n", "green"))
for idx, label in summaries: for idx, etype, label in summaries:
if filter_kind is None:
display_type = etype.capitalize()
print(colored(f"{idx}. {display_type} - {label}", "cyan"))
else:
print(colored(f"{idx}. {label}", "cyan")) print(colored(f"{idx}. {label}", "cyan"))
idx_input = input( idx_input = input(
"Enter index to view details or press Enter to return: " "Enter index to view details or press Enter to go back: "
).strip() ).strip()
if not idx_input: if not idx_input:
return break
if not idx_input.isdigit(): if not idx_input.isdigit():
print(colored("Invalid index.", "red")) print(colored("Invalid index.", "red"))
continue continue
self.show_entry_details_by_index(int(idx_input)) self.show_entry_details_by_index(int(idx_input))
return
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"))