Ticket #203 (new defect)

Opened 5 years ago

Last modified 5 years ago

Cannot see avatars of many contacts

Reported by: spike411 Owned by:
Priority: normal Milestone:
Component: Misc Version:
Keywords: Cc:

Description

I'm using my jabber.cz ( http://www.jabbim.com/) account and I can't see avatars (in the roster, Info, chat) of most of my contacts. I know they have avatars from other clients.

I don't know if there is XML console or debug functions in SAPO MSG to provide you any logs. I'm using 1.0/736.

In case you have questions, you can also contact me on xmpp:spike411@jabber.cz

Change History

  Changed 5 years ago by melo

Spike,

you can activate debug info using the information on this page: DocAdvancedPrefsKeys.

Check for <presence> stanzas. Right now we support  XEP-0153. Future versions (after #118) we will support  XEP-0084.

follow-up: ↓ 3   Changed 5 years ago by spike411

Maybe your bundled Qt is not compiled with JPEG support? Just a guess, could anyone make a quick check?

in reply to: ↑ 2   Changed 5 years ago by spike411

Replying to spike411: Seems like a wrong guess.

In ~/Library/Caches/SAPO Messenger/accounts data, I found vCards of contacts I can see avatars of in my roster. Only handful of them. I wonder why SAPO doesn't get/request/store vCards of other contacts…

  Changed 5 years ago by melo

Are they announcing support of XEP-0153 in the presence?

  Changed 5 years ago by spike411

Good guess. IIRC Psi 0.10 or Psi 0.11 don't insert <hash> element in <presence>, neither does Jabbim and possibly other clients. Maybe that is the problem.

Maybe SAPO MSG could get vCards when I explicitly open User Info window.

  Changed 5 years ago by melo

That way lies madness, I tell you :)

Yes, we could use the photo element of the vCard when the user does not announce a vCard, but to do that properly, you'd have to pool all the vCards for all the JIDs without a proper Avatar everytime you log in.

You see,

  1. there is no standard to get vCard update notifications;
  2. there is no place to store this receiving-side mapping JID -> Avatar.

The first one means that all the solutions involve pooling and that is something that we should not do. Maybe we could just pool once a week or something like that, but its a hack.

The second is something that we might need later on, but also something that we don't have right now. We could just store this information client side, but that's not a long term solution either.

Without better solutions than pooling, I'm not comfortable on "fixing" this issue on our side.

  Changed 5 years ago by spike411

Just behave the same as you do now, only when i Get Info by hand, request vCard… this way, I can get avatars for clients which don't insert avatar hash in presence. You don't have to get vCards every time you log in.

Other than that, I agree that it is other clients' fault for not following a XEP MUST.

  Changed 5 years ago by melo

Yes, we could fetch the vCard when you click the Get Info button. See #164 for what that entails, and the problems/solutions.

And so after you do that in this session, we show the photo as the contact Avatar.

But the question still remains: where should we store the information that says that for this contacts we should use the picture with the hash XXXXX?

You see, the next time you log on, there is nothing that tells us that that user had a photo in his vcard.

  Changed 5 years ago by spike411

I presume the vCard containing avatar would be cached in ~/Library/Caches/SAPO Messenger/accounts data/vCards-… where it can be looked up using Jabber ID.

  Changed 5 years ago by melo

When deciding which avatar to choose, I believe we only check the image hash, not the vCard.

But I could be wrong. Thats why I was talking about image hash <-> JID mapping. Sorry if I didn't made myself clear.

But João might have some good suggestions about this.

As long as we don't pool vCards, I'll be happy.

I do think that this issue will not be over, and we will need to revisit it when we talk about Address Book integration.

  Changed 5 years ago by spike411

OK, I know what you mean and I don't know how SAPO MSG specifically maps hashes to JIDs, I haven't looked into the internals.

(I only know that Jabbim client uses a file (avatars.def) where jid - hash mappings are saved explicitly.)

  Changed 5 years ago by melo

Hi,

yes, I know that about Jamin. And we will need something similar when we start working on Address Book integration.

We try to stay away from local files as much as we can, though :).

I think the best solution is for those buddies to move to newer clients, but that's not something reasonable to ask from your contacts (I've tried with some of mine :) ).

So some sort of mapping on our side is required. I just wanted to fold this with Address Book integration because there are lot of common use cases.

For example, if a contact has several avatars (because you have different JIDs for example), I want to choose which one of those avatars I'll use in my roster. And I might want to associate this meta-contact with an address book entry and have all his JIDs be added automatically to the address book entry, or even use the avatar of the contact as my address book picture. And all this requires storage of flags and settings, per meta-contact on our side.

So yes, this will be solved, but Avatars might not be the key driver for this development.

  Changed 5 years ago by spike411

At least Psi 0.12 and Jabbim 0.4 will work correctly – their development versions include avatar hash.

Note: See TracTickets for help on using tickets.