- def _create_contact_handle(self, name):
- requestedContactId = name
-
- contacts = self.session.addressbook.get_contacts()
- contactsFound = [
- contactId for contactId in contacts
- if contactId == requestedContactId
- ]
-
- if 0 < len(contactsFound):
- contactId = contactsFound[0]
- if len(contactsFound) != 1:
- _moduleLogger.error("Contact ID was not unique: %s for %s" % (contactId, ))
- else:
- contactId = requestedContactId
- h = handle.create_handle(self, 'contact', contactId)
+ def _generate_props(self, channelType, handle, suppressHandler, initiatorHandle=None):
+ targetHandle = 0 if handle is None else handle.get_id()
+ targetHandleType = telepathy.HANDLE_TYPE_NONE if handle is None else handle.get_type()
+ props = {
+ telepathy.CHANNEL_INTERFACE + '.ChannelType': channelType,
+ telepathy.CHANNEL_INTERFACE + '.TargetHandle': targetHandle,
+ telepathy.CHANNEL_INTERFACE + '.TargetHandleType': targetHandleType,
+ telepathy.CHANNEL_INTERFACE + '.Requested': suppressHandler
+ }
+
+ if initiatorHandle is not None:
+ props[telepathy.CHANNEL_INTERFACE + '.InitiatorHandle'] = initiatorHandle.id
+
+ return props
+
+ @gobject_utils.async
+ @gtk_toolbox.log_exception(_moduleLogger)
+ def _on_conversations_updated(self, conv, conversationIds):
+ # @todo get conversations update running
+ # @todo test conversatiuons
+ _moduleLogger.info("Incoming messages from: %r" % (conversationIds, ))
+ for contactId, phoneNumber in conversationIds:
+ h = handle.create_handle(self, 'contact', contactId, phoneNumber)
+ # Just let the TextChannel decide whether it should be reported to the user or not
+ props = self._generate_props(telepathy.CHANNEL_TYPE_TEXT, h, False)
+ channel = self._channelManager.channel_for_props(props, signal=True)