Skip to content
Snippets Groups Projects
Commit a207b3fd authored by Jakub Ziebinski's avatar Jakub Ziebinski Committed by Jakub Ziebinski
Browse files

Add the appropriate account to the known list after operations are completed

parent 5a4384f9
No related branches found
No related tags found
No related merge requests found
This commit is part of merge request !467. Comments created here will be created in the context of that merge request.
from __future__ import annotations
import contextlib
from typing import TYPE_CHECKING, Any, ClassVar, Final, Literal
from pydantic import ValidationError
from textual.binding import Binding
from textual.css.query import NoMatches
from clive.__private.abstract_class import AbstractClassMessagePump
from clive.__private.core import iwax
......@@ -12,6 +14,7 @@ from clive.__private.ui.clive_screen import CliveScreen
from clive.__private.ui.clive_widget import CliveWidget
from clive.__private.ui.screens.cart.cart import Cart
from clive.__private.ui.screens.transaction_summary import TransactionSummaryFromCart
from clive.__private.ui.widgets.inputs.account_name_input import AccountNameInput
from clive.__private.ui.widgets.inputs.clive_validated_input import (
CliveValidatedInputError,
)
......@@ -109,11 +112,13 @@ class OperationActionBindings(CliveWidget, AbstractClassMessagePump):
def action_finalize(self) -> None:
if self._add_to_cart():
self._add_account_to_known_after_action()
self.app.switch_screen(TransactionSummaryFromCart())
self.app.push_screen_at(-1, Cart())
def action_add_to_cart(self) -> None:
if self._add_to_cart():
self._add_account_to_known_after_action()
self._pop_screen_on_successfully_added_to_cart()
def _pop_screen_on_successfully_added_to_cart(self) -> None:
......@@ -128,6 +133,7 @@ class OperationActionBindings(CliveWidget, AbstractClassMessagePump):
return
await self.__fast_broadcast()
self._add_account_to_known_after_action()
@CliveScreen.try_again_after_unlock
async def __fast_broadcast(self) -> None:
......@@ -178,6 +184,16 @@ class OperationActionBindings(CliveWidget, AbstractClassMessagePump):
self.app.trigger_profile_watchers()
return True
def _add_account_to_known_after_action(self) -> None:
with contextlib.suppress(NoMatches):
account_inputs = self.query(AccountNameInput)
for account_input in account_inputs:
if account_input.add_to_known and not self.profile.accounts.is_account_known(
account_input.value_or_error
):
account_input.add_account_to_known()
def ensure_operations_list(self) -> list[OperationUnion]:
operation = self.create_operation()
if operation is not None:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment