add parameter target to the log event on each page
Signed-off-by: Uncle Stretch <uncle.stretch@ghostchain.io>
This commit is contained in:
		
							parent
							
								
									493a4db663
								
							
						
					
					
						commit
						8f63c7483d
					
				| @ -5,7 +5,8 @@ use subxt::utils::H256; | ||||
| use subxt::config::substrate::DigestItem; | ||||
| 
 | ||||
| use crate::types::{ | ||||
|     ActionLevel, CasperExtrinsicDetails, EraInfo, EraRewardPoints, Nominator, PeerInformation, SessionKeyInfo, SystemAccount | ||||
|     ActionLevel, ActionTarget, CasperExtrinsicDetails, EraInfo, EraRewardPoints, 
 | ||||
|     Nominator, PeerInformation, SessionKeyInfo, SystemAccount, | ||||
| }; | ||||
| 
 | ||||
| #[derive(Debug, Clone, PartialEq, Eq, Display, Serialize, Deserialize)] | ||||
| @ -46,8 +47,7 @@ pub enum Action { | ||||
|     TransferTo(String), | ||||
| 
 | ||||
|     TransferBalance(String, [u8; 32], u128), | ||||
|     WalletLog(String, ActionLevel), | ||||
|     ValidatorLog(String, ActionLevel), | ||||
|     EventLog(String, ActionLevel, ActionTarget), | ||||
| 
 | ||||
|     NewBestBlock(u32), | ||||
|     NewBestHash(H256), | ||||
|  | ||||
| @ -20,7 +20,7 @@ use crate::{ | ||||
| }; | ||||
| 
 | ||||
| #[derive(Debug, Default)] | ||||
| struct WalletLog { | ||||
| struct LogDetails { | ||||
|     time: chrono::DateTime<chrono::Local>, | ||||
|     level: ActionLevel, | ||||
|     message: String, | ||||
| @ -31,7 +31,7 @@ pub struct EventLogs { | ||||
|     is_active: bool, | ||||
|     scroll_state: ScrollbarState, | ||||
|     table_state: TableState, | ||||
|     logs: std::collections::VecDeque<WalletLog>, | ||||
|     logs: std::collections::VecDeque<LogDetails>, | ||||
|     palette: StylePalette | ||||
| } | ||||
| 
 | ||||
| @ -43,7 +43,7 @@ impl Default for EventLogs { | ||||
|             scroll_state: Default::default(), | ||||
|             table_state: Default::default(), | ||||
|             logs: std::collections::VecDeque::from(vec![ | ||||
|                 WalletLog { | ||||
|                 LogDetails { | ||||
|                     time: chrono::Local::now(), | ||||
|                     level: ActionLevel::Warn, | ||||
|                     message: "NOT FINALIZED PAGE! NEEDED IN ORDER TO SEE VALIDATORS POINTS".to_string(), | ||||
| @ -58,7 +58,7 @@ impl EventLogs { | ||||
|     //const MAX_LOGS: usize = 50;
 | ||||
| 
 | ||||
|     //fn add_new_log(&mut self, message: String, level: ActionLevel) {
 | ||||
|     //    self.logs.push_front(WalletLog {
 | ||||
|     //    self.logs.push_front(LogDetails {
 | ||||
|     //        time: chrono::Local::now(),
 | ||||
|     //        level,
 | ||||
|     //        message,
 | ||||
| @ -156,7 +156,8 @@ impl Component for EventLogs { | ||||
| 
 | ||||
|     fn update(&mut self, _action: Action) -> Result<Option<Action>> { | ||||
|         //match action {
 | ||||
|         //    Action::ValidatorLog(message, level) => self.add_new_log(message, level),
 | ||||
|         //    Action::EventLog(message, level, target) if target == ActionTarget::NominatorLog => 
 | ||||
|         //    self.add_new_log(message, level),
 | ||||
|         //    _ => {}
 | ||||
|         //};
 | ||||
|         Ok(None) | ||||
|  | ||||
| @ -13,14 +13,11 @@ use ratatui::{ | ||||
| 
 | ||||
| use super::{Component, PartialComponent, CurrentTab}; | ||||
| use crate::{ | ||||
|     types::ActionLevel, | ||||
|     action::Action, 
 | ||||
|     config::Config, 
 | ||||
|     palette::StylePalette, 
 | ||||
|     action::Action, config::Config, palette::StylePalette, types::{ActionLevel, ActionTarget} 
 | ||||
| }; | ||||
| 
 | ||||
| #[derive(Debug, Default)] | ||||
| struct WalletLog { | ||||
| struct LogDetails { | ||||
|     time: chrono::DateTime<chrono::Local>, | ||||
|     level: ActionLevel, | ||||
|     message: String, | ||||
| @ -31,7 +28,7 @@ pub struct EventLogs { | ||||
|     is_active: bool, | ||||
|     scroll_state: ScrollbarState, | ||||
|     table_state: TableState, | ||||
|     logs: std::collections::VecDeque<WalletLog>, | ||||
|     logs: std::collections::VecDeque<LogDetails>, | ||||
|     palette: StylePalette | ||||
| } | ||||
| 
 | ||||
| @ -39,7 +36,7 @@ impl EventLogs { | ||||
|     const MAX_LOGS: usize = 50; | ||||
| 
 | ||||
|     fn add_new_log(&mut self, message: String, level: ActionLevel) { | ||||
|         self.logs.push_front(WalletLog { | ||||
|         self.logs.push_front(LogDetails { | ||||
|             time: chrono::Local::now(), | ||||
|             level, | ||||
|             message, | ||||
| @ -137,7 +134,8 @@ impl Component for EventLogs { | ||||
| 
 | ||||
|     fn update(&mut self, action: Action) -> Result<Option<Action>> { | ||||
|         match action { | ||||
|             Action::ValidatorLog(message, level) => self.add_new_log(message, level), | ||||
|             Action::EventLog(message, level, target) if target == ActionTarget::ValidatorLog => 
 | ||||
|                 self.add_new_log(message, level), | ||||
|             _ => {} | ||||
|         }; | ||||
|         Ok(None) | ||||
|  | ||||
| @ -29,7 +29,7 @@ use std::sync::mpsc::Sender; | ||||
| 
 | ||||
| use super::{PartialComponent, Component, CurrentTab}; | ||||
| use crate::casper::CasperConfig; | ||||
| use crate::types::ActionLevel; | ||||
| use crate::types::{ActionLevel, ActionTarget}; | ||||
| use crate::{ | ||||
|     types::SessionKeyInfo, | ||||
|     action::Action, 
 | ||||
| @ -76,7 +76,8 @@ impl StashInfo { | ||||
| 
 | ||||
|     fn log_event(&mut self, message: String, level: ActionLevel) { | ||||
|         if let Some(action_tx) = &self.action_tx { | ||||
|             let _ = action_tx.send(Action::ValidatorLog(message, level)); | ||||
|             let _ = action_tx.send( | ||||
|                 Action::EventLog(message, level, ActionTarget::ValidatorLog)); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -24,7 +24,7 @@ use tokio::sync::mpsc::UnboundedSender; | ||||
| use std::sync::mpsc::Sender; | ||||
| 
 | ||||
| use super::{PartialComponent, Component, CurrentTab}; | ||||
| use crate::types::{SystemAccount, ActionLevel}; | ||||
| use crate::types::{ActionLevel, ActionTarget, SystemAccount}; | ||||
| use crate::widgets::DotSpinner; | ||||
| use crate::{ | ||||
|     action::Action, 
 | ||||
| @ -96,7 +96,8 @@ impl Accounts { | ||||
| 
 | ||||
|     fn log_event(&mut self, message: String, level: ActionLevel) { | ||||
|         if let Some(action_tx) = &self.action_tx { | ||||
|             let _ = action_tx.send(Action::WalletLog(message, level)); | ||||
|             let _ = action_tx.send( | ||||
|                 Action::EventLog(message, level, ActionTarget::WalletLog)); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -19,7 +19,7 @@ use tokio::sync::mpsc::UnboundedSender; | ||||
| use std::sync::mpsc::Sender; | ||||
| 
 | ||||
| use super::{Component, PartialComponent, CurrentTab}; | ||||
| use crate::types::{ActionLevel, SystemAccount}; | ||||
| use crate::types::{ActionLevel, ActionTarget, SystemAccount}; | ||||
| use crate::widgets::DotSpinner; | ||||
| use crate::{ | ||||
|     action::Action, 
 | ||||
| @ -94,7 +94,8 @@ impl AddressBook { | ||||
| 
 | ||||
|     fn log_event(&mut self, message: String, level: ActionLevel) { | ||||
|         if let Some(action_tx) = &self.action_tx { | ||||
|             let _ = action_tx.send(Action::WalletLog(message, level)); | ||||
|             let _ = action_tx.send( | ||||
|                 Action::EventLog(message, level, ActionTarget::WalletLog)); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -13,14 +13,14 @@ use ratatui::{ | ||||
| 
 | ||||
| use super::{Component, PartialComponent, CurrentTab}; | ||||
| use crate::{ | ||||
|     types::ActionLevel, | ||||
|     action::Action, 
 | ||||
|     config::Config, 
 | ||||
|     palette::StylePalette, 
 | ||||
|     types::{ActionLevel, ActionTarget}, | ||||
| }; | ||||
| 
 | ||||
| #[derive(Debug, Default)] | ||||
| struct WalletLog { | ||||
| struct LogDetails { | ||||
|     time: chrono::DateTime<chrono::Local>, | ||||
|     level: ActionLevel, | ||||
|     message: String, | ||||
| @ -31,7 +31,7 @@ pub struct EventLogs { | ||||
|     is_active: bool, | ||||
|     scroll_state: ScrollbarState, | ||||
|     table_state: TableState, | ||||
|     logs: std::collections::VecDeque<WalletLog>, | ||||
|     logs: std::collections::VecDeque<LogDetails>, | ||||
|     palette: StylePalette | ||||
| } | ||||
| 
 | ||||
| @ -39,7 +39,7 @@ impl EventLogs { | ||||
|     const MAX_LOGS: usize = 50; | ||||
| 
 | ||||
|     fn add_new_log(&mut self, message: String, level: ActionLevel) { | ||||
|         self.logs.push_front(WalletLog { | ||||
|         self.logs.push_front(LogDetails { | ||||
|             time: chrono::Local::now(), | ||||
|             level, | ||||
|             message, | ||||
| @ -137,7 +137,8 @@ impl Component for EventLogs { | ||||
| 
 | ||||
|     fn update(&mut self, action: Action) -> Result<Option<Action>> { | ||||
|         match action { | ||||
|             Action::WalletLog(message, level) => self.add_new_log(message, level), | ||||
|             Action::EventLog(message, level, target) if target == ActionTarget::WalletLog => 
 | ||||
|                 self.add_new_log(message, level), | ||||
|             _ => {} | ||||
|         }; | ||||
|         Ok(None) | ||||
|  | ||||
| @ -17,7 +17,7 @@ use crate::{ | ||||
|     action::Action, 
 | ||||
|     config::Config, 
 | ||||
|     palette::StylePalette, 
 | ||||
|     types::ActionLevel, 
 | ||||
|     types::{ActionLevel, ActionTarget}, 
 | ||||
|     widgets::{Input, InputRequest}, | ||||
| }; | ||||
| 
 | ||||
| @ -61,7 +61,8 @@ impl Transfer { | ||||
| 
 | ||||
|     fn log_event(&mut self, message: String, level: ActionLevel) { | ||||
|         if let Some(action_tx) = &self.action_tx { | ||||
|             let _ = action_tx.send(Action::WalletLog(message, level)); | ||||
|             let _ = action_tx.send( | ||||
|                 Action::EventLog(message, level, ActionTarget::WalletLog)); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -17,13 +17,18 @@ mod raw_calls; | ||||
| pub use miscellaneous::{prepare_perbill_fraction_string, calculate_for_fraction}; | ||||
| 
 | ||||
| use crate::{ | ||||
|     types::ActionLevel, | ||||
|     types::{ActionLevel, ActionTarget}, | ||||
|     action::Action, 
 | ||||
|     casper::CasperConfig, | ||||
| }; | ||||
| 
 | ||||
| pub use subscriptions::{FinalizedSubscription, BestSubscription}; | ||||
| 
 | ||||
| struct TxToWatch { | ||||
|     tx_progress: TxProgress<CasperConfig, OnlineClient<CasperConfig>>, | ||||
|     target: ActionTarget, | ||||
| } | ||||
| 
 | ||||
| pub struct Network { | ||||
|     action_tx: UnboundedSender<Action>, | ||||
|     online_client_api: OnlineClient<CasperConfig>, | ||||
| @ -32,7 +37,7 @@ pub struct Network { | ||||
|     finalized_hash: Option<H256>, | ||||
|     stash_to_watch: Option<[u8; 32]>, | ||||
|     accounts_to_watch: std::collections::HashSet<[u8; 32]>, | ||||
|     transactions_to_watch: Vec<TxProgress<CasperConfig, OnlineClient<CasperConfig>>>, | ||||
|     transactions_to_watch: Vec<TxToWatch>, | ||||
|     senders: std::collections::HashMap<String, u32>, | ||||
| } | ||||
| 
 | ||||
| @ -103,34 +108,35 @@ impl Network { | ||||
|                 let length = self.transactions_to_watch.len(); | ||||
|                 for i in (0..length).rev() { | ||||
|                     let pending_tx = &mut self.transactions_to_watch[i]; | ||||
|                     let ext_hash = pending_tx.extrinsic_hash(); | ||||
|                     match (*pending_tx).next().await { | ||||
|                     let ext_hash = pending_tx.tx_progress.extrinsic_hash(); | ||||
|                     let log_target = pending_tx.target.clone(); | ||||
|                     match (*pending_tx).tx_progress.next().await { | ||||
|                         Some(Ok(status)) => { | ||||
|                             match status { | ||||
|                                 TxStatus::Validated => self.action_tx.send(Action::WalletLog(format!("transaction {} is part of future queue", ext_hash), ActionLevel::Info))?, | ||||
|                                 TxStatus::Broadcasted { num_peers } => self.action_tx.send(Action::WalletLog(format!("transaction {} has been broardcasted to {} nodes", ext_hash, num_peers), ActionLevel::Info))?, | ||||
|                                 TxStatus::NoLongerInBestBlock => self.action_tx.send(Action::WalletLog(format!("transaction {} is no longer in a best block", ext_hash), ActionLevel::Warn))?, | ||||
|                                 TxStatus::InBestBlock(b) => self.action_tx.send(Action::WalletLog(format!("transaction {} included in the block header {}", b.extrinsic_hash(), b.block_hash()), ActionLevel::Info))?, | ||||
|                                 TxStatus::Validated => self.action_tx.send(Action::EventLog(format!("transaction {} is part of future queue", ext_hash), ActionLevel::Info, log_target))?, | ||||
|                                 TxStatus::Broadcasted { num_peers } => self.action_tx.send(Action::EventLog(format!("transaction {} has been broardcasted to {} nodes", ext_hash, num_peers), ActionLevel::Info, log_target))?, | ||||
|                                 TxStatus::NoLongerInBestBlock => self.action_tx.send(Action::EventLog(format!("transaction {} is no longer in a best block", ext_hash), ActionLevel::Warn, log_target))?, | ||||
|                                 TxStatus::InBestBlock(b) => self.action_tx.send(Action::EventLog(format!("transaction {} included in the block header {}", b.extrinsic_hash(), b.block_hash()), ActionLevel::Info, log_target))?, | ||||
|                                 TxStatus::InFinalizedBlock(b) => { | ||||
|                                     self.action_tx.send(Action::WalletLog(format!("transaction {} has been finalized in block header {}", b.extrinsic_hash(), b.block_hash()), ActionLevel::Info))?; | ||||
|                                     self.action_tx.send(Action::EventLog(format!("transaction {} has been finalized in block header {}", b.extrinsic_hash(), b.block_hash()), ActionLevel::Info, log_target))?; | ||||
|                                     self.transactions_to_watch.remove(i); | ||||
|                                 } | ||||
|                                 TxStatus::Error { message } => { | ||||
|                                     self.action_tx.send(Action::WalletLog(format!("transaction {} error, something get wrong: {message}", ext_hash), ActionLevel::Error))?; | ||||
|                                     self.action_tx.send(Action::EventLog(format!("transaction {} error, something get wrong: {message}", ext_hash), ActionLevel::Error, log_target))?; | ||||
|                                     self.transactions_to_watch.remove(i); | ||||
|                                 } | ||||
|                                 TxStatus::Invalid { message } => { | ||||
|                                     self.action_tx.send(Action::WalletLog(format!("transaction {} invalid: {message}", ext_hash), ActionLevel::Error))?; | ||||
|                                     self.action_tx.send(Action::EventLog(format!("transaction {} invalid: {message}", ext_hash), ActionLevel::Error, log_target))?; | ||||
|                                     self.transactions_to_watch.remove(i); | ||||
|                                 } | ||||
|                                 TxStatus::Dropped { message } => { | ||||
|                                     self.action_tx.send(Action::WalletLog(format!("transaction {} was dropped: {message}", ext_hash), ActionLevel::Error))?; | ||||
|                                     self.action_tx.send(Action::EventLog(format!("transaction {} was dropped: {message}", ext_hash), ActionLevel::Error, log_target))?; | ||||
|                                     self.transactions_to_watch.remove(i); | ||||
|                                 } | ||||
|                             } | ||||
|                         }, | ||||
|                         _ => { | ||||
|                             self.action_tx.send(Action::WalletLog(format!("transaction {} was dropped", ext_hash), ActionLevel::Error))?; | ||||
|                             self.action_tx.send(Action::EventLog(format!("transaction {} was dropped", ext_hash), ActionLevel::Error, log_target))?; | ||||
|                             self.transactions_to_watch.remove(i); | ||||
|                         } | ||||
|                     } | ||||
| @ -222,7 +228,10 @@ impl Network { | ||||
|                     &amount, | ||||
|                     maybe_nonce, | ||||
|                 ).await { | ||||
|                     self.transactions_to_watch.push(tx_progress); | ||||
|                     self.transactions_to_watch.push(TxToWatch { | ||||
|                         tx_progress, | ||||
|                         target: ActionTarget::WalletLog, | ||||
|                     }); | ||||
|                 } | ||||
|                 Ok(()) | ||||
|             } | ||||
|  | ||||
| @ -8,7 +8,7 @@ use tokio::sync::mpsc::UnboundedSender; | ||||
| 
 | ||||
| use crate::{ | ||||
|     action::Action, 
 | ||||
|     types::ActionLevel, | ||||
|     types::{ActionLevel, ActionTarget}, | ||||
|     casper::{CasperExtrinsicParamsBuilder, CasperConfig}, 
 | ||||
|     casper_network, 
 | ||||
| }; | ||||
| @ -47,14 +47,17 @@ pub async fn transfer_balance( | ||||
|         .sign_and_submit_then_watch(&transfer_tx, &signer, tx_params) | ||||
|         .await { | ||||
|             Ok(tx_progress) => { | ||||
|                 action_tx.send(Action::WalletLog( | ||||
|                 action_tx.send(Action::EventLog( | ||||
|                         format!("transfer transaction {} sent", tx_progress.extrinsic_hash()), | ||||
|                         ActionLevel::Info))?; | ||||
|                         ActionLevel::Info, | ||||
|                         ActionTarget::WalletLog))?; | ||||
|                 Ok(tx_progress) | ||||
|             }, | ||||
|             Err(err) => { | ||||
|                 action_tx.send(Action::WalletLog( | ||||
|                         format!("error during transfer: {err}"), ActionLevel::Error))?; | ||||
|                 action_tx.send(Action::EventLog( | ||||
|                         format!("error during transfer: {err}"), 
 | ||||
|                         ActionLevel::Error, | ||||
|                         ActionTarget::WalletLog))?; | ||||
|                 Err(err.into()) | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -8,3 +8,11 @@ pub enum ActionLevel { | ||||
|     Warn, | ||||
|     Error, | ||||
| } | ||||
| 
 | ||||
| #[derive(Default, Debug, Clone, PartialEq, Eq, Display, Serialize, Deserialize)] | ||||
| pub enum ActionTarget { | ||||
|     #[default] | ||||
|     WalletLog, | ||||
|     ValidatorLog, | ||||
|     NominatorLog, | ||||
| } | ||||
|  | ||||
| @ -9,6 +9,7 @@ mod nominator; | ||||
| pub use extrinsics::CasperExtrinsicDetails; | ||||
| pub use era::{EraRewardPoints, EraInfo}; | ||||
| pub use log::ActionLevel; | ||||
| pub use log::ActionTarget; | ||||
| pub use account::SystemAccount; | ||||
| pub use peer::PeerInformation; | ||||
| pub use session::SessionKeyInfo; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user