use NEC to handle signed-in events
This commit is contained in:
parent
e9f5065479
commit
346b38944c
7 changed files with 49 additions and 36 deletions
|
@ -1547,7 +1547,7 @@ class Connection(CommonConnection, ConnectionHandlers):
|
||||||
self.get_annotations()
|
self.get_annotations()
|
||||||
|
|
||||||
# Inform GUI we just signed in
|
# Inform GUI we just signed in
|
||||||
self.dispatch('SIGNED_IN', ())
|
gajim.nec.push_incoming_event(SignedInEvent(None, conn=self))
|
||||||
|
|
||||||
def get_signed_presence(self, msg, callback = None):
|
def get_signed_presence(self, msg, callback = None):
|
||||||
if gajim.config.get_per('accounts', self.name, 'gpg_sign_presence'):
|
if gajim.config.get_per('accounts', self.name, 'gpg_sign_presence'):
|
||||||
|
|
|
@ -2031,7 +2031,7 @@ ConnectionJingle, ConnectionIBBytestream):
|
||||||
self.get_annotations()
|
self.get_annotations()
|
||||||
|
|
||||||
# Inform GUI we just signed in
|
# Inform GUI we just signed in
|
||||||
self.dispatch('SIGNED_IN', ())
|
gajim.nec.push_incoming_event(SignedInEvent(None, conn=self))
|
||||||
self.send_awaiting_pep()
|
self.send_awaiting_pep()
|
||||||
self.continue_connect_info = None
|
self.continue_connect_info = None
|
||||||
|
|
||||||
|
|
|
@ -1574,3 +1574,7 @@ class FailedDecryptEvent(nec.NetworkIncomingEvent):
|
||||||
self.session = self.msg_obj.session
|
self.session = self.msg_obj.session
|
||||||
self.printed_in_chat = False
|
self.printed_in_chat = False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
class SignedInEvent(nec.NetworkIncomingEvent):
|
||||||
|
name = 'signed-in'
|
||||||
|
base_network_events = []
|
||||||
|
|
|
@ -279,7 +279,7 @@ class ConnectionZeroconf(CommonConnection, ConnectionHandlersZeroconf):
|
||||||
check = self.connection.announce()
|
check = self.connection.announce()
|
||||||
else:
|
else:
|
||||||
self.connected = STATUS_LIST.index(show)
|
self.connected = STATUS_LIST.index(show)
|
||||||
self.dispatch('SIGNED_IN', ())
|
gajim.nec.push_incoming_event(SignedInEvent(None, conn=self))
|
||||||
|
|
||||||
# stay offline when zeroconf does something wrong
|
# stay offline when zeroconf does something wrong
|
||||||
if check:
|
if check:
|
||||||
|
|
|
@ -464,6 +464,8 @@ class GroupchatControl(ChatControlBase):
|
||||||
self._nec_gc_subject_received)
|
self._nec_gc_subject_received)
|
||||||
gajim.ged.register_event_handler('gc-config-changed-received', ged.GUI1,
|
gajim.ged.register_event_handler('gc-config-changed-received', ged.GUI1,
|
||||||
self._nec_gc_config_changed_received)
|
self._nec_gc_config_changed_received)
|
||||||
|
gajim.ged.register_event_handler('signed-in', ged.GUI1,
|
||||||
|
self._nec_signed_in)
|
||||||
gajim.gc_connected[self.account][self.room_jid] = False
|
gajim.gc_connected[self.account][self.room_jid] = False
|
||||||
# disable win, we are not connected yet
|
# disable win, we are not connected yet
|
||||||
ChatControlBase.got_disconnected(self)
|
ChatControlBase.got_disconnected(self)
|
||||||
|
@ -1228,6 +1230,15 @@ class GroupchatControl(ChatControlBase):
|
||||||
for change in changes:
|
for change in changes:
|
||||||
self.print_conversation(change)
|
self.print_conversation(change)
|
||||||
|
|
||||||
|
def _nec_signed_in(self, obj):
|
||||||
|
if obj.conn.name != self.account:
|
||||||
|
return
|
||||||
|
if self.room_jid in gajim.gc_connected[obj.conn.name] and \
|
||||||
|
gajim.gc_connected[obj.conn.name][self.room_jid]:
|
||||||
|
return
|
||||||
|
password = gajim.gc_passwords.get(self.room_jid, '')
|
||||||
|
obj.conn.join_gc(self.nick, self.room_jid, password)
|
||||||
|
|
||||||
def got_connected(self):
|
def got_connected(self):
|
||||||
# Make autorejoin stop.
|
# Make autorejoin stop.
|
||||||
if self.autorejoin:
|
if self.autorejoin:
|
||||||
|
@ -1855,6 +1866,8 @@ class GroupchatControl(ChatControlBase):
|
||||||
self._nec_gc_subject_received)
|
self._nec_gc_subject_received)
|
||||||
gajim.ged.remove_event_handler('gc-config-changed-received', ged.GUI1,
|
gajim.ged.remove_event_handler('gc-config-changed-received', ged.GUI1,
|
||||||
self._nec_gc_config_changed_received)
|
self._nec_gc_config_changed_received)
|
||||||
|
gajim.ged.remove_event_handler('signed-in', ged.GUI1,
|
||||||
|
self._nec_signed_in)
|
||||||
|
|
||||||
if self.room_jid in gajim.gc_connected[self.account] and \
|
if self.room_jid in gajim.gc_connected[self.account] and \
|
||||||
gajim.gc_connected[self.account][self.room_jid]:
|
gajim.gc_connected[self.account][self.room_jid]:
|
||||||
|
|
|
@ -1002,17 +1002,16 @@ class Interface:
|
||||||
gajim.connections[account].request_last_status_time(contact.jid,
|
gajim.connections[account].request_last_status_time(contact.jid,
|
||||||
contact.resource)
|
contact.resource)
|
||||||
|
|
||||||
def handle_event_signed_in(self, account, empty):
|
def handle_event_signed_in(self, obj):
|
||||||
"""
|
"""
|
||||||
SIGNED_IN event is emitted when we sign in, so handle it
|
SIGNED_IN event is emitted when we sign in, so handle it
|
||||||
"""
|
"""
|
||||||
# ('SIGNED_IN', account, ())
|
# ('SIGNED_IN', account, ())
|
||||||
# block signed in notifications for 30 seconds
|
# block signed in notifications for 30 seconds
|
||||||
|
account = obj.conn.name
|
||||||
gajim.block_signed_in_notifications[account] = True
|
gajim.block_signed_in_notifications[account] = True
|
||||||
self.roster.set_actions_menu_needs_rebuild()
|
|
||||||
self.roster.draw_account(account)
|
|
||||||
state = self.sleeper.getState()
|
state = self.sleeper.getState()
|
||||||
connected = gajim.connections[account].connected
|
connected = obj.conn.connected
|
||||||
if gajim.config.get('ask_offline_status_on_connection'):
|
if gajim.config.get('ask_offline_status_on_connection'):
|
||||||
# Ask offline status in 1 minute so w'are sure we got all online
|
# Ask offline status in 1 minute so w'are sure we got all online
|
||||||
# presences
|
# presences
|
||||||
|
@ -1026,37 +1025,28 @@ class Interface:
|
||||||
# nothing
|
# nothing
|
||||||
# Else disable autoaway
|
# Else disable autoaway
|
||||||
gajim.sleeper_state[account] = 'off'
|
gajim.sleeper_state[account] = 'off'
|
||||||
invisible_show = gajim.SHOW_LIST.index('invisible')
|
|
||||||
# We cannot join rooms if we are invisible
|
if obj.conn.archiving_supported:
|
||||||
if gajim.connections[account].connected == invisible_show:
|
|
||||||
return
|
|
||||||
# join already open groupchats
|
|
||||||
for gc_control in self.msg_win_mgr.get_controls(
|
|
||||||
message_control.TYPE_GC) + self.minimized_controls[account].values():
|
|
||||||
if account != gc_control.account:
|
|
||||||
continue
|
|
||||||
room_jid = gc_control.room_jid
|
|
||||||
if room_jid in gajim.gc_connected[account] and \
|
|
||||||
gajim.gc_connected[account][room_jid]:
|
|
||||||
continue
|
|
||||||
nick = gc_control.nick
|
|
||||||
password = gajim.gc_passwords.get(room_jid, '')
|
|
||||||
gajim.connections[account].join_gc(nick, room_jid, password)
|
|
||||||
# send currently played music
|
|
||||||
if gajim.connections[account].pep_supported and dbus_support.supported \
|
|
||||||
and gajim.config.get_per('accounts', account, 'publish_tune'):
|
|
||||||
self.enable_music_listener()
|
|
||||||
# enable location listener
|
|
||||||
if gajim.connections[account].pep_supported and dbus_support.supported \
|
|
||||||
and gajim.config.get_per('accounts', account, 'publish_location'):
|
|
||||||
location_listener.enable()
|
|
||||||
if gajim.connections[account].archiving_supported:
|
|
||||||
# Start merging logs from server
|
# Start merging logs from server
|
||||||
gajim.connections[account].request_modifications_page(
|
obj.conn.request_modifications_page(gajim.config.get_per('accounts',
|
||||||
gajim.config.get_per('accounts', account, 'last_archiving_time'))
|
account, 'last_archiving_time'))
|
||||||
gajim.config.set_per('accounts', account, 'last_archiving_time',
|
gajim.config.set_per('accounts', account, 'last_archiving_time',
|
||||||
time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime()))
|
time.strftime('%Y-%m-%dT%H:%M:%SZ', time.gmtime()))
|
||||||
|
|
||||||
|
invisible_show = gajim.SHOW_LIST.index('invisible')
|
||||||
|
# We cannot join rooms if we are invisible
|
||||||
|
if connected == invisible_show:
|
||||||
|
return
|
||||||
|
# send currently played music
|
||||||
|
if obj.conn.pep_supported and dbus_support.supported and \
|
||||||
|
gajim.config.get_per('accounts', account, 'publish_tune'):
|
||||||
|
self.enable_music_listener()
|
||||||
|
# enable location listener
|
||||||
|
if obj.conn.pep_supported and dbus_support.supported and \
|
||||||
|
gajim.config.get_per('accounts', account, 'publish_location'):
|
||||||
|
location_listener.enable()
|
||||||
|
|
||||||
|
|
||||||
def handle_event_metacontacts(self, obj):
|
def handle_event_metacontacts(self, obj):
|
||||||
gajim.contacts.define_metacontacts(obj.conn.name, obj.meta_list)
|
gajim.contacts.define_metacontacts(obj.conn.name, obj.meta_list)
|
||||||
|
|
||||||
|
@ -1403,7 +1393,6 @@ class Interface:
|
||||||
'FILE_REQUEST': [self.handle_event_file_request],
|
'FILE_REQUEST': [self.handle_event_file_request],
|
||||||
'FILE_REQUEST_ERROR': [self.handle_event_file_request_error],
|
'FILE_REQUEST_ERROR': [self.handle_event_file_request_error],
|
||||||
'FILE_SEND_ERROR': [self.handle_event_file_send_error],
|
'FILE_SEND_ERROR': [self.handle_event_file_send_error],
|
||||||
'SIGNED_IN': [self.handle_event_signed_in],
|
|
||||||
'atom-entry-received': [self.handle_atom_entry],
|
'atom-entry-received': [self.handle_atom_entry],
|
||||||
'bad-gpg-passphrase': [self.handle_event_bad_gpg_passphrase],
|
'bad-gpg-passphrase': [self.handle_event_bad_gpg_passphrase],
|
||||||
'bookmarks-received': [self.handle_event_bookmarks],
|
'bookmarks-received': [self.handle_event_bookmarks],
|
||||||
|
@ -1438,6 +1427,7 @@ class Interface:
|
||||||
'roster-info': [self.handle_event_roster_info],
|
'roster-info': [self.handle_event_roster_info],
|
||||||
'roster-item-exchange-received': \
|
'roster-item-exchange-received': \
|
||||||
[self.handle_event_roster_item_exchange],
|
[self.handle_event_roster_item_exchange],
|
||||||
|
'signed-in': [self.handle_event_signed_in],
|
||||||
'ssl-error': [self.handle_event_ssl_error],
|
'ssl-error': [self.handle_event_ssl_error],
|
||||||
'stream-conflict-received': [self.handle_event_resource_conflict],
|
'stream-conflict-received': [self.handle_event_resource_conflict],
|
||||||
'subscribe-presence-received': [
|
'subscribe-presence-received': [
|
||||||
|
|
|
@ -2517,6 +2517,10 @@ class RosterWindow:
|
||||||
def _nec_metacontacts_received(self, obj):
|
def _nec_metacontacts_received(self, obj):
|
||||||
self.redraw_metacontacts(obj.conn.name)
|
self.redraw_metacontacts(obj.conn.name)
|
||||||
|
|
||||||
|
def _nec_signed_in(self, obj):
|
||||||
|
self.set_actions_menu_needs_rebuild()
|
||||||
|
self.draw_account(obj.conn.name)
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
### Menu and GUI callbacks
|
### Menu and GUI callbacks
|
||||||
### FIXME: order callbacks in itself...
|
### FIXME: order callbacks in itself...
|
||||||
|
@ -6271,3 +6275,5 @@ class RosterWindow:
|
||||||
self._nec_gc_subject_received)
|
self._nec_gc_subject_received)
|
||||||
gajim.ged.register_event_handler('metacontacts-received', ged.GUI2,
|
gajim.ged.register_event_handler('metacontacts-received', ged.GUI2,
|
||||||
self._nec_metacontacts_received)
|
self._nec_metacontacts_received)
|
||||||
|
gajim.ged.register_event_handler('signed-in', ged.GUI1,
|
||||||
|
self._nec_signed_in)
|
||||||
|
|
Loading…
Add table
Reference in a new issue