Deprecate UiTokenAmount::ui_amount (bp #15616) (#15651)

* Deprecate UiTokenAmount::ui_amount (#15616)

* Add TokenAmount::ui_amount_string

* Fixup solana-tokens

* Update docs

(cherry picked from commit 19ac79b5cc)

# Conflicts:
#	storage-proto/proto/solana.storage.confirmed_block.rs

* Fix conflicts

Co-authored-by: Tyera Eulberg <teulberg@gmail.com>
Co-authored-by: Tyera Eulberg <tyera@solana.com>
This commit is contained in:
mergify[bot]
2021-03-03 20:12:06 +00:00
committed by GitHub
parent b775e8748c
commit 16ded2115c
11 changed files with 219 additions and 127 deletions

View File

@@ -104,6 +104,8 @@ pub struct UiTokenAmount {
pub decimals: u32,
#[prost(string, tag = "3")]
pub amount: std::string::String,
#[prost(string, tag = "4")]
pub ui_amount_string: std::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Reward {

View File

@@ -70,6 +70,7 @@ message UiTokenAmount {
double ui_amount = 1;
uint32 decimals = 2;
string amount = 3;
string ui_amount_string = 4;
}
enum RewardType {

View File

@@ -1,5 +1,5 @@
use crate::StoredExtendedRewards;
use solana_account_decoder::parse_token::UiTokenAmount;
use solana_account_decoder::parse_token::{real_number_string_trimmed, UiTokenAmount};
use solana_sdk::{
hash::Hash,
instruction::CompiledInstruction,
@@ -14,7 +14,10 @@ use solana_transaction_status::{
ConfirmedBlock, InnerInstructions, Reward, RewardType, TransactionByAddrInfo,
TransactionStatusMeta, TransactionTokenBalance, TransactionWithStatusMeta,
};
use std::convert::{TryFrom, TryInto};
use std::{
convert::{TryFrom, TryInto},
str::FromStr,
};
pub mod generated {
include!(concat!(
@@ -383,9 +386,10 @@ impl From<TransactionTokenBalance> for generated::TokenBalance {
account_index: value.account_index as u32,
mint: value.mint,
ui_token_amount: Some(generated::UiTokenAmount {
ui_amount: value.ui_token_amount.ui_amount,
ui_amount: value.ui_token_amount.ui_amount.unwrap_or_default(),
decimals: value.ui_token_amount.decimals as u32,
amount: value.ui_token_amount.amount,
ui_amount_string: value.ui_token_amount.ui_amount_string,
}),
}
}
@@ -398,9 +402,21 @@ impl From<generated::TokenBalance> for TransactionTokenBalance {
account_index: value.account_index as u8,
mint: value.mint,
ui_token_amount: UiTokenAmount {
ui_amount: ui_token_amount.ui_amount,
ui_amount: if (ui_token_amount.ui_amount - f64::default()).abs() > f64::EPSILON {
Some(ui_token_amount.ui_amount)
} else {
None
},
decimals: ui_token_amount.decimals as u8,
amount: ui_token_amount.amount,
amount: ui_token_amount.amount.clone(),
ui_amount_string: if !ui_token_amount.ui_amount_string.is_empty() {
ui_token_amount.ui_amount_string
} else {
real_number_string_trimmed(
u64::from_str(&ui_token_amount.amount).unwrap_or_default(),
ui_token_amount.decimals as u8,
)
},
},
}
}