I am trying to implement an “invisible mode” (many chat clients have such a feature, including the gtalk inside gmail).
I can set Presence.Type.unavailable, but I stop receiving server updates. I can, however, still send messages and continue conversations (again, expected behavior). I want to (preferably via notifications) get an updated roster from the server without changing my presence.
I know this is possible because it is a feature provided by many chat clients.
Been trying to solve this exact problem for ages.
I messed around with privacy lists a while back but didn’t get very far. I’m sure that this is perhaps the best route to go down at the present.
In the end i just hacked it so that Extended Away (xa) = invisible. i.e if a user has a presence of xa then set them as offline in the roster .
It works for my client as it doesnt need to work with other IM clients, but it is a messy hack and it would be great if there was a more efficient way to do it.