if peer doesn't do chat state do not keep respect that; overcome jep violations for chat state transitions
This commit is contained in:
parent
d03931eec3
commit
754999db24
|
@ -385,7 +385,7 @@ class Interface:
|
|||
chat_win.print_conversation(jid + ' is now ' + chatstate_tag, jid, 'status', tim = array[2])
|
||||
else:
|
||||
# got no valid jep85 answer, peer does not support it
|
||||
chat_win.chatstates[jid] = -1
|
||||
chat_win.chatstates[jid] = False
|
||||
|
||||
if not array[1]: #empty message
|
||||
return
|
||||
|
|
|
@ -26,11 +26,13 @@ from common import i18n
|
|||
|
||||
_ = i18n._
|
||||
|
||||
USE_DBUS = True
|
||||
|
||||
try:
|
||||
import dbus
|
||||
_version = getattr(dbus, 'version', (0, 20, 0))
|
||||
except ImportError:
|
||||
pass
|
||||
USE_DBUS = True # user can't do OpenGPG only if he removed the file!
|
||||
|
||||
if _version >= (0, 41, 0):
|
||||
import dbus.service
|
||||
|
|
|
@ -442,7 +442,7 @@ class TabbedChatWindow(chat.Chat):
|
|||
# None, False and 'ask'
|
||||
# None if no info about peer
|
||||
# False if peer does not support jep85
|
||||
# 'ask' if we sent 'active' chatstate and are waiting for reply
|
||||
# 'ask' if we sent the first 'active' chatstate and are waiting for reply
|
||||
|
||||
# JEP 85 does not allow resending the same chatstate
|
||||
# this function checks for that and just returns so it's safe to call it
|
||||
|
@ -481,13 +481,13 @@ class TabbedChatWindow(chat.Chat):
|
|||
|
||||
# prevent going paused if we we were not composing (JEP violation)
|
||||
if state == 'paused' and not self.chatstates[jid] == 'composing':
|
||||
raise RuntimeError, 'paused chatstate can only exist after composing'
|
||||
gajim.connections[self.account].send_message(jid, None, None,
|
||||
chatstate = 'active') # go active before
|
||||
|
||||
# if we're inactive prevent composing (JEP violation)
|
||||
if self.chatstates[jid] == 'inactive' and state == 'composing':
|
||||
gajim.connections[self.account].send_message(jid, None, None,
|
||||
chatstate = 'active') # send active before
|
||||
#raise RuntimeError, 'inactive chatstate can only be followed by active'
|
||||
chatstate = 'active') # go active before
|
||||
|
||||
self.chatstates[jid] = state
|
||||
#print 'SENDING', state
|
||||
|
@ -520,8 +520,11 @@ class TabbedChatWindow(chat.Chat):
|
|||
|
||||
notif_on = gajim.config.get('send_receive_chat_state_notifications')
|
||||
# chatstates - if no info about peer, start discover procedure
|
||||
|
||||
chatstate_to_send = None
|
||||
if notif_on: # if we have them one
|
||||
|
||||
#FIXME: move me from here to if self.chatstates[jid] is None:
|
||||
#in send_chatstae
|
||||
if self.chatstates[jid] is None:
|
||||
chatstate_to_send = 'active'
|
||||
self.chatstates[jid] = 'ask'
|
||||
|
@ -530,11 +533,10 @@ class TabbedChatWindow(chat.Chat):
|
|||
elif self.chatstates[jid] != False:
|
||||
#send active chatstate on every message (as JEP says)
|
||||
chatstate_to_send = 'active'
|
||||
else: # just send the message
|
||||
chatstate_to_send = None
|
||||
|
||||
gajim.connections[self.account].send_message(jid, message, keyID,
|
||||
chatstate = chatstate_to_send)
|
||||
|
||||
message_buffer.set_text('')
|
||||
self.print_conversation(message, jid, jid, encrypted = encrypted)
|
||||
|
||||
|
|
Loading…
Reference in New Issue