|
|
|
@ -371,12 +371,8 @@ class PresenceService(gobject.GObject):
|
|
|
|
|
_logger.debug("Error sharing activity %s: %s" % (activity.get_id(), err))
|
|
|
|
|
self.emit("activity-shared", False, None, err)
|
|
|
|
|
|
|
|
|
|
def share_activity(self, activity, private=True):
|
|
|
|
|
def share_activity(self, activity, properties={}, private=True):
|
|
|
|
|
"""Ask presence service to ask the activity to share itself publicly.
|
|
|
|
|
|
|
|
|
|
activity -- sugar.activity.activity.Activity instance
|
|
|
|
|
private -- bool: True to share by invitation only,
|
|
|
|
|
False to advertise as shared to everyone.
|
|
|
|
|
|
|
|
|
|
Uses the AdvertiseActivity method on the service to ask for the
|
|
|
|
|
sharing of the given activity. Arranges to emit activity-shared
|
|
|
|
@ -389,20 +385,33 @@ class PresenceService(gobject.GObject):
|
|
|
|
|
returns None
|
|
|
|
|
"""
|
|
|
|
|
actid = activity.get_id()
|
|
|
|
|
_logger.debug('XXXX in share_activity')
|
|
|
|
|
|
|
|
|
|
# Ensure the activity is not already shared/joined
|
|
|
|
|
for obj in self._objcache.values():
|
|
|
|
|
if not isinstance(object, Activity):
|
|
|
|
|
continue
|
|
|
|
|
if obj.props.id == actid or obj.props.joined:
|
|
|
|
|
raise RuntimeError("Activity %s is already shared." % actid)
|
|
|
|
|
raise RuntimeError("Activity %s is already shared." %
|
|
|
|
|
actid)
|
|
|
|
|
|
|
|
|
|
atype = activity.get_service_name()
|
|
|
|
|
name = activity.props.title
|
|
|
|
|
# FIXME: Test, then make this AdvertiseActivity:
|
|
|
|
|
self._ps.ShareActivity(actid, atype, name, private,
|
|
|
|
|
reply_handler=lambda *args: self._share_activity_cb(activity, *args),
|
|
|
|
|
error_handler=lambda *args: self._share_activity_error_cb(activity, *args))
|
|
|
|
|
if private:
|
|
|
|
|
_logger.debug('XXXX private, so calling InviteActivity')
|
|
|
|
|
self._ps.InviteActivity(actid, atype, name, properties,
|
|
|
|
|
reply_handler=lambda *args: \
|
|
|
|
|
self._share_activity_cb(activity, *args),
|
|
|
|
|
error_handler=lambda *args: \
|
|
|
|
|
self._share_activity_error_cb(activity, *args))
|
|
|
|
|
else:
|
|
|
|
|
# FIXME: Test, then make this AdvertiseActivity:
|
|
|
|
|
_logger.debug('XXXX not private, so calling ShareActivity')
|
|
|
|
|
self._ps.ShareActivity(actid, atype, name, properties,
|
|
|
|
|
reply_handler=lambda *args: \
|
|
|
|
|
self._share_activity_cb(activity, *args),
|
|
|
|
|
error_handler=lambda *args: \
|
|
|
|
|
self._share_activity_error_cb(activity, *args))
|
|
|
|
|
|
|
|
|
|
def get_preferred_connection(self):
|
|
|
|
|
"""Gets the preferred telepathy connection object that an activity
|
|
|
|
|