aboutsummaryrefslogtreecommitdiff
path: root/libdino/src/service/avatar_manager.vala
diff options
context:
space:
mode:
Diffstat (limited to 'libdino/src/service/avatar_manager.vala')
-rw-r--r--libdino/src/service/avatar_manager.vala18
1 files changed, 9 insertions, 9 deletions
diff --git a/libdino/src/service/avatar_manager.vala b/libdino/src/service/avatar_manager.vala
index 0c98a8f3..d079b70d 100644
--- a/libdino/src/service/avatar_manager.vala
+++ b/libdino/src/service/avatar_manager.vala
@@ -1,9 +1,9 @@
using Gdk;
using Gee;
-using Qlite;
-using Xmpp;
using Dino.Entities;
+using Dino.Qlite;
+using Xmpp;
namespace Dino {
@@ -142,7 +142,7 @@ public class AvatarManager : StreamInteractionModule, Object {
public void unset_avatar(Account account) {
XmppStream stream = stream_interactor.get_stream(account);
if (stream == null) return;
- Xmpp.Xep.UserAvatars.unset_avatar(stream);
+ Xmpp.Xep.UserAvatars.unset_avatar(stream, get_avatar_hash(account, account.bare_jid));
}
private void on_account_added(Account account) {
@@ -157,19 +157,19 @@ public class AvatarManager : StreamInteractionModule, Object {
);
foreach (var entry in get_avatar_hashes(account, Source.USER_AVATARS).entries) {
- on_user_avatar_received(account, entry.key, entry.value);
+ on_user_avatar_received(account, entry.key, entry.value, false);
}
foreach (var entry in get_avatar_hashes(account, Source.VCARD).entries) {
- on_vcard_avatar_received(account, entry.key, entry.value);
+ on_vcard_avatar_received(account, entry.key, entry.value, false);
}
}
- private void on_user_avatar_received(Account account, Jid jid_, string id) {
+ private void on_user_avatar_received(Account account, Jid jid_, string id, bool is_live = true) {
Jid jid = jid_.bare_jid;
if (!user_avatars.has_key(jid) || user_avatars[jid] != id) {
user_avatars[jid] = id;
- set_avatar_hash(account, jid, id, Source.USER_AVATARS);
+ if (is_live) set_avatar_hash(account, jid, id, Source.USER_AVATARS);
}
received_avatar(jid, account);
}
@@ -181,13 +181,13 @@ public class AvatarManager : StreamInteractionModule, Object {
received_avatar(jid, account);
}
- private void on_vcard_avatar_received(Account account, Jid jid_, string id) {
+ private void on_vcard_avatar_received(Account account, Jid jid_, string id, bool is_live = true) {
bool is_gc = stream_interactor.get_module(MucManager.IDENTITY).might_be_groupchat(jid_.bare_jid, account);
Jid jid = is_gc ? jid_ : jid_.bare_jid;
if (!vcard_avatars.has_key(jid) || vcard_avatars[jid] != id) {
vcard_avatars[jid] = id;
- if (jid.is_bare()) { // don't save MUC occupant avatars
+ if (is_live && jid.is_bare()) { // don't save MUC occupant avatars
set_avatar_hash(account, jid, id, Source.VCARD);
}
}