[Bug 45120] New: tp_account_manager_get_most_available_presence() returns Offline with Idle

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Mon Jan 23 13:31:02 CET 2012


https://bugs.freedesktop.org/show_bug.cgi?id=45120

             Bug #: 45120
           Summary: tp_account_manager_get_most_available_presence()
                    returns Offline with Idle
    Classification: Unclassified
           Product: Telepathy
           Version: unspecified
          Platform: Other
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: medium
         Component: tp-glib
        AssignedTo: telepathy-bugs at lists.freedesktop.org
        ReportedBy: guillaume.desmottes at collabora.co.uk
         QAContact: telepathy-bugs at lists.freedesktop.org


>From bug #21957 :

"""
> The current situation confuses Empathy and the Shell (which are both using
> tp_account_manager_get_most_available_presence()) if only Idle accounts are
> connected. As they don't implement SimplePresence, there is no "most available
> presence" and so UIs claim we are offline.

I don't think this is really Idle's fault: MC, telepathy-glib and clients
should cope with this situation. Is get_most_available_presence actually
returning OFFLINE, or is it really UNSET?

If it's UNSET, I believe MC uses UNSET to mean "it's online but does not report
any specific presence" - as a most available presence, UIs should treat that as
online.

Rationale for UNSET meaning that per-account: if we used AVAILABLE, then this
situation:

    XMPP: BUSY
    IRC: online

would be reported by get_most_available_presence as AVAILABLE, which is clearly
wrong: it should be BUSY. With the special handling of UNSET, and UNSET
prioritized below all online presences, it's reported as BUSY as expected.

I see two possibilities to fix this:

1) Change get_most_available_presence to return AVAILABLE if it would have
returned UNSET (implementation detail: you will want to store
priv->most_available_presence == UNSET, and only do the translation in the API
- otherwise certain state transitions will be wrong)

2) Change clients (Empathy, Shell) to treat UNSET as an online status

Some things to test if you do (1):

* XMPP offline, IRC online -> AVAILABLE (or UNSET for (2))
* XMPP BUSY, IRC online -> BUSY
* XMPP offline, IRC online, XMPP changes to BUSY -> AVAILABLE changes to BUSY

(That last one is an example of a transition that would break if you stored
priv->most_available_presence == AVAILABLE for the only-IRC-online case.)
"""

According to my test, it does return Offline which doesn't fit with either 1)
or 2).

-- 
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA Contact for the bug.
You are the assignee for the bug.



More information about the telepathy-bugs mailing list