various changes and cleanups
This commit is contained in:
parent
5e96792e30
commit
bac7b716c5
10 changed files with 42 additions and 31 deletions
|
|
@ -254,18 +254,21 @@ class Signable:
|
|||
subext = 'subtx'
|
||||
|
||||
async def sign(self, f, compat_call=False):
|
||||
tx = await self.do_sign(f, compat_call=compat_call)
|
||||
tx.write(ask_write=False)
|
||||
return tx
|
||||
|
||||
async def do_sign(self, f, compat_call=False):
|
||||
from .. import xmrwallet
|
||||
from ..xmrwallet.file.tx import MoneroMMGenTX
|
||||
tx1 = MoneroMMGenTX.Completed(self.parent.xmrwallet_cfg, f)
|
||||
tx = MoneroMMGenTX.Completed(self.parent.xmrwallet_cfg, f)
|
||||
m = xmrwallet.op(
|
||||
'sign',
|
||||
self.parent.xmrwallet_cfg,
|
||||
infile = str(self.parent.wallet_files[0]), # MMGen wallet file
|
||||
wallets = str(tx1.src_wallet_idx),
|
||||
wallets = str(tx.src_wallet_idx),
|
||||
compat_call = compat_call)
|
||||
tx2 = await m.main(f, restart_daemon=self.need_daemon_restart(m, tx1.src_wallet_idx))
|
||||
tx2.write(ask_write=False)
|
||||
return tx2
|
||||
return await m.main(f, restart_daemon=self.need_daemon_restart(m, tx.src_wallet_idx))
|
||||
|
||||
class xmr_compat_transaction(xmr_transaction):
|
||||
desc = 'Monero compat transaction'
|
||||
|
|
|
|||
|
|
@ -186,7 +186,8 @@ async def process_tx(tx):
|
|||
|
||||
if not cfg.yes:
|
||||
tx.info.view_with_prompt('View transaction details?')
|
||||
if tx.add_comment() and not cfg.autosign: # edits existing comment, returns true if changed
|
||||
# edits existing comment, returns true if changed:
|
||||
if tx.add_comment() and not cfg.autosign:
|
||||
tx.file.write(ask_write_default_yes=True)
|
||||
|
||||
return await tx.send(txcfg, asi, batch=batch)
|
||||
|
|
|
|||
|
|
@ -28,8 +28,8 @@ class Completed(Base):
|
|||
|
||||
@cached_property
|
||||
def compat_tx(self):
|
||||
from pathlib import Path
|
||||
from ....xmrwallet.file.tx import MoneroMMGenTX
|
||||
from pathlib import Path
|
||||
return MoneroMMGenTX.View(self.cfg, Path(self.filename)) # View = Completed with silent open
|
||||
|
||||
@cached_property
|
||||
|
|
@ -45,5 +45,5 @@ class Completed(Base):
|
|||
from ....tx.info import TxInfo
|
||||
class info_cls(TxInfo):
|
||||
def format(info_self, *args, **kwargs):
|
||||
return self.compat_tx.get_info(full_address=True)
|
||||
return self.compat_tx.get_info(full_address=True, indent=' ', is_swap=self.is_swap)
|
||||
return info_cls(self.cfg, self)
|
||||
|
|
|
|||
|
|
@ -48,12 +48,14 @@ class OnlineSigned(Completed):
|
|||
await op.restart_wallet_daemon()
|
||||
return int(not await op.main())
|
||||
|
||||
class Sent(OnlineSigned):
|
||||
desc = 'sent transaction'
|
||||
|
||||
class AutomountOnlineSigned(OnlineSigned):
|
||||
desc = 'signed automount transaction'
|
||||
ext = 'asigtx'
|
||||
|
||||
class AutomountSent(AutomountOnlineSigned):
|
||||
class Sent(OnlineSigned):
|
||||
desc = 'sent transaction'
|
||||
ext = 'asubtx'
|
||||
|
||||
class AutomountSent(OnlineSigned):
|
||||
desc = 'sent automount transaction'
|
||||
ext = 'asubtx'
|
||||
|
|
|
|||
|
|
@ -13,8 +13,9 @@ proto.xmr.tx.unsigned: Monero unsigned transaction class
|
|||
from .completed import Completed
|
||||
|
||||
class Unsigned(Completed):
|
||||
pass
|
||||
desc = 'unsigned transaction'
|
||||
ext = 'rawtx'
|
||||
|
||||
class AutomountUnsigned(Unsigned):
|
||||
class AutomountUnsigned(Completed):
|
||||
desc = 'unsigned automount transaction'
|
||||
ext = 'arawtx'
|
||||
|
|
|
|||
|
|
@ -133,8 +133,6 @@ class MMGenTxFile(MMGenObject):
|
|||
|
||||
tx.parse_txfile_serialized_data() # Ethereum RLP or JSON data
|
||||
|
||||
assert tx.proto.coin_amt(data['send_amt']) == tx.send_amt, f'{data["send_amt"]} != {tx.send_amt}'
|
||||
|
||||
def parse_data_legacy(self, data, get_proto_only):
|
||||
tx = self.tx
|
||||
tx.file_format = 'legacy'
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ class MoneroMMGenTX:
|
|||
d.dest_address.hl(0),
|
||||
x = '->')
|
||||
|
||||
def get_info(self, *, indent='', addr_col_w=None, full_address=False):
|
||||
def get_info(self, *, indent='', addr_col_w=None, full_address=False, is_swap=False):
|
||||
d = self.data
|
||||
pmt_id = d.dest_address.parsed.payment_id
|
||||
fs = '\n'.join(list_gen(
|
||||
|
|
@ -111,7 +111,7 @@ class MoneroMMGenTX:
|
|||
[' Amount: {m} XMR'],
|
||||
[' Priority: {F}', d.priority],
|
||||
[' Fee: {n} XMR'],
|
||||
[' Dest: {o}'],
|
||||
[' {dest} {{o}}'.format(dest='Vault:' if is_swap else 'Dest: ')],
|
||||
[' Size: {Z} bytes', d.signed_txset],
|
||||
[' Payment ID: {P}', pmt_id]))
|
||||
|
||||
|
|
@ -157,10 +157,8 @@ class MoneroMMGenTX:
|
|||
b = self.data.amount,
|
||||
c = '' if self.data.network == 'mainnet' else f'.{self.data.network}',
|
||||
d = self.ext)
|
||||
|
||||
if self.cfg.autosign:
|
||||
fn = getattr(get_autosign_obj(self.cfg), self.tx_dir) / fn
|
||||
|
||||
from ...fileutil import write_data_to_file
|
||||
write_data_to_file(
|
||||
cfg = self.cfg,
|
||||
|
|
|
|||
|
|
@ -105,7 +105,10 @@ class CmdTestMisc(CmdTestBase):
|
|||
def bch_txview_cashaddr2(self):
|
||||
return self._bch_txview(1, 1, '[1HpynST7vkLn8yNtdrqPfeghexZk4sdB3W]')
|
||||
|
||||
def xmr_txview(self, tdir='test/ref/monero', ext='asubtx'):
|
||||
def xmr_txview(self):
|
||||
return self._xmr_txview(tdir='test/ref/monero', ext='tx')
|
||||
|
||||
def _xmr_txview(self, tdir, ext):
|
||||
if self.cfg.no_altcoin:
|
||||
return 'skip'
|
||||
files = get_file_with_ext(tdir, ext, no_dot=True, delete=False, return_list=True)
|
||||
|
|
@ -113,25 +116,26 @@ class CmdTestMisc(CmdTestBase):
|
|||
t.read()
|
||||
return t
|
||||
|
||||
def xmrwallet_txview(self, op='txview'):
|
||||
def xmrwallet_txlist(self):
|
||||
return self._xmrwallet_txview(op='txlist', search_pat='3EBD06-.*D94583-.*8BFA29-')
|
||||
|
||||
def xmrwallet_txview(self):
|
||||
return self._xmrwallet_txview(search_list=('Amount: 0.74 XMR', 'Dest: 56VQ9M6k'))
|
||||
|
||||
def _xmrwallet_txview(self, tdir='test/ref/monero', op='txview', search_list=None, search_pat=None):
|
||||
if self.cfg.no_altcoin:
|
||||
return 'skip'
|
||||
files = get_file_with_ext('test/ref/monero', 'tx', no_dot=True, delete=False, return_list=True)
|
||||
files = get_file_with_ext(tdir, 'tx', no_dot=True, delete=False, return_list=True)
|
||||
t = self.spawn('mmgen-xmrwallet', [op] + files)
|
||||
res = t.read(strip_color=True)
|
||||
match op:
|
||||
case 'txview':
|
||||
for s in (
|
||||
'Amount: 0.74 XMR',
|
||||
'Dest: 56VQ9M6k'):
|
||||
for s in search_list:
|
||||
assert s in res, f'{s} not in {res}'
|
||||
case 'txlist':
|
||||
assert re.search('3EBD06-.*D94583-.*8BFA29-', res, re.DOTALL)
|
||||
assert re.search(search_pat, res, re.DOTALL), f'pattern {search_pat} not found'
|
||||
return t
|
||||
|
||||
def xmrwallet_txlist(self):
|
||||
return self.xmrwallet_txview(op='txlist')
|
||||
|
||||
def examples_bip_hd(self):
|
||||
if self.cfg.no_altcoin:
|
||||
return 'skip'
|
||||
|
|
|
|||
|
|
@ -895,6 +895,7 @@ class CmdTestXMRCompat(CmdTestXMRAutosign):
|
|||
+ add_opts
|
||||
+ args,
|
||||
exit_val = exit_val)
|
||||
|
||||
if exit_val:
|
||||
pass
|
||||
elif '--abort' in opts:
|
||||
|
|
@ -913,8 +914,10 @@ class CmdTestXMRCompat(CmdTestXMRAutosign):
|
|||
t.expect('(y/N): ', 'y') # save?
|
||||
elif op == 'txsend' and not '--status' in opts:
|
||||
t.expect('(y/N): ', 'y') # view?
|
||||
|
||||
if expect_str:
|
||||
t.expect(expect_str, regex=True)
|
||||
|
||||
t.read() # required!
|
||||
self.remove_device_online()
|
||||
return t
|
||||
|
|
|
|||
|
|
@ -113,12 +113,13 @@ class CmdTestXMRSwapMethods:
|
|||
'expect_pats': expect_pats},
|
||||
output_args = args)
|
||||
|
||||
def _swaptxsend_refnum(self, expect_pat, *, add_opts=[], is_xmr=False):
|
||||
def _swaptxsend_refnum(self, expect_pat, *, add_opts=[], is_xmr=False, no_wait=False):
|
||||
return self._user_txsend(
|
||||
'bob',
|
||||
add_opts = ['--monero-wallet-rpc-password=abc'] + add_opts,
|
||||
expect_pat = expect_pat,
|
||||
is_xmr = is_xmr,
|
||||
no_wait = no_wait,
|
||||
need_rbf = True)
|
||||
|
||||
class CmdTestXMRSwap(CmdTestXMRSwapMethods, CmdTestSwap):
|
||||
|
|
|
|||
Loading…
Reference in a new issue