Skip to content
Snippets Groups Projects

Automatically add accounts to a known list after performing the appropriate actions

Merged Jakub Ziebinski requested to merge jziebinski/known-accounts into develop
1 file
+ 16
0
Compare changes
  • Side-by-side
  • Inline
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:
Loading