Send timestamp with receipts (should help fix stream errors)

This commit is contained in:
moyamo 2016-04-09 22:48:02 +02:00
parent d9bd18013d
commit ef50b4c1db
2 changed files with 19 additions and 17 deletions

View file

@ -201,10 +201,10 @@ class Session(YowsupApp):
else: else:
self.onPresenceUnavailable(number) self.onPresenceUnavailable(number)
def sendReadReceipts(self, buddy): def sendReadReceipts(self, buddy):
for _id, _from, participant in self.recvMsgIDs: for _id, _from, participant, t in self.recvMsgIDs:
if _from.split(u'@')[0] == buddy: if _from.split(u'@')[0] == buddy:
self.sendReceipt(_id, _from, u'read', participant) self.sendReceipt(_id, _from, 'read', participant, t)
self.recvMsgIDs.remove((_id, _from, participant)) self.recvMsgIDs.remove((_id, _from, participant, t))
self.logger.debug(u"Send read receipt to %s (ID: %s)", _from, _id) self.logger.debug(u"Send read receipt to %s (ID: %s)", _from, _id)
# Called by superclass # Called by superclass
@ -276,8 +276,8 @@ class Session(YowsupApp):
]) ])
buddy = _from.split(u'@')[0] buddy = _from.split(u'@')[0]
messageContent = utils.softToUni(body) messageContent = utils.softToUni(body)
self.sendReceipt(_id, _from, None, participant) self.sendReceipt(_id, _from, None, participant, timestamp)
self.recvMsgIDs.append((_id, _from, participant)) self.recvMsgIDs.append((_id, _from, participant, timestamp))
self.logger.info(u"Message received from %s to %s: %s (at ts=%s)", self.logger.info(u"Message received from %s to %s: %s (at ts=%s)",
buddy, self.legacyName, messageContent, timestamp) buddy, self.legacyName, messageContent, timestamp)
if participant is not None: # Group message or broadcast if participant is not None: # Group message or broadcast
@ -312,8 +312,8 @@ class Session(YowsupApp):
else: else:
self.sendMessageToXMPP(buddy, image.url, image.timestamp) self.sendMessageToXMPP(buddy, image.url, image.timestamp)
self.sendMessageToXMPP(buddy, image.caption, image.timestamp) self.sendMessageToXMPP(buddy, image.caption, image.timestamp)
self.sendReceipt(image._id, image._from, None, image.participant) self.sendReceipt(image._id, image._from, None, image.participant, image.timestamp)
self.recvMsgIDs.append((image._id, image._from, image.participant)) self.recvMsgIDs.append((image._id, image._from, image.participant, image.timestamp))
# Called by superclass # Called by superclass
@ -331,8 +331,8 @@ class Session(YowsupApp):
self.sendGroupMessageToXMPP(buddy, partname, message, audio.timestamp) self.sendGroupMessageToXMPP(buddy, partname, message, audio.timestamp)
else: else:
self.sendMessageToXMPP(buddy, message, audio.timestamp) self.sendMessageToXMPP(buddy, message, audio.timestamp)
self.sendReceipt(audio._id, audio._from, None, audio.participant) self.sendReceipt(audio._id, audio._from, None, audio.participant, audio.timestamp)
self.recvMsgIDs.append((audio._id, audio._from, audio.participant)) self.recvMsgIDs.append((audio._id, audio._from, audio.participant, audio.timestamp))
# Called by superclass # Called by superclass
@ -351,8 +351,8 @@ class Session(YowsupApp):
self.sendGroupMessageToXMPP(buddy, partname, message, video.timestamp) self.sendGroupMessageToXMPP(buddy, partname, message, video.timestamp)
else: else:
self.sendMessageToXMPP(buddy, message, video.timestamp) self.sendMessageToXMPP(buddy, message, video.timestamp)
self.sendReceipt(video._id, video._from, None, video.participant) self.sendReceipt(video._id, video._from, None, video.participant, video.timestamp)
self.recvMsgIDs.append((video._id, video._from, video.participant)) self.recvMsgIDs.append((video._id, video._from, video.participant, video.timestamp))
def onLocation(self, location): def onLocation(self, location):
@ -382,8 +382,8 @@ class Session(YowsupApp):
if url is not None: if url is not None:
self.sendMessageToXMPP(buddy, url, location.timestamp) self.sendMessageToXMPP(buddy, url, location.timestamp)
self.sendMessageToXMPP(buddy, latlong, location.timestamp) self.sendMessageToXMPP(buddy, latlong, location.timestamp)
self.sendReceipt(location._id, location._from, None, location.participant) self.sendReceipt(location._id, location._from, None, location.participant, location.timestamp)
self.recvMsgIDs.append((location._id, location._from, location.participant)) self.recvMsgIDs.append((location._id, location._from, location.participant, location.timestamp))
@ -405,8 +405,8 @@ class Session(YowsupApp):
self.sendMessageToXMPP(buddy, message, timestamp) self.sendMessageToXMPP(buddy, message, timestamp)
# self.sendMessageToXMPP(buddy, card_data) # self.sendMessageToXMPP(buddy, card_data)
#self.transferFile(buddy, str(name), card_data) #self.transferFile(buddy, str(name), card_data)
self.sendReceipt(_id, _from, None, participant) self.sendReceipt(_id, _from, None, participant, timestamp)
self.recvMsgIDs.append((_id, _from, participant)) self.recvMsgIDs.append((_id, _from, participant, timestamp))
def transferFile(self, buddy, name, data): def transferFile(self, buddy, name, data):

View file

@ -153,7 +153,7 @@ class YowsupApp(object):
""" """
self.stack.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_DISCONNECT)) self.stack.broadcastEvent(YowLayerEvent(YowNetworkLayer.EVENT_STATE_DISCONNECT))
def sendReceipt(self, _id, _from, read, participant): def sendReceipt(self, _id, _from, read, participant, t):
""" """
Send a receipt (delivered: double-tick, read: blue-ticks) Send a receipt (delivered: double-tick, read: blue-ticks)
@ -162,8 +162,10 @@ class YowsupApp(object):
- _from: jid of person who sent the message - _from: jid of person who sent the message
- read: ('read' or None) None is just delivered, 'read' is read - read: ('read' or None) None is just delivered, 'read' is read
- participant - participant
- t: The time the original message was sent.
""" """
receipt = OutgoingReceiptProtocolEntity(_id, _from, read, participant) self.logger.debug(u'Sending receipt to whatsapp: %s', [_id, _from, read, participant, t])
receipt = OutgoingReceiptProtocolEntity(_id, _from, read, participant, t=t)
self.sendEntity(receipt) self.sendEntity(receipt)
def downloadMedia(self, url, onSuccess = None, onFailure = None): def downloadMedia(self, url, onSuccess = None, onFailure = None):