/* * Copyright (c) 2010-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #pragma once #include #include #include #include #include #include #include #include namespace Swift { class MUCRegistry; class AvatarStorage; class StanzaChannel; class VCardManager; class CryptoProvider; class SWIFTEN_API VCardUpdateAvatarManager : public AvatarProvider, public boost::signals2::trackable { public: VCardUpdateAvatarManager(VCardManager*, StanzaChannel*, AvatarStorage*, CryptoProvider* crypto, MUCRegistry* = nullptr); boost::optional getAvatarHash(const JID&) const; private: void handlePresenceReceived(std::shared_ptr); void handleStanzaChannelAvailableChanged(bool); void handleVCardChanged(const JID& from, VCard::ref); void setAvatarHash(const JID& from, const std::string& hash); JID getAvatarJID(const JID& o) const; private: VCardManager* vcardManager_; AvatarStorage* avatarStorage_; CryptoProvider* crypto_; MUCRegistry* mucRegistry_; std::map avatarHashes_; }; }