From 59cf46e1cb37f8ac6abe07a55efd75f4fbc6b652 Mon Sep 17 00:00:00 2001 From: ardocrat Date: Mon, 9 Mar 2026 21:33:11 +0300 Subject: [PATCH] feat: open modal to send amount on address scan --- .../views/wallets/wallet/account/content.rs | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/gui/views/wallets/wallet/account/content.rs b/src/gui/views/wallets/wallet/account/content.rs index d34ebe09..2698cd9f 100644 --- a/src/gui/views/wallets/wallet/account/content.rs +++ b/src/gui/views/wallets/wallet/account/content.rs @@ -23,6 +23,7 @@ use crate::gui::views::wallets::wallet::account::create::CreateAccountContent; use crate::gui::views::wallets::wallet::types::{WalletContentContainer, GRIN}; use crate::gui::views::{CameraContent, CameraScanContent, Content, Modal, View}; use crate::gui::Colors; +use crate::gui::views::wallets::wallet::request::SendRequestContent; use crate::wallet::{Wallet, WalletConfig}; use crate::wallet::types::{WalletAccount, WalletTask}; @@ -37,15 +38,20 @@ pub struct WalletAccountContent { qr_scan_content: Option, /// QR code scan result qr_scan_result: Option, + /// Send request creation [`Modal`] content. + send_content: Option, } /// Account creation [`Modal`] identifier. const CREATE_MODAL_ID: &'static str = "create_account_modal"; +/// Identifier for sending request creation [`Modal`]. +const SEND_MODAL_ID: &'static str = "account_send_request_modal"; impl WalletContentContainer for WalletAccountContent { fn modal_ids(&self) -> Vec<&'static str> { vec![ - CREATE_MODAL_ID + CREATE_MODAL_ID, + SEND_MODAL_ID ] } @@ -56,6 +62,11 @@ impl WalletContentContainer for WalletAccountContent { cb: &dyn PlatformCallbacks) { match modal.id { CREATE_MODAL_ID => self.create_account_content.ui(ui, wallet, modal, cb), + SEND_MODAL_ID => { + if let Some(c) = self.send_content.as_mut() { + c.modal_ui(ui, wallet, modal, cb); + } + } _ => {} } } @@ -83,6 +94,7 @@ impl Default for WalletAccountContent { create_account_content: CreateAccountContent::default(), qr_scan_content: None, qr_scan_result: None, + send_content: None, } } } @@ -297,8 +309,17 @@ impl WalletAccountContent { cb.stop_camera(); self.qr_scan_content = None; match result { - QrScanResult::Address(_) => { - //TODO: send with address + QrScanResult::Address(a) => { + if let Some(data) = wallet.get_data() { + //if data.info.amount_currently_spendable > 0 { + let address = Some(a.to_string()); + self.send_content = Some(SendRequestContent::new(address)); + Modal::new(SEND_MODAL_ID) + .position(ModalPosition::CenterTop) + .title(t!("wallets.send")) + .show(); + //} + } } QrScanResult::Slatepack(m) => { wallet.task(WalletTask::OpenMessage(m));