diff options
Diffstat (limited to 'src/com/isode/stroke/avatars')
-rwxr-xr-x | src/com/isode/stroke/avatars/VCardAvatarManager.java | 10 | ||||
-rwxr-xr-x | src/com/isode/stroke/avatars/VCardUpdateAvatarManager.java | 9 |
2 files changed, 12 insertions, 7 deletions
diff --git a/src/com/isode/stroke/avatars/VCardAvatarManager.java b/src/com/isode/stroke/avatars/VCardAvatarManager.java index 83c8c64..a924676 100755 --- a/src/com/isode/stroke/avatars/VCardAvatarManager.java +++ b/src/com/isode/stroke/avatars/VCardAvatarManager.java @@ -17,6 +17,7 @@ import com.isode.stroke.elements.VCard; import com.isode.stroke.crypto.CryptoProvider; import com.isode.stroke.stringcodecs.Hexify; import com.isode.stroke.avatars.AvatarStorage; +import com.isode.stroke.base.ByteArray; import com.isode.stroke.muc.MUCRegistry; import com.isode.stroke.vcards.VCardManager; import com.isode.stroke.signals.Slot2; @@ -62,16 +63,17 @@ public class VCardAvatarManager extends AvatarProvider { String hash = vcardManager_.getPhotoHash(avatarJID); if(hash.length() != 0) { if (!avatarStorage_.hasAvatar(hash)) { - VCard vCard = vcardManager_.getVCard(avatarJID); - if (vCard != null) { - String newHash = Hexify.hexify(crypto_.getSHA1Hash(vCard.getPhoto())); + final VCard vCard = vcardManager_.getVCard(avatarJID); + final ByteArray photo = vCard != null ? vCard.getPhoto() : null; + if (photo != null) { + String newHash = Hexify.hexify(crypto_.getSHA1Hash(photo)); if (!newHash.equals(hash)) { // Shouldn't happen, but sometimes seem to. Might be fixed if we // move to a safer backend. logger_.warning("Inconsistent vCard photo hash cache"); hash = newHash; } - avatarStorage_.addAvatar(hash, vCard.getPhoto()); + avatarStorage_.addAvatar(hash, photo); } else { // Can happen if the cache is inconsistent. diff --git a/src/com/isode/stroke/avatars/VCardUpdateAvatarManager.java b/src/com/isode/stroke/avatars/VCardUpdateAvatarManager.java index 5328fb4..681e94b 100755 --- a/src/com/isode/stroke/avatars/VCardUpdateAvatarManager.java +++ b/src/com/isode/stroke/avatars/VCardUpdateAvatarManager.java @@ -24,12 +24,14 @@ import com.isode.stroke.client.StanzaChannel; import com.isode.stroke.crypto.CryptoProvider; import com.isode.stroke.stringcodecs.Hexify; import com.isode.stroke.avatars.AvatarStorage; +import com.isode.stroke.base.ByteArray; import com.isode.stroke.muc.MUCRegistry; import com.isode.stroke.vcards.VCardManager; import com.isode.stroke.signals.Slot2; import com.isode.stroke.signals.Slot1; import java.util.logging.Logger; + import com.isode.stroke.signals.SignalConnection; public class VCardUpdateAvatarManager extends AvatarProvider { @@ -124,13 +126,14 @@ public class VCardUpdateAvatarManager extends AvatarProvider { return; } - if (vCard.getPhoto().isEmpty()) { + final ByteArray photo = vCard.getPhoto(); + if (photo == null) { setAvatarHash(from, ""); } else { - String hash = Hexify.hexify(crypto_.getSHA1Hash(vCard.getPhoto())); + String hash = Hexify.hexify(crypto_.getSHA1Hash(photo)); if (!avatarStorage_.hasAvatar(hash)) { - avatarStorage_.addAvatar(hash, vCard.getPhoto()); + avatarStorage_.addAvatar(hash, photo); } setAvatarHash(from, hash); } |