|
|
@@ -40,6 +40,22 @@ use crate::{
|
|
|
|
|
|
use super::data::*;
|
|
|
|
|
|
+/// Format an address for display: first 8 and last 8 chars, space-grouped
|
|
|
+/// in pairs of 4, e.g. "abcd efgh...wxyz 1234".
|
|
|
+pub fn format_address(addr: &str) -> String {
|
|
|
+ let chars: Vec<char> = addr.chars().collect();
|
|
|
+ if chars.len() <= 16 {
|
|
|
+ return addr.to_string()
|
|
|
+ }
|
|
|
+ let group = |c: &[char]| -> String {
|
|
|
+ let s: String = c.iter().collect();
|
|
|
+ format!("{} {}", &s[..4], &s[4..])
|
|
|
+ };
|
|
|
+ let head = group(&chars[..8]);
|
|
|
+ let tail = group(&chars[chars.len() - 8..]);
|
|
|
+ format!("{head}...{tail}")
|
|
|
+}
|
|
|
+
|
|
|
pub async fn get_balance(sg_root: &SceneNodePtr, token_id: &TokenId) -> u64 {
|
|
|
let Some(drk_node) = sg_root.lookup_node("/plugin/drk") else { return 0 };
|
|
|
let Ok(Some(response_data)) = drk_node.call_method("get_balances", vec![]).await else {
|