Browse Source

fix group chat sync events

pull/18/head
Sun 4 years ago
parent
commit
650ab858bf
  1. 4
      src/apps/group_chat/layer.rs
  2. 13
      src/apps/group_chat/models.rs

4
src/apps/group_chat/layer.rs

@ -93,14 +93,14 @@ pub(crate) async fn handle( @@ -93,14 +93,14 @@ pub(crate) async fn handle(
GroupResult::Waiting(_gcd) => {
// TODO waiting
}
GroupResult::Agree(gcd, info, height) => {
GroupResult::Agree(gcd, info) => {
println!("Agree..........");
let base = layer.read().await.base.clone();
let db = group_chat_db(&base, &mgid)?;
let (rid, key) = Request::over(&db, &gcd, true)?;
// 1. add group chat.
let mut group = GroupChat::from_info(key, info, height, addr, base, &mgid)?;
let mut group = GroupChat::from_info(key, info, 0, addr, base, &mgid)?;
group.insert(&db)?;
// 2. update UI.

13
src/apps/group_chat/models.rs

@ -360,9 +360,16 @@ impl GroupChat { @@ -360,9 +360,16 @@ impl GroupChat {
db.update(&sql)
}
pub fn update_last_message(db: &DStorage, id: i64, msg: &Message, read: bool) -> Result<usize> {
pub fn update_last_message(
db: &DStorage,
id: i64,
msg: &Message,
read: bool,
height: i64,
) -> Result<usize> {
let sql = format!(
"UPDATE groups SET last_datetime={}, last_content='{}', last_readed={} WHERE id = {}",
"UPDATE groups SET height={}, last_datetime={}, last_content='{}', last_readed={} WHERE id = {}",
height,
msg.datetime,
msg.content,
if read { 1 } else { 0 },
@ -819,6 +826,6 @@ pub(super) fn from_network_message( @@ -819,6 +826,6 @@ pub(super) fn from_network_message(
let mut msg = Message::new_with_time(height, gdid, mdid, is_me, m_type, raw, datetime);
msg.insert(&db)?;
GroupChat::update_last_message(&db, gdid, &msg, false)?;
GroupChat::update_last_message(&db, gdid, &msg, false, height)?;
Ok(msg)
}

Loading…
Cancel
Save