Synopsis (see below for further explanation):
- if this is not a group or contact
is not a member of this channel, result is undefined;
- if TP_CHANNEL_FEATURE_CONTACTS
has not yet been prepared, result is undefined; - if this
does not have flags that include PROPERTIES, result is
undefined; - if contact
is channel-specific and its globally valid "owner" is known, return that owner; - if contact
is channel-specific and its globally valid "owner" is unknown, return null
; - if contact
is globally
valid, return contact
itself
Some channels (those with flags that include CHANNEL_SPECIFIC_HANDLES) have a concept of "channel-specific contacts". These are contacts that only have meaning within the context of the channel - for instance, in XMPP Multi-User Chat, participants in a chatroom are identified by an in-room JID consisting of the JID of the chatroom plus a local nickname.
Depending on the protocol and configuration, it might be possible to find out what globally valid contact (i.e. a contact that you could add to your contact list) "owns" a channel-specific contact. For instance, in most XMPP MUC chatrooms, normal users cannot see what global JID corresponds to an in-room JID, but moderators can.
This is further complicated by the fact that channels with channel-specific contacts can sometimes have members with globally valid contacts (for instance, if you invite someone to an XMPP MUC using their globally valid JID, you would expect to see the contact representing that JID in the Group's remote-pending set).
this |
a channel |
contact |
a contact which is a member of this channel |
the global contact that owns the given contact, or |