aboutsummaryrefslogtreecommitdiff
path: root/telegram/handlers.go
diff options
context:
space:
mode:
authorBohdan Horbeshko <bodqhrohro@gmail.com>2023-07-09 06:52:30 +0300
committerBohdan Horbeshko <bodqhrohro@gmail.com>2023-07-09 06:52:30 +0300
commit959dc061ff30ba1cf5c699adc0f7d1d991d7afa5 (patch)
treec9c0b6c97ec703ad6fbc2f75b250dd9930f2a653 /telegram/handlers.go
parent30b3fd16153fab727315f014150d98b367ccd6ad (diff)
Send carbons for outgoing messages to other resources
Diffstat (limited to 'telegram/handlers.go')
-rw-r--r--telegram/handlers.go28
1 files changed, 16 insertions, 12 deletions
diff --git a/telegram/handlers.go b/telegram/handlers.go
index 65e5f2f..8173ecd 100644
--- a/telegram/handlers.go
+++ b/telegram/handlers.go
@@ -203,26 +203,30 @@ func (c *Client) updateChatLastMessage(update *client.UpdateChatLastMessage) {
// message received
func (c *Client) updateNewMessage(update *client.UpdateNewMessage) {
- go func() {
- chatId := update.Message.ChatId
+ chatId := update.Message.ChatId
+
+ c.SendMessageLock.Lock()
+ c.SendMessageLock.Unlock()
+ xmppId, err := gateway.IdsDB.GetByTgIds(c.Session.Login, c.jid, chatId, update.Message.Id)
+ var ignoredResource string
+ if err == nil {
+ ignoredResource = c.popFromOutbox(xmppId)
+ } else {
+ log.Infof("Couldn't retrieve XMPP message ids for %v, an echo may happen", update.Message.Id)
+ }
+ log.Warnf("xmppId: %v, ignoredResource: %v", xmppId, ignoredResource)
- // guarantee sequential message delivering per chat
- lock := c.getChatMessageLock(chatId)
+ // guarantee sequential message delivering per chat
+ lock := c.getChatMessageLock(chatId)
+ go func() {
lock.Lock()
defer lock.Unlock()
- // ignore self outgoing messages
- if update.Message.IsOutgoing &&
- update.Message.SendingState != nil &&
- update.Message.SendingState.MessageSendingStateType() == client.TypeMessageSendingStatePending {
- return
- }
-
log.WithFields(log.Fields{
"chat_id": chatId,
}).Warn("New message from chat")
- c.ProcessIncomingMessage(chatId, update.Message)
+ c.ProcessIncomingMessage(chatId, update.Message, ignoredResource)
}()
}