EionRobb / pidgin-opensteamworks

Steam plugin for Pidgin/libpurple
153 stars 5 forks source link

When all merged contacts are offline, Steam goes to top. #132

Closed TheT113 closed 8 years ago

TheT113 commented 8 years ago

If you merge a contact (by right clicking on Expand) and combine multiple contacts plus a user's Steam account, then you can move them up and down to reflect what priority you want them in. If all of a user's accounts are offline, the top one is defaulted to show offline. With the Steam entries for whatever reason, this isn't the case, and they default to top.

This is annoying for things like Skype or Facebook, where messaging someone when they're offline is preferable, instead of sending an offline message to their Steam account, which I may not want to. I'd like it to default to the order I put it in.

EionRobb commented 8 years ago

Ah, the way Pidgin sorts the buddies in the list is by availability - the most available at the top and the least available (offline) buried below. Buddies that have announced that they're on a mobile device get lower priority again.

Unfortunately a protocol plugin like this one has no control over the ordering, it's purely up to the user interface (Pidgin/Finch/Adium/Empathy/etc) to decide how they want to display buddies.

If you have any further questions about how this works, feel free to ask them, but unfortunately I can't really do much about the ordering as it is.

TheT113 commented 8 years ago

I'm glad you didn't take the time to read what I wrote?

Your plugin adds an inconsistency to the way Pidgin handles the sorting. I can't believe you need to draw you a diagram, but.

Pidgin sorts based on availability. If more than one contact is at the same availability level, it chooses the order you put them in. So if I have one merged contact made of profiles A, B, and C, in order, then:

A [Offline] B [Offline] C [Offline]

is expected.

B [Online] A [Offline] C [Offline]

is expected.

C [Online] A [Away] B [Away]

is expected.

Your Steam plugin causes this to happen:

C [Offline] [Steam] A [Offline] B [Offline]

This is inconsistent and and handled incorrectly from how Pidgin is supposed to work. You can't pass the blame on Pidgin devs when it's your plugin doing it.

EionRobb commented 8 years ago

I'm sorry if you got the impression that I didn't read your issue. I most definitely do.

Unfortunately the ordering of buddies in a grouped contact is not something the plugin has control over. The most that the plugin can do is set availibity status for a buddy. It's up to the user interface to decide how to display the buddy and, if the UI supports grouped contacts, to decide how to pick the buddy with the highest priority.

I'm more than happy to make any changes needed in the code to get your desired output (I too don't think that a steam buddy should get a higher priority than other protocols, if they're all the same availibity) but it really is out of the hands of the protocol to give any influence to this.

If it's just about offline buddies, then perhaps choosing not to show offline buddies might help? You might be able to use the "show when offline" option just on the facebook buddy but "hide when offline" on the steam buddy?

TheT113 commented 8 years ago

No, neither of those do anything, and I shouldn't be required to use a workaround to make your plugin work correctly. Unfortunately, I'm not a programmer, so I don't know what the cause of the issue is. But your plugin is the only one that has the issue, and Pidgin otherwise has a completely consistent way of handling merged contacts. I would appreciate it if you could find time to look into this at some point.