mirror of
https://github.com/jwinterm/grin-wallet.git
synced 2026-10-28 19:38:32 +01:00
slatepack: return concrete error on sync workflow instead of none, optimize sending requirement detection
This commit is contained in:
+83
-55
@@ -431,18 +431,37 @@ where
|
||||
if let Some(b) = args.bridge.clone() {
|
||||
c.bridge.bridge_line = Some(b);
|
||||
}
|
||||
if let Some(s) = args.skip_tor {
|
||||
c.skip_send_attempt = Some(s);
|
||||
}
|
||||
Some(c)
|
||||
}
|
||||
None => None,
|
||||
};
|
||||
|
||||
let res = try_slatepack_sync_workflow(&slate, &args.dest, tor_config, None, false, test_mode);
|
||||
let output_sp = || -> Result<(), Error> {
|
||||
Ok(output_slatepack(
|
||||
owner_api,
|
||||
keychain_mask,
|
||||
&slate,
|
||||
args.dest.as_str(),
|
||||
args.outfile,
|
||||
true,
|
||||
false,
|
||||
args.slatepack_qr,
|
||||
)?)
|
||||
};
|
||||
|
||||
let can_send = if let Some(tc) = tor_config.as_ref() {
|
||||
tc.skip_send(args.skip_tor)
|
||||
} else {
|
||||
false
|
||||
};
|
||||
if test_mode || !can_send {
|
||||
return output_sp();
|
||||
}
|
||||
|
||||
let res = try_slatepack_sync_workflow(&slate, &args.dest, tor_config, None, false);
|
||||
|
||||
match res {
|
||||
Ok(Some(s)) => {
|
||||
Ok(s) => {
|
||||
controller::owner_single_use(None, keychain_mask, Some(owner_api), |api, m| {
|
||||
api.tx_lock_outputs(m, &s)?;
|
||||
let ret_slate = api.finalize_tx(m, &s)?;
|
||||
@@ -459,19 +478,10 @@ where
|
||||
}
|
||||
})?;
|
||||
}
|
||||
Ok(None) => {
|
||||
output_slatepack(
|
||||
owner_api,
|
||||
keychain_mask,
|
||||
&slate,
|
||||
args.dest.as_str(),
|
||||
args.outfile,
|
||||
true,
|
||||
false,
|
||||
args.slatepack_qr,
|
||||
)?;
|
||||
Err(e) => {
|
||||
error!("Error sending slate sync: {}", e);
|
||||
output_sp()?;
|
||||
}
|
||||
Err(e) => return Err(e.into()),
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
@@ -668,9 +678,6 @@ where
|
||||
if let Some(b) = args.bridge {
|
||||
c.bridge.bridge_line = Some(b);
|
||||
}
|
||||
if let Some(s) = args.skip_tor {
|
||||
c.skip_send_attempt = Some(s);
|
||||
}
|
||||
Some(c)
|
||||
}
|
||||
None => None,
|
||||
@@ -686,33 +693,45 @@ where
|
||||
None => String::from(""),
|
||||
};
|
||||
|
||||
let res = try_slatepack_sync_workflow(&slate, &dest, tor_config, None, true, test_mode);
|
||||
let output_sp = || -> Result<(), Error> {
|
||||
Ok(output_slatepack(
|
||||
owner_api,
|
||||
keychain_mask,
|
||||
&slate,
|
||||
&dest,
|
||||
args.outfile,
|
||||
false,
|
||||
false,
|
||||
args.slatepack_qr,
|
||||
)?)
|
||||
};
|
||||
|
||||
let can_send = if let Some(tc) = tor_config.as_ref() {
|
||||
tc.skip_send(args.skip_tor)
|
||||
} else {
|
||||
false
|
||||
};
|
||||
if test_mode || !can_send {
|
||||
return output_sp();
|
||||
}
|
||||
|
||||
let res = try_slatepack_sync_workflow(&slate, &dest, tor_config, None, true);
|
||||
|
||||
match res {
|
||||
Ok(Some(_)) => {
|
||||
Ok(_) => {
|
||||
println!();
|
||||
println!(
|
||||
"Transaction received and sent back to sender at {} for finalization.",
|
||||
dest
|
||||
);
|
||||
println!();
|
||||
Ok(())
|
||||
}
|
||||
Ok(None) => {
|
||||
output_slatepack(
|
||||
owner_api,
|
||||
keychain_mask,
|
||||
&slate,
|
||||
&dest,
|
||||
args.outfile,
|
||||
false,
|
||||
false,
|
||||
args.slatepack_qr,
|
||||
)?;
|
||||
Ok(())
|
||||
Err(e) => {
|
||||
error!("Error sending slate sync: {}", e);
|
||||
output_sp()?;
|
||||
}
|
||||
Err(e) => Err(e.into()),
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn unpack<L, C, K>(
|
||||
@@ -1012,41 +1031,50 @@ where
|
||||
if let Some(b) = args.bridge {
|
||||
c.bridge.bridge_line = Some(b);
|
||||
}
|
||||
if let Some(skip_tor) = args.skip_tor {
|
||||
c.skip_send_attempt = Some(skip_tor);
|
||||
}
|
||||
Some(c)
|
||||
}
|
||||
None => None,
|
||||
};
|
||||
|
||||
let res = try_slatepack_sync_workflow(&slate, &dest, tor_config, None, true, test_mode);
|
||||
let output_sp = || -> Result<(), Error> {
|
||||
Ok(output_slatepack(
|
||||
owner_api,
|
||||
keychain_mask,
|
||||
&slate,
|
||||
&dest,
|
||||
args.outfile,
|
||||
true,
|
||||
false,
|
||||
args.slatepack_qr,
|
||||
)?)
|
||||
};
|
||||
|
||||
let can_send = if let Some(tc) = tor_config.as_ref() {
|
||||
tc.skip_send(args.skip_tor)
|
||||
} else {
|
||||
false
|
||||
};
|
||||
if test_mode || !can_send {
|
||||
return output_sp();
|
||||
}
|
||||
|
||||
let res = try_slatepack_sync_workflow(&slate, &dest, tor_config, None, true);
|
||||
|
||||
match res {
|
||||
Ok(Some(_)) => {
|
||||
Ok(_) => {
|
||||
println!();
|
||||
println!(
|
||||
"Transaction paid and sent back to initiator at {} for finalization.",
|
||||
dest
|
||||
);
|
||||
println!();
|
||||
Ok(())
|
||||
}
|
||||
Ok(None) => {
|
||||
output_slatepack(
|
||||
owner_api,
|
||||
keychain_mask,
|
||||
&slate,
|
||||
&dest,
|
||||
args.outfile,
|
||||
true,
|
||||
false,
|
||||
args.slatepack_qr,
|
||||
)?;
|
||||
Ok(())
|
||||
Err(e) => {
|
||||
error!("Error sending slate sync: {}", e);
|
||||
output_sp()?;
|
||||
}
|
||||
Err(e) => Err(e.into()),
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Info command args
|
||||
|
||||
Reference in New Issue
Block a user