From 18760e174cafe3a1a5d8b22d861183619fa5753f Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Santos Souza de Miranda Date: Tue, 15 Jul 2025 02:14:53 -0300 Subject: [PATCH] Add a functionality that automatically opens the diary after creation, Change the responsibility of diary creation to the new_diary_modal.py instead of the diary_list_screen.py --- src/pilgrim/ui/screens/diary_list_screen.py | 30 +++++++-------------- src/pilgrim/ui/screens/new_diary_modal.py | 26 +++++++++++++++--- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/src/pilgrim/ui/screens/diary_list_screen.py b/src/pilgrim/ui/screens/diary_list_screen.py index 066fbae..b553ed2 100644 --- a/src/pilgrim/ui/screens/diary_list_screen.py +++ b/src/pilgrim/ui/screens/diary_list_screen.py @@ -206,29 +206,17 @@ class DiaryListScreen(Screen): """Action to create new diary""" self.app.push_screen(NewDiaryModal(),self._on_new_diary_submitted) - def _on_new_diary_submitted(self,result): - self.notify(str(result)) - if result: - self.notify(f"Creating Diary:{result}'...") - self.call_later(self._async_create_diary,result) + def _on_new_diary_submitted(self, result): + """Callback after diary creation""" + if result: # Se result não é string vazia, o diário foi criado + self.notify(f"Returning to diary list...") + # Atualiza a lista de diários + self.refresh_diaries() else: - self.notify(f"Canceled...") - - async def _async_create_diary(self,name: str): - - try: - service = self.app.service_manager.get_travel_diary_service() - created_diary = await service.async_create(name) - if created_diary: - self.diary_id_map[created_diary.id] = created_diary.id - await self.async_refresh_diaries() - self.notify(f"Diary: '{name}' created!") - else: - self.notify("Error Creating the diary") - except Exception as e: - self.notify(f"Exception on creating the diary: {str(e)}") - + self.notify(f"Creation canceled...") + def _on_screen_resume(self) -> None: + self.refresh_diaries() def action_edit_selected_diary(self): """Action to edit selected diary""" diff --git a/src/pilgrim/ui/screens/new_diary_modal.py b/src/pilgrim/ui/screens/new_diary_modal.py index cafd468..2238875 100644 --- a/src/pilgrim/ui/screens/new_diary_modal.py +++ b/src/pilgrim/ui/screens/new_diary_modal.py @@ -4,14 +4,17 @@ from textual.containers import Vertical, Horizontal from textual.screen import ModalScreen from textual.widgets import Label, Input, Button +from pilgrim.ui.screens.edit_entry_screen import EditEntryScreen + class NewDiaryModal(ModalScreen[str]): BINDINGS = [ Binding("escape", "cancel", "Cancel"), Binding("enter", "create_diary", "Create",priority=True), ] - def __init__(self): + def __init__(self,autoopen=True): super().__init__() + self.auto_open = autoopen self.name_input = Input(id="NewDiaryModal-NameInput",classes="NewDiaryModal-NameInput") # This ID is fine, it's specific to the input def compose(self) -> ComposeResult: @@ -34,7 +37,7 @@ class NewDiaryModal(ModalScreen[str]): if event.button.id == "create_diary_button": self.action_create_diary() elif event.button.id == "cancel_button": - self.dismiss("") + self.dismiss() def action_cancel(self) -> None: """Action to cancel the modal.""" @@ -43,7 +46,7 @@ class NewDiaryModal(ModalScreen[str]): def action_create_diary(self) -> None: diary_name = self.name_input.value.strip() if diary_name: - self.dismiss(diary_name) + self.call_later(self._async_create_diary, diary_name) else: self.notify("Diary name cannot be empty.", severity="warning") self.name_input.focus() @@ -52,3 +55,20 @@ class NewDiaryModal(ModalScreen[str]): if event.input.id == "NewDiaryModal-NameInput": self.action_create_diary() + async def _async_create_diary(self, name: str): + + try: + service = self.app.service_manager.get_travel_diary_service() + created_diary = await service.async_create(name) + if created_diary: + self.dismiss(name) + self.app.push_screen(EditEntryScreen(diary_id=created_diary.id)) + self.notify(f"Diary: '{name}' created!") + else: + self.notify("Error Creating the diary") + except Exception as e: + self.notify(f"Exception on creating the diary: {str(e)}") + + + +