use crate::{backend::wallet::WalletState, frontend::DisplayPage, messages::backend::BackendMessage}; #[derive(serde::Serialize, serde::Deserialize)] pub struct WalletInterface { wallet: Option, } impl WalletInterface { pub fn new(wallet: Option) -> Self{ Self { wallet, } } pub fn set_wallet(&mut self, wallet: WalletState) { self.wallet = Some(wallet); } pub fn wallet(&self) -> &Option { &self.wallet } } impl DisplayPage for WalletInterface { fn show(&mut self, ctx: &egui::Context) -> Option { 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 } }