Fix missing read markers in other XMPP clients than the message sender

This commit is contained in:
Bohdan Horbeshko 2024-04-10 22:17:58 -04:00
parent 144c5724ea
commit b499992148
2 changed files with 22 additions and 24 deletions

View file

@ -56,30 +56,28 @@ func (c *Client) cleanTempFile(path string) {
} }
func (c *Client) sendMarker(chatId, messageId int64, typ gateway.MarkerType) { func (c *Client) sendMarker(chatId, messageId int64, typ gateway.MarkerType) {
if xmppId, err := gateway.IdsDB.GetByTgIds(c.Session.Login, c.jid, chatId, messageId); err == nil { xmppId, err := gateway.IdsDB.GetByTgIds(c.Session.Login, c.jid, chatId, messageId)
resource := c.getFromOutbox(xmppId) if err != nil {
xmppId = strconv.FormatInt(messageId, 10)
var stringType string
if typ == gateway.MarkerTypeReceived {
stringType = "received"
} else if typ == gateway.MarkerTypeDisplayed {
stringType = "displayed"
}
log.WithFields(log.Fields{
"xmppId": xmppId,
"resource": resource,
}).Debugf("marker: %s", stringType)
if resource != "" {
gateway.SendMessageMarker(
c.jid+"/"+resource,
strconv.FormatInt(chatId, 10),
c.xmpp,
typ,
xmppId,
)
}
} }
var stringType string
if typ == gateway.MarkerTypeReceived {
stringType = "received"
} else if typ == gateway.MarkerTypeDisplayed {
stringType = "displayed"
}
log.WithFields(log.Fields{
"xmppId": xmppId,
}).Debugf("marker: %s", stringType)
gateway.SendMessageMarker(
c.jid,
strconv.FormatInt(chatId, 10),
c.xmpp,
typ,
xmppId,
)
} }
func (c *Client) updateHandler() { func (c *Client) updateHandler() {

View file

@ -203,7 +203,7 @@ func HandleMessage(s xmpp.Sender, p stanza.Packet) {
} else { } else {
err = gateway.IdsDB.Set(session.Session.Login, bare, toID, tgMessageId, msg.Id) err = gateway.IdsDB.Set(session.Session.Login, bare, toID, tgMessageId, msg.Id)
if err == nil { if err == nil {
session.AddToOutbox(msg.Id, resource) // session.AddToOutbox(msg.Id, resource)
session.UpdateLastChatMessageId(toID, msg.Id) session.UpdateLastChatMessageId(toID, msg.Id)
} else { } else {
log.Errorf("Failed to save ids %v/%v %v", toID, tgMessageId, msg.Id) log.Errorf("Failed to save ids %v/%v %v", toID, tgMessageId, msg.Id)