Cleanup some flatbuffer usage
This commit is contained in:
parent
12aa5328ab
commit
078af89cae
|
@ -5,7 +5,7 @@
|
|||
use crate::coinconfig::CoinConfig;
|
||||
use crate::db::data_generated::fb::{
|
||||
AddressBalance, AddressBalanceArgs, AddressBalanceVec, AddressBalanceVecArgs, Backup,
|
||||
BackupArgs,
|
||||
BackupArgs, BackupT,
|
||||
};
|
||||
use crate::db::AccountData;
|
||||
use crate::key2::decode_key;
|
||||
|
@ -120,8 +120,7 @@ pub fn convert_to_watchonly(coin: u8, id_account: u32) -> anyhow::Result<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub fn get_backup_package(coin: u8, id_account: u32) -> anyhow::Result<Vec<u8>> {
|
||||
let mut builder = flatbuffers::FlatBufferBuilder::new();
|
||||
pub fn get_backup_package(coin: u8, id_account: u32) -> anyhow::Result<BackupT> {
|
||||
let c = CoinConfig::get(coin);
|
||||
let network = c.chain.network();
|
||||
let db = c.db()?;
|
||||
|
@ -133,9 +132,6 @@ pub fn get_backup_package(coin: u8, id_account: u32) -> anyhow::Result<Vec<u8>>
|
|||
aindex,
|
||||
..
|
||||
} = db.get_account_info(id_account)?;
|
||||
let name = builder.create_string(&name);
|
||||
let seed = seed.map(|seed| builder.create_string(&seed));
|
||||
let sk = sk.map(|sk| builder.create_string(&sk));
|
||||
let orchard_keys = db.get_orchard(id_account)?;
|
||||
let uvk = orchard_keys.map(|OrchardKeyBytes { fvk: ofvk, .. }| {
|
||||
// orchard sk is not serializable and must derived from seed
|
||||
|
@ -145,24 +141,17 @@ pub fn get_backup_package(coin: u8, id_account: u32) -> anyhow::Result<Vec<u8>>
|
|||
let sapling_dfvk = sapling_efvk.to_diversifiable_full_viewing_key();
|
||||
let orchard_fvk = orchard::keys::FullViewingKey::from_bytes(&ofvk);
|
||||
let ufvk = UnifiedFullViewingKey::new(Some(sapling_dfvk), orchard_fvk).unwrap();
|
||||
let ufvk = ufvk.encode(network);
|
||||
builder.create_string(&ufvk)
|
||||
ufvk.encode(network)
|
||||
});
|
||||
let fvk = builder.create_string(&fvk);
|
||||
let backup = Backup::create(
|
||||
&mut builder,
|
||||
&BackupArgs {
|
||||
let backup = BackupT {
|
||||
name: Some(name),
|
||||
seed,
|
||||
index: aindex,
|
||||
sk,
|
||||
fvk: Some(fvk),
|
||||
uvk,
|
||||
},
|
||||
);
|
||||
builder.finish(backup, None);
|
||||
let data = builder.finished_data().to_vec();
|
||||
Ok(data)
|
||||
};
|
||||
Ok(backup)
|
||||
}
|
||||
|
||||
/// Update the transparent secret key for the given account from a derivation path
|
||||
|
|
|
@ -5,6 +5,7 @@ use crate::note_selection::TransactionReport;
|
|||
use crate::{ChainError, TransactionPlan, Tx};
|
||||
use allo_isolate::{ffi, IntoDart};
|
||||
use android_logger::Config;
|
||||
use flatbuffers::FlatBufferBuilder;
|
||||
use lazy_static::lazy_static;
|
||||
use log::Level;
|
||||
use rusqlite::Connection;
|
||||
|
@ -238,8 +239,11 @@ pub unsafe extern "C" fn convert_to_watchonly(coin: u8, id_account: u32) -> CRes
|
|||
#[no_mangle]
|
||||
pub unsafe extern "C" fn get_backup(coin: u8, id_account: u32) -> CResult<*const u8> {
|
||||
let res = || {
|
||||
let backup_bytes = crate::api::account::get_backup_package(coin, id_account)?;
|
||||
Ok::<_, anyhow::Error>(backup_bytes)
|
||||
let mut builder = FlatBufferBuilder::new();
|
||||
let backup = crate::api::account::get_backup_package(coin, id_account)?;
|
||||
let backup_bytes = backup.pack(&mut builder);
|
||||
builder.finish(backup_bytes, None);
|
||||
Ok::<_, anyhow::Error>(builder.finished_data().to_vec())
|
||||
};
|
||||
|
||||
to_cresult_bytes(res())
|
||||
|
@ -925,8 +929,11 @@ pub unsafe extern "C" fn get_notes(coin: u8, id: u32) -> CResult<*const u8> {
|
|||
#[no_mangle]
|
||||
pub unsafe extern "C" fn get_txs(coin: u8, id: u32) -> CResult<*const u8> {
|
||||
let res = |connection: &Connection| {
|
||||
let data = crate::db::read::get_txs(connection, id)?;
|
||||
Ok(data)
|
||||
let shielded_txs = crate::db::read::get_txs(connection, id)?;
|
||||
let mut builder = FlatBufferBuilder::new();
|
||||
let shielded_txs = shielded_txs.pack(&mut builder);
|
||||
builder.finish(shielded_txs, None);
|
||||
Ok(builder.finished_data().to_vec())
|
||||
};
|
||||
to_cresult_bytes(with_account(coin, res))
|
||||
}
|
||||
|
|
|
@ -243,8 +243,7 @@ pub fn get_notes(connection: &Connection, id: u32) -> Result<Vec<u8>> {
|
|||
Ok(data)
|
||||
}
|
||||
|
||||
pub fn get_txs(connection: &Connection, id: u32) -> Result<Vec<u8>> {
|
||||
let mut builder = flatbuffers::FlatBufferBuilder::new();
|
||||
pub fn get_txs(connection: &Connection, id: u32) -> Result<ShieldedTxVecT> {
|
||||
let mut stmt = connection.prepare(
|
||||
"SELECT id_tx, txid, height, timestamp, t.address, c.name AS cname, a.name AS aname, value, memo FROM transactions t \
|
||||
LEFT JOIN contacts c ON t.address = c.address \
|
||||
|
@ -260,42 +259,29 @@ pub fn get_txs(connection: &Connection, id: u32) -> Result<Vec<u8>> {
|
|||
let timestamp: u32 = row.get("timestamp")?;
|
||||
let contact_name: Option<String> = row.get("cname")?;
|
||||
let account_name: Option<String> = row.get("aname")?;
|
||||
let name = contact_name.or(account_name).unwrap_or(String::new());
|
||||
let name = contact_name.or(account_name);
|
||||
let value: i64 = row.get("value")?;
|
||||
let address: Option<String> = row.get("address")?;
|
||||
let memo: Option<String> = row.get("memo")?;
|
||||
let address = address.unwrap_or(String::new());
|
||||
let memo = memo.unwrap_or(String::new());
|
||||
let tx_id = builder.create_string(&tx_id);
|
||||
let short_tx_id = builder.create_string(&short_tx_id);
|
||||
let name = builder.create_string(&name);
|
||||
let address = builder.create_string(&address);
|
||||
let memo = builder.create_string(&memo);
|
||||
let tx = ShieldedTx::create(
|
||||
&mut builder,
|
||||
&ShieldedTxArgs {
|
||||
let tx = ShieldedTxT {
|
||||
id: id_tx,
|
||||
height,
|
||||
tx_id: Some(tx_id),
|
||||
short_tx_id: Some(short_tx_id),
|
||||
timestamp,
|
||||
name: Some(name),
|
||||
name,
|
||||
value: value as u64,
|
||||
address: Some(address),
|
||||
memo: Some(memo),
|
||||
},
|
||||
);
|
||||
address,
|
||||
memo,
|
||||
};
|
||||
Ok(tx)
|
||||
})?;
|
||||
let mut txs = vec![];
|
||||
for r in rows {
|
||||
txs.push(r?);
|
||||
}
|
||||
let txs = builder.create_vector(&txs);
|
||||
let txs = ShieldedTxVec::create(&mut builder, &ShieldedTxVecArgs { txs: Some(txs) });
|
||||
builder.finish(txs, None);
|
||||
let data = builder.finished_data().to_vec();
|
||||
Ok(data)
|
||||
let txs = ShieldedTxVecT { txs: Some(txs) };
|
||||
Ok(txs)
|
||||
}
|
||||
|
||||
pub fn get_messages(connection: &Connection, id: u32) -> Result<Vec<u8>> {
|
||||
|
|
Loading…
Reference in New Issue