| ... |
... |
@@ -17,7 +17,6 @@ |
|
17
|
17
|
# pylint: disable=no-init
|
|
18
|
18
|
# pylint: disable=attribute-defined-outside-init
|
|
19
|
19
|
|
|
20
|
|
-from calendar import timegm
|
|
21
|
20
|
import logging
|
|
22
|
21
|
from time import time as time_time
|
|
23
|
22
|
|
| ... |
... |
@@ -30,6 +29,8 @@ from gajim.common import app |
|
30
|
29
|
from gajim.common import i18n
|
|
31
|
30
|
from gajim.common.i18n import _
|
|
32
|
31
|
from gajim.common.modules import dataforms
|
|
|
32
|
+from gajim.common.modules.misc import parse_idle
|
|
|
33
|
+from gajim.common.modules.misc import parse_delay
|
|
33
|
34
|
from gajim.common.const import KindConstant, SSLError
|
|
34
|
35
|
from gajim.common.pep import SUPPORTED_PERSONAL_USER_EVENTS
|
|
35
|
36
|
from gajim.common.jingle_transport import JingleTransportSocks5
|
| ... |
... |
@@ -87,18 +88,6 @@ class HelperEvent: |
|
87
|
88
|
minimized = app.interface.minimized_controls[self.conn.name]
|
|
88
|
89
|
self.gc_control = minimized.get(self.jid)
|
|
89
|
90
|
|
|
90
|
|
- def _generate_timestamp(self, tag):
|
|
91
|
|
- # Make sure we use only int/float Epoch time
|
|
92
|
|
- if tag is None:
|
|
93
|
|
- self.timestamp = time_time()
|
|
94
|
|
- return
|
|
95
|
|
- try:
|
|
96
|
|
- tim = helpers.datetime_tuple(tag)
|
|
97
|
|
- self.timestamp = timegm(tim)
|
|
98
|
|
- except Exception:
|
|
99
|
|
- log.error('wrong timestamp, ignoring it: %s', tag)
|
|
100
|
|
- self.timestamp = time_time()
|
|
101
|
|
-
|
|
102
|
91
|
def get_oob_data(self, stanza):
|
|
103
|
92
|
oob_node = stanza.getTag('x', namespace=nbxmpp.NS_X_OOB)
|
|
104
|
93
|
if oob_node is not None:
|
| ... |
... |
@@ -249,17 +238,14 @@ PresenceHelperEvent): |
|
249
|
238
|
self.user_nick = self.stanza.getTagData('nick') or ''
|
|
250
|
239
|
self.contact_nickname = None
|
|
251
|
240
|
self.transport_auto_auth = False
|
|
|
241
|
+
|
|
252
|
242
|
# XEP-0203
|
|
253
|
|
- delay_tag = self.stanza.getTag('delay', namespace=nbxmpp.NS_DELAY2)
|
|
254
|
|
- if delay_tag:
|
|
255
|
|
- self._generate_timestamp(self.stanza.timestamp)
|
|
|
243
|
+ self.timestamp = parse_delay(self.stanza)
|
|
|
244
|
+ if self.timestamp is None:
|
|
|
245
|
+ self.timestamp = time_time()
|
|
|
246
|
+
|
|
256
|
247
|
# XEP-0319
|
|
257
|
|
- self.idle_time = None
|
|
258
|
|
- idle_tag = self.stanza.getTag('idle', namespace=nbxmpp.NS_IDLE)
|
|
259
|
|
- if idle_tag:
|
|
260
|
|
- time_str = idle_tag.getAttr('since')
|
|
261
|
|
- tim = helpers.datetime_tuple(time_str)
|
|
262
|
|
- self.idle_time = timegm(tim)
|
|
|
248
|
+ self.idle_time = parse_idle(self.stanza)
|
|
263
|
249
|
|
|
264
|
250
|
xtags = self.stanza.getTags('x')
|
|
265
|
251
|
for x in xtags:
|
| ... |
... |
@@ -268,9 +254,6 @@ PresenceHelperEvent): |
|
268
|
254
|
self.is_gc = True
|
|
269
|
255
|
elif namespace == nbxmpp.NS_SIGNED:
|
|
270
|
256
|
sig_tag = x
|
|
271
|
|
- elif namespace == nbxmpp.NS_DELAY and not self.timestamp:
|
|
272
|
|
- # XEP-0091
|
|
273
|
|
- self._generate_timestamp(self.stanza.timestamp)
|
|
274
|
257
|
|
|
275
|
258
|
self.status = self.stanza.getStatus() or ''
|
|
276
|
259
|
self._generate_show()
|