53 lines
1.3 KiB
Rust
53 lines
1.3 KiB
Rust
use crate::{backend::wallet::WalletState, frontend::DisplayPage, messages::backend::BackendMessage};
|
|
|
|
#[derive(serde::Serialize, serde::Deserialize)]
|
|
pub struct WalletInterface {
|
|
wallet: Option<WalletState>,
|
|
}
|
|
|
|
impl WalletInterface {
|
|
pub fn new(wallet: Option<WalletState>) -> Self{
|
|
Self {
|
|
wallet,
|
|
}
|
|
}
|
|
pub fn set_wallet(&mut self, wallet: WalletState) {
|
|
self.wallet = Some(wallet);
|
|
}
|
|
|
|
pub fn wallet(&self) -> &Option<WalletState> {
|
|
&self.wallet
|
|
}
|
|
}
|
|
|
|
impl DisplayPage for WalletInterface {
|
|
fn show(&mut self, ctx: &egui::Context) -> Option<BackendMessage> {
|
|
egui::CentralPanel::default().show(ctx, |ui| {
|
|
ui.heading("Wallet Interface");
|
|
ui.separator();
|
|
ui.add_space(20.0);
|
|
ui.vertical_centered(|ui| {
|
|
egui::Grid::new("wallet_grid")
|
|
.num_columns(2)
|
|
.spacing([20.0, 10.0])
|
|
.striped(true)
|
|
.show(ui, |ui| {
|
|
if let Some(wallet) = &self.wallet {
|
|
ui.strong("Address:");
|
|
ui.label(format!("0x{}", &wallet.address));
|
|
ui.end_row();
|
|
|
|
ui.strong("Balance:");
|
|
ui.label(wallet.balance.to_string());
|
|
ui.end_row();
|
|
} else {
|
|
ui.spinner();
|
|
ui.label("Loading Wallet...");
|
|
}
|
|
})
|
|
})
|
|
});
|
|
None
|
|
}
|
|
}
|