X-Git-Url: http://git.maemo.org/git/?p=theonering;a=blobdiff_plain;f=src%2Fconnection.py;h=fa87b316ee5e3aa237ace3054efc00073f692358;hp=2724a45792e0fc5eb9713924f5cfe6907ba35376;hb=bc433598796afa36b5d75b7c40af19abdb573f67;hpb=78b9596221268a59856b410c4360e3da6d2bd60a diff --git a/src/connection.py b/src/connection.py index 2724a45..fa87b31 100644 --- a/src/connection.py +++ b/src/connection.py @@ -4,6 +4,8 @@ import logging import telepathy import constants +import util.go_utils as gobject_utils +import util.coroutines as coroutines import gtk_toolbox import gvoice import handle @@ -35,8 +37,8 @@ class TheOneRingConnection( } def __init__(self, manager, parameters): + self.check_parameters(parameters) try: - self.check_parameters(parameters) account = unicode(parameters['username']) # Connection init must come first @@ -57,7 +59,7 @@ class TheOneRingConnection( self._callbackNumber = parameters['forward'].encode('utf-8') self._channelManager = channel_manager.ChannelManager(self) - cookieFilePath = "%s/cookies.txt" % constants._data_path_ + cookieFilePath = None self._session = gvoice.session.Session(cookieFilePath) self.set_self_handle(handle.create_handle(self, 'connection')) @@ -94,6 +96,9 @@ class TheOneRingConnection( telepathy.CONNECTION_STATUS_REASON_REQUESTED ) try: + self.session.conversations.updateSignalHandler.register_sink( + self._on_conversations_updated + ) self.session.login(*self._credentials) self.session.backend.set_callback_number(self._callbackNumber) except gvoice.backend.NetworkError, e: @@ -123,6 +128,10 @@ class TheOneRingConnection( """ _moduleLogger.info("Disconnecting") try: + self.session.conversations.updateSignalHandler.unregister_sink( + self._on_conversations_updated + ) + self._channelManager.close() self.session.logout() _moduleLogger.info("Disconnected") except Exception: @@ -196,11 +205,17 @@ class TheOneRingConnection( h = handle.create_handle(self, 'contact', requestedContactId, requestedContactNumber) return h - def _on_invite_text(self, contactId): - """ - @todo Get externally initiated conversations working - """ - h = self._create_contact_handle(contactId) - + @coroutines.func_sink + @coroutines.expand_positional + @gobject_utils.async + @gtk_toolbox.log_exception(_moduleLogger) + def _on_conversations_updated(self, conversationIds): + # @todo get conversations update running + # @todo test conversatiuons + _moduleLogger.info("Incoming messages from: %r" % (conversationIds, )) channelManager = self._channelManager - channel = channelManager.channel_for_text(handle) + for contactId, phoneNumber in conversationIds: + h = self._create_contact_handle(contactId, phoneNumber) + # if its new, __init__ will take care of things + # if its old, its own update will take care of it + channel = channelManager.channel_for_text(handle)