mirror of
https://github.com/chatmail/core.git
synced 2026-04-28 10:56:29 +03:00
fix: don't ignore QR token timestamp from sync messages
This commit is contained in:
23
src/sync.rs
23
src/sync.rs
@@ -258,8 +258,8 @@ impl Context {
|
||||
for item in &items.items {
|
||||
match &item.data {
|
||||
SyncDataOrUnknown::SyncData(data) => match data {
|
||||
AddQrToken(token) => self.add_qr_token(token).await,
|
||||
DeleteQrToken(token) => self.delete_qr_token(token).await,
|
||||
AddQrToken(token) => self.add_qr_token(token, item.timestamp).await,
|
||||
DeleteQrToken(token) => self.delete_qr_token(token, item.timestamp).await,
|
||||
AlterChat { id, action } => self.sync_alter_chat(id, action).await,
|
||||
SyncData::Config { key, val } => self.sync_config(key, val).await,
|
||||
SyncData::SaveMessage { src, dest } => self.save_message(src, dest).await,
|
||||
@@ -284,21 +284,28 @@ impl Context {
|
||||
}
|
||||
}
|
||||
|
||||
async fn add_qr_token(&self, token: &QrTokenData) -> Result<()> {
|
||||
async fn add_qr_token(&self, token: &QrTokenData, timestamp: i64) -> Result<()> {
|
||||
let grpid = token.grpid.as_deref();
|
||||
token::save(self, Namespace::InviteNumber, grpid, &token.invitenumber).await?;
|
||||
token::save(self, Namespace::Auth, grpid, &token.auth).await?;
|
||||
token::save(
|
||||
self,
|
||||
Namespace::InviteNumber,
|
||||
grpid,
|
||||
&token.invitenumber,
|
||||
timestamp,
|
||||
)
|
||||
.await?;
|
||||
token::save(self, Namespace::Auth, grpid, &token.auth, timestamp).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn delete_qr_token(&self, token: &QrTokenData) -> Result<()> {
|
||||
async fn delete_qr_token(&self, token: &QrTokenData, timestamp: i64) -> Result<()> {
|
||||
self.sql
|
||||
.execute(
|
||||
"DELETE FROM tokens
|
||||
WHERE foreign_key IN
|
||||
(SELECT foreign_key FROM tokens
|
||||
WHERE token=? OR token=?)",
|
||||
(&token.invitenumber, &token.auth),
|
||||
WHERE token=? OR token=? AND timestamp <= ?)",
|
||||
(&token.invitenumber, &token.auth, timestamp),
|
||||
)
|
||||
.await?;
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user