mirror of
https://github.com/MeexReay/bRAC.git
synced 2025-05-06 21:48:03 +03:00
fix errors printing and some other fixes
This commit is contained in:
parent
c2208c54ac
commit
0c2a5cb256
13
src/chat.rs
13
src/chat.rs
@ -47,18 +47,23 @@ impl ChatStorage {
|
|||||||
self.messages.read().unwrap().clone()
|
self.messages.read().unwrap().clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update(&self, messages: Vec<String>, packet_size: usize) {
|
pub fn update(&self, max_length: usize, messages: Vec<String>, packet_size: usize) {
|
||||||
self.packet_size.store(packet_size, Ordering::SeqCst);
|
self.packet_size.store(packet_size, Ordering::SeqCst);
|
||||||
|
let mut messages = messages;
|
||||||
|
messages.drain(max_length..);
|
||||||
*self.messages.write().unwrap() = messages;
|
*self.messages.write().unwrap() = messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn append_and_store(&self, messages: Vec<String>, packet_size: usize) {
|
pub fn append_and_store(&self, max_length: usize, messages: Vec<String>, packet_size: usize) {
|
||||||
self.packet_size.store(packet_size, Ordering::SeqCst);
|
self.packet_size.store(packet_size, Ordering::SeqCst);
|
||||||
self.messages.write().unwrap().append(&mut messages.clone());
|
self.append(max_length, messages);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn append(&self, messages: Vec<String>) {
|
pub fn append(&self, max_length: usize, messages: Vec<String>) {
|
||||||
self.messages.write().unwrap().append(&mut messages.clone());
|
self.messages.write().unwrap().append(&mut messages.clone());
|
||||||
|
if self.messages.read().unwrap().len() > max_length {
|
||||||
|
self.messages.write().unwrap().drain(max_length..);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
use std::io::stdout;
|
||||||
|
use std::io::Write;
|
||||||
|
|
||||||
use colored::Colorize;
|
use colored::Colorize;
|
||||||
|
|
||||||
@ -29,38 +31,44 @@ pub fn run_main_loop(ctx: Arc<Context>) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if ctx.enable_chunked {
|
if ctx.enable_chunked {
|
||||||
ctx.messages.append_and_store(messages.clone(), size);
|
ctx.messages.append_and_store(ctx.max_messages, messages.clone(), size);
|
||||||
} else {
|
} else {
|
||||||
ctx.messages.update(messages.clone(), size);
|
ctx.messages.update(ctx.max_messages, messages.clone(), size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
let msg = format!("Read messages error: {}", e.to_string()).bright_red().to_string();
|
let msg = format!("Read messages error: {}", e.to_string()).bright_red().to_string();
|
||||||
ctx.messages.append(vec![msg]);
|
ctx.messages.append(ctx.max_messages, vec![msg]);
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
let msg = format!("Connect error: {}", e.to_string()).bright_red().to_string();
|
let msg = format!("Connect error: {}", e.to_string()).bright_red().to_string();
|
||||||
ctx.messages.append(vec![msg]);
|
ctx.messages.append(ctx.max_messages, vec![msg]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
print!(
|
let messages = ctx.messages.messages();
|
||||||
"{}\n{} ",
|
|
||||||
ctx.messages.messages()
|
let mut out = stdout().lock();
|
||||||
|
write!(
|
||||||
|
out,
|
||||||
|
"{}\n{}\n{} ",
|
||||||
|
"\n".repeat(ctx.max_messages - messages.len()),
|
||||||
|
messages
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|o| o.white().blink().to_string())
|
.map(|o| o.white().blink().to_string())
|
||||||
.collect::<Vec<String>>()
|
.collect::<Vec<String>>()
|
||||||
.join("\n"),
|
.join("\n"),
|
||||||
">".bright_yellow()
|
">".bright_yellow()
|
||||||
);
|
);
|
||||||
|
out.flush();
|
||||||
|
|
||||||
if let Some(message) = get_input("") {
|
if let Some(message) = get_input("") {
|
||||||
if let Err(e) = on_send_message(ctx.clone(), &message) {
|
if let Err(e) = on_send_message(ctx.clone(), &message) {
|
||||||
let msg = format!("Send message error: {}", e.to_string()).bright_red().to_string();
|
let msg = format!("Send message error: {}", e.to_string()).bright_red().to_string();
|
||||||
ctx.messages.append(vec![msg]);
|
ctx.messages.append(ctx.max_messages, vec![msg]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,7 @@ fn poll_events(ctx: Arc<Context>) -> Result<(), Box<dyn Error>> {
|
|||||||
|
|
||||||
if let Err(e) = on_send_message(ctx.clone(), &message) {
|
if let Err(e) = on_send_message(ctx.clone(), &message) {
|
||||||
let msg = format!("Send message error: {}", e.to_string()).bright_red().to_string();
|
let msg = format!("Send message error: {}", e.to_string()).bright_red().to_string();
|
||||||
ctx.messages.append(vec![msg]);
|
ctx.messages.append(ctx.max_messages, vec![msg]);
|
||||||
print_console(ctx.clone(), ctx.messages.messages(), &ctx.input.read().unwrap())?;
|
print_console(ctx.clone(), ctx.messages.messages(), &ctx.input.read().unwrap())?;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -328,16 +328,16 @@ pub fn recv_tick(ctx: Arc<Context>) -> Result<(), Box<dyn Error>> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
if ctx.enable_chunked {
|
if ctx.enable_chunked {
|
||||||
ctx.messages.append_and_store(messages.clone(), size);
|
ctx.messages.append_and_store(ctx.max_messages, messages.clone(), size);
|
||||||
print_console(ctx.clone(), ctx.messages.messages(), &ctx.input.read().unwrap())?;
|
print_console(ctx.clone(), ctx.messages.messages(), &ctx.input.read().unwrap())?;
|
||||||
} else {
|
} else {
|
||||||
ctx.messages.update(messages.clone(), size);
|
ctx.messages.update(ctx.max_messages, messages.clone(), size);
|
||||||
print_console(ctx.clone(), messages, &ctx.input.read().unwrap())?;
|
print_console(ctx.clone(), messages, &ctx.input.read().unwrap())?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
let msg = format!("Read messages error: {}", e.to_string()).bright_red().to_string();
|
let msg = format!("Read messages error: {}", e.to_string()).bright_red().to_string();
|
||||||
ctx.messages.append(vec![msg]);
|
ctx.messages.append(ctx.max_messages, vec![msg]);
|
||||||
print_console(ctx.clone(), ctx.messages.messages(), &ctx.input.read().unwrap())?;
|
print_console(ctx.clone(), ctx.messages.messages(), &ctx.input.read().unwrap())?;
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
@ -362,8 +362,9 @@ pub fn run_main_loop(ctx: Arc<Context>) {
|
|||||||
loop {
|
loop {
|
||||||
if let Err(e) = recv_tick(ctx.clone()) {
|
if let Err(e) = recv_tick(ctx.clone()) {
|
||||||
let msg = format!("Print messages error: {}", e.to_string()).bright_red().to_string();
|
let msg = format!("Print messages error: {}", e.to_string()).bright_red().to_string();
|
||||||
ctx.messages.append(vec![msg]);
|
ctx.messages.append(ctx.max_messages, vec![msg]);
|
||||||
let _ = print_console(ctx.clone(), ctx.messages.messages(), &ctx.input.read().unwrap());
|
let _ = print_console(ctx.clone(), ctx.messages.messages(), &ctx.input.read().unwrap());
|
||||||
|
thread::sleep(Duration::from_secs(1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -371,7 +372,7 @@ pub fn run_main_loop(ctx: Arc<Context>) {
|
|||||||
|
|
||||||
if let Err(e) = poll_events(ctx.clone()) {
|
if let Err(e) = poll_events(ctx.clone()) {
|
||||||
let msg = format!("Poll events error: {}", e.to_string()).bright_red().to_string();
|
let msg = format!("Poll events error: {}", e.to_string()).bright_red().to_string();
|
||||||
ctx.messages.append(vec![msg]);
|
ctx.messages.append(ctx.max_messages, vec![msg]);
|
||||||
let _ = print_console(ctx.clone(), ctx.messages.messages(), &ctx.input.read().unwrap());
|
let _ = print_console(ctx.clone(), ctx.messages.messages(), &ctx.input.read().unwrap());
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user