Workaround for empty server messages (typing indicator)
This commit is contained in:
@@ -250,6 +250,10 @@ impl<'a> Repository<'a> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
|
// TODO: May need to update conversation metadata here, but this has a perf impact.
|
||||||
|
// Ideally we would consolidate this in the code above, assuming we're only inserting *new* messages, but
|
||||||
|
// this may not necessarily be the case.
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -325,8 +329,15 @@ impl<'a> Repository<'a> {
|
|||||||
conversation_guid,
|
conversation_guid,
|
||||||
last_message
|
last_message
|
||||||
);
|
);
|
||||||
conversation.date = last_message.date;
|
|
||||||
conversation.last_message_preview = Some(last_message.text.clone());
|
if last_message.date > conversation.date {
|
||||||
|
conversation.date = last_message.date;
|
||||||
|
}
|
||||||
|
|
||||||
|
if !last_message.text.is_empty() && !last_message.text.trim().is_empty() {
|
||||||
|
conversation.last_message_preview = Some(last_message.text.clone());
|
||||||
|
}
|
||||||
|
|
||||||
self.insert_conversation(conversation)?;
|
self.insert_conversation(conversation)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -559,7 +559,15 @@ impl Daemon {
|
|||||||
let messages = client
|
let messages = client
|
||||||
.get_messages(&conversation_id, None, None, last_message_id)
|
.get_messages(&conversation_id, None, None, last_message_id)
|
||||||
.await?;
|
.await?;
|
||||||
let db_messages: Vec<kordophone_db::models::Message> = messages
|
|
||||||
|
// Filter messages that have an empty body, or a body that is just whitespace.
|
||||||
|
// This is a workaround for a bug in the server where it returns messages with an empty body, which is usually
|
||||||
|
// the typing indicator or stuff like that. In the future, we need to move to ChatItems instead of Messages.
|
||||||
|
let insertable_messages: Vec<kordophone::model::Message> = messages
|
||||||
|
.into_iter()
|
||||||
|
.filter(|m| !m.text.is_empty() && !m.text.trim().is_empty()).collect();
|
||||||
|
|
||||||
|
let db_messages: Vec<kordophone_db::models::Message> = insertable_messages
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(kordophone_db::models::Message::from)
|
.map(kordophone_db::models::Message::from)
|
||||||
.collect();
|
.collect();
|
||||||
|
|||||||
Reference in New Issue
Block a user