from __future__ import annotations


def edit_mode_enabled(st) -> bool:
    try:
        return bool(st.session_state.get("jarvis_edit_mode", False))
    except Exception:
        return False


def read_only_hint(st) -> None:
    st.info("Bearbeiten aktivieren, um diese Aktion auszuführen.")


def action_button(st, label: str, *, key: str | None = None, edit_required: bool = True) -> bool:
    disabled = edit_required and not edit_mode_enabled(st)
    clicked = st.button(label, key=key, disabled=disabled)
    if disabled:
        return False
    return bool(clicked)


def open_crypto_manage(st, action: str, *, asset_id: str | None = None, wallet_id: str | None = None) -> None:
    st.session_state["crypto_manage_action"] = action
    if asset_id:
        st.session_state["crypto_manage_asset_id"] = asset_id
        st.session_state["selected_crypto_asset_id"] = asset_id
    if wallet_id:
        st.session_state["crypto_manage_wallet_id"] = wallet_id
        st.session_state["selected_crypto_wallet_id"] = wallet_id
