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,8 +56,10 @@ func (c *Client) cleanTempFile(path string) {
}
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 {
resource := c.getFromOutbox(xmppId)
xmppId, err := gateway.IdsDB.GetByTgIds(c.Session.Login, c.jid, chatId, messageId)
if err != nil {
xmppId = strconv.FormatInt(messageId, 10)
}
var stringType string
if typ == gateway.MarkerTypeReceived {
@ -67,20 +69,16 @@ func (c *Client) sendMarker(chatId, messageId int64, typ gateway.MarkerType) {
}
log.WithFields(log.Fields{
"xmppId": xmppId,
"resource": resource,
}).Debugf("marker: %s", stringType)
if resource != "" {
gateway.SendMessageMarker(
c.jid+"/"+resource,
c.jid,
strconv.FormatInt(chatId, 10),
c.xmpp,
typ,
xmppId,
)
}
}
}
func (c *Client) updateHandler() {
listener := c.client.GetListener()

View file

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