diff --git a/src/apps/group_chat/layer.rs b/src/apps/group_chat/layer.rs index 0f3919c..ec4d599 100644 --- a/src/apps/group_chat/layer.rs +++ b/src/apps/group_chat/layer.rs @@ -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. diff --git a/src/apps/group_chat/models.rs b/src/apps/group_chat/models.rs index e938043..3508f3f 100644 --- a/src/apps/group_chat/models.rs +++ b/src/apps/group_chat/models.rs @@ -360,9 +360,16 @@ impl GroupChat { db.update(&sql) } - pub fn update_last_message(db: &DStorage, id: i64, msg: &Message, read: bool) -> Result { + pub fn update_last_message( + db: &DStorage, + id: i64, + msg: &Message, + read: bool, + height: i64, + ) -> Result { 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( 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) }