Refactored types
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use pulse_wire::terminal::ActivePosition;
|
||||
use pulse_wire::general::Position;
|
||||
use tokio::{sync::Mutex, task::JoinHandle};
|
||||
|
||||
use crate::{
|
||||
@@ -90,7 +90,7 @@ impl Engine {
|
||||
state
|
||||
.asset_positions
|
||||
.into_iter()
|
||||
.map(|position| ActivePosition {
|
||||
.map(|position| Position {
|
||||
symbol: position.position.coin,
|
||||
size: position.position.szi.as_f64(),
|
||||
entry_price: position
|
||||
|
||||
+3
-3
@@ -1,6 +1,6 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use pulse_wire::terminal::WatchListItem;
|
||||
use pulse_wire::terminal::MarketItem;
|
||||
use serde_json::Value;
|
||||
|
||||
fn number(value: &Value, field: &str) -> Result<f64, String> {
|
||||
@@ -15,7 +15,7 @@ fn number(value: &Value, field: &str) -> Result<f64, String> {
|
||||
pub async fn fetch_watch_list(
|
||||
client: &hypersdk::hypercore::HttpClient,
|
||||
symbols: &[String],
|
||||
) -> Result<Vec<WatchListItem>, String> {
|
||||
) -> Result<Vec<MarketItem>, String> {
|
||||
let response = client
|
||||
.meta_and_asset_ctxs(None)
|
||||
.await
|
||||
@@ -63,7 +63,7 @@ pub async fn fetch_watch_list(
|
||||
|
||||
by_symbol.insert(
|
||||
symbol,
|
||||
WatchListItem {
|
||||
MarketItem {
|
||||
symbol: symbol.to_owned(),
|
||||
price,
|
||||
trend: ((price / previous_day_price) - 1.0) * 100.0,
|
||||
|
||||
@@ -3,10 +3,7 @@ use std::{
|
||||
sync::{Arc, Weak},
|
||||
};
|
||||
|
||||
use pulse_wire::{
|
||||
PulseWire,
|
||||
terminal::{EventLog, LogKind, TerminalClientMessage},
|
||||
};
|
||||
use pulse_wire::{PulseWire, general::{EventLog, LogKind}, terminal::TerminalClientMessage};
|
||||
use tokio::{
|
||||
io::{AsyncReadExt, AsyncWriteExt},
|
||||
net::{
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
use pulse_wire::terminal::{
|
||||
ActivePosition, Alert, AlertLevel, EventLog, InspectItem, InspectTarget, LogKind,
|
||||
MarketOverview, Signal, SignalKind, Status, WatchListItem,
|
||||
Alert, AlertLevel, InspectItem, InspectTarget, MarketItem, MarketOverview, Status,
|
||||
};
|
||||
|
||||
use pulse_wire::general::{Direction, EventLog, LogKind, Position, Signal};
|
||||
|
||||
pub trait Formatted {
|
||||
fn get_formatted(&self) -> Vec<String>;
|
||||
}
|
||||
@@ -64,19 +65,18 @@ impl Formatted for EventLog {
|
||||
impl Formatted for Signal {
|
||||
fn get_formatted(&self) -> Vec<String> {
|
||||
vec![
|
||||
if matches!(self.kind, SignalKind::Buy) {
|
||||
if matches!(self.kind, Direction::Buy) {
|
||||
format!("\x1b[32m{}\x1b[0m", self.kind)
|
||||
} else {
|
||||
format!("\x1b[31m{}\x1b[0m", self.kind)
|
||||
},
|
||||
format!("\x1b[35m{}\x1b[0m", self.symbol),
|
||||
format!("\x1b[34m{}\x1b[0m", self.param),
|
||||
format_f64(self.price),
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
impl Formatted for WatchListItem {
|
||||
impl Formatted for MarketItem {
|
||||
fn get_formatted(&self) -> Vec<String> {
|
||||
vec![
|
||||
format!("\x1b[35m{}\x1b[0m", self.symbol),
|
||||
@@ -95,7 +95,7 @@ impl Formatted for WatchListItem {
|
||||
}
|
||||
}
|
||||
|
||||
impl Formatted for ActivePosition {
|
||||
impl Formatted for Position {
|
||||
fn get_formatted(&self) -> Vec<String> {
|
||||
vec![
|
||||
format!("\x1b[35m{}\x1b[0m", self.symbol),
|
||||
|
||||
+13
-8
@@ -21,8 +21,9 @@ use pulse_ui::{
|
||||
|
||||
use crate::formatting::{Formatted, apply_padding};
|
||||
|
||||
use pulse_wire::terminal::{
|
||||
ActivePosition, EventLog, InspectTarget, MarketOverview, Signal, Status, WatchListItem,
|
||||
use pulse_wire::{
|
||||
general::{EventLog, Position, Signal},
|
||||
terminal::{InspectTarget, MarketItem, MarketOverview, Status},
|
||||
};
|
||||
|
||||
pub struct PulseTradeApp {
|
||||
@@ -34,8 +35,8 @@ pub struct PulseTradeApp {
|
||||
market_overview: State<Option<MarketOverview>>,
|
||||
status: State<Option<Status>>,
|
||||
|
||||
watch_list: State<Vec<WatchListItem>>,
|
||||
active_positions: State<Vec<ActivePosition>>,
|
||||
watch_list: State<Vec<MarketItem>>,
|
||||
active_positions: State<Vec<Position>>,
|
||||
logs: State<Vec<EventLog>>,
|
||||
signals: State<Vec<Signal>>,
|
||||
inspect: State<InspectTarget>,
|
||||
@@ -130,15 +131,19 @@ impl App for PulseTradeApp {
|
||||
(
|
||||
LayoutItem::Widget(Size::Flex(1)),
|
||||
Box::new(
|
||||
advanced_draw(&self.scroll, 1, "ACTIVE POSITIONS", &self.active_positions)
|
||||
.await,
|
||||
advanced_draw(&self.scroll, 1, "POSITIONS", &self.active_positions).await,
|
||||
),
|
||||
),
|
||||
(
|
||||
LayoutItem::Widget(Size::Flex(1)),
|
||||
Box::new(
|
||||
advanced_option_draw(&self.scroll, 2, "MARKET OVERVIEW", &self.market_overview)
|
||||
.await,
|
||||
advanced_option_draw(
|
||||
&self.scroll,
|
||||
2,
|
||||
"MARKET OVERVIEW",
|
||||
&self.market_overview,
|
||||
)
|
||||
.await,
|
||||
),
|
||||
),
|
||||
]),
|
||||
|
||||
Reference in New Issue
Block a user