better ending of channels
This commit is contained in:
parent
84cd96b2f6
commit
be807fd54a
|
@ -167,9 +167,8 @@ async fn get_messages(context: &Context, guild_id_str: String, channel_id_str: S
|
||||||
sender.send(postman::Packet::Message(discord_message)).map_err(|e| e.to_string())?;
|
sender.send(postman::Packet::Message(discord_message)).map_err(|e| e.to_string())?;
|
||||||
}
|
}
|
||||||
|
|
||||||
if messages.len() == 25 {
|
if messages.len() < 25 {
|
||||||
let discord_fetch_message = discord_structure::Message::new("".to_string(), channel_id_str.clone(), guild_id_str.clone(), "+".to_string(), "".to_string(), "".to_string());
|
sender.send(postman::Packet::ChannelEnd(guild_id_str.clone(), channel_id_str.clone())).map_err(|e| e.to_string())?;
|
||||||
sender.send(postman::Packet::Message(discord_fetch_message)).map_err(|e| e.to_string())?;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.send(postman::Packet::FinishedRequest).map_err(|e| e.to_string())?;
|
sender.send(postman::Packet::FinishedRequest).map_err(|e| e.to_string())?;
|
||||||
|
|
|
@ -27,14 +27,22 @@ impl Channel {
|
||||||
pub fn new(name: String, id: String, guild_id: String) -> Self {
|
pub fn new(name: String, id: String, guild_id: String) -> Self {
|
||||||
Self {
|
Self {
|
||||||
name,
|
name,
|
||||||
id,
|
id: id.clone(),
|
||||||
guild_id,
|
guild_id : guild_id.clone(),
|
||||||
messages: vec![],
|
messages: vec![Message::new("0".into(), id, guild_id, "+".into(), "".into(), "".into())],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn greetings(&mut self) {
|
pub fn insert(&mut self, message: Message) {
|
||||||
self.messages.push(Message::new("0".into(), self.id.clone(), self.guild_id.clone(), "-".into(), "start of the conversation".into(), "".into()));
|
self.messages.insert(1, message);
|
||||||
|
println!("discord_structure : need to compare timestamp");
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn end(&mut self) {
|
||||||
|
if self.messages[0].author_name != "+" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
self.messages.remove(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
45
src/main.rs
45
src/main.rs
|
@ -103,18 +103,42 @@ impl eframe::App for Jiji {
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(guild_index) = guild {
|
if let Some(guild_index) = guild {
|
||||||
|
let mut unkown_channel = true;
|
||||||
for i in 0..self.guilds[guild_index].channels.len() {
|
for i in 0..self.guilds[guild_index].channels.len() {
|
||||||
if self.guilds[guild_index].channels[i].id != message.channel_id {
|
if self.guilds[guild_index].channels[i].id != message.channel_id {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if self.guilds[guild_index].channels[i].messages[0].author_name == "+" {
|
self.guilds[guild_index].channels[i].insert(message.clone());
|
||||||
self.guilds[guild_index].channels[i].messages[0] = message.clone();
|
unkown_channel = false;
|
||||||
continue
|
}
|
||||||
}
|
|
||||||
self.guilds[guild_index].channels[i].messages.insert(0, message.clone());
|
if unkown_channel {
|
||||||
|
println!("gui : unkown channel");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
postman::Packet::ChannelEnd(guild_id, channel_id) => {
|
||||||
|
println!("gui : end of channel : '{}'", channel_id);
|
||||||
|
|
||||||
|
let mut guild: Option<usize> = None;
|
||||||
|
|
||||||
|
for i in 0..self.guilds.len() {
|
||||||
|
if self.guilds[i].id != guild_id {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
guild = Some(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(guild_index) = guild {
|
||||||
|
for i in 0..self.guilds[guild_index].channels.len() {
|
||||||
|
if self.guilds[guild_index].channels[i].id != channel_id {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
self.guilds[guild_index].channels[i].end();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
postman::Packet::FinishedRequest => {
|
postman::Packet::FinishedRequest => {
|
||||||
self.pending_bot_requests = self.pending_bot_requests.checked_sub(1).unwrap_or(0);
|
self.pending_bot_requests = self.pending_bot_requests.checked_sub(1).unwrap_or(0);
|
||||||
}
|
}
|
||||||
|
@ -199,12 +223,10 @@ impl Jiji {
|
||||||
for i in 0..self.guilds[*selected_guild_index].channels.len() {
|
for i in 0..self.guilds[*selected_guild_index].channels.len() {
|
||||||
if ui.add(egui::SelectableLabel::new(self.selected_channel == Some(i), self.guilds[*selected_guild_index].channels[i].name.clone())).clicked() {
|
if ui.add(egui::SelectableLabel::new(self.selected_channel == Some(i), self.guilds[*selected_guild_index].channels[i].name.clone())).clicked() {
|
||||||
self.selected_channel = Some(i);
|
self.selected_channel = Some(i);
|
||||||
if self.guilds[*selected_guild_index].channels[i].messages.len() == 0 {
|
if self.guilds[*selected_guild_index].channels[i].messages.len() == 1 {
|
||||||
let _ = self.sender.send(postman::Packet::FetchMessages(self.guilds[*selected_guild_index].id.clone(), self.guilds[*selected_guild_index].channels[i].id.clone(), "".into()));
|
let _ = self.sender.send(postman::Packet::FetchMessages(self.guilds[*selected_guild_index].id.clone(), self.guilds[*selected_guild_index].channels[i].id.clone(), "".into()));
|
||||||
|
|
||||||
self.pending_bot_requests += 1;
|
self.pending_bot_requests += 1;
|
||||||
|
|
||||||
self.guilds[*selected_guild_index].channels[i].greetings();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -257,11 +279,10 @@ impl Jiji {
|
||||||
if let Some(selected_guild_index) = &self.selected_guild {
|
if let Some(selected_guild_index) = &self.selected_guild {
|
||||||
if let Some(selected_channel_index) = &self.selected_channel {
|
if let Some(selected_channel_index) = &self.selected_channel {
|
||||||
let mut last_author = "".to_string();
|
let mut last_author = "".to_string();
|
||||||
|
if self.guilds[*selected_guild_index].channels[*selected_channel_index].messages.len() < 2 {
|
||||||
|
return
|
||||||
|
}
|
||||||
for message in &self.guilds[*selected_guild_index].channels[*selected_channel_index].messages {
|
for message in &self.guilds[*selected_guild_index].channels[*selected_channel_index].messages {
|
||||||
if message.author_name == "-" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if message.author_name == "+" {
|
if message.author_name == "+" {
|
||||||
if ui.button("+").clicked() {
|
if ui.button("+").clicked() {
|
||||||
if let Some(selected_guild_index) = &self.selected_guild {
|
if let Some(selected_guild_index) = &self.selected_guild {
|
||||||
|
|
|
@ -7,6 +7,7 @@ pub enum Packet {
|
||||||
Guild(discord_structure::Guild),
|
Guild(discord_structure::Guild),
|
||||||
Channel(discord_structure::Channel),
|
Channel(discord_structure::Channel),
|
||||||
Message(discord_structure::Message),
|
Message(discord_structure::Message),
|
||||||
|
ChannelEnd(String, String),
|
||||||
FetchChannels(String),
|
FetchChannels(String),
|
||||||
FetchMessages(String, String, String),
|
FetchMessages(String, String, String),
|
||||||
FinishedRequest,
|
FinishedRequest,
|
||||||
|
|
Loading…
Reference in a new issue