26 #include <unordered_set> 33 class PagedRequestFetcher;
39 class SocialGetFriendsTask;
41 class SocialGetUserInfoTask;
81 void AddListener(std::shared_ptr<IListener> listener);
99 virtual void SetTaskRunner(std::shared_ptr<TaskRunner> taskRunner)
override;
100 virtual void Update()
override;
224 typedef std::function<void(FriendList* source, const std::vector<Friend>& added,
const std::vector<Friend>& removed)>
OnFriendshipChangedFunc;
233 if (mOnFriendInfoChangedFunc !=
nullptr)
235 mOnFriendInfoChangedFunc(source, list);
241 if (mOnFriendshipChangedFunc !=
nullptr)
243 mOnFriendshipChangedFunc(source, added, removed);
249 if (mOnRealtimeFriendRequestReceivedFunc !=
nullptr)
251 mOnRealtimeFriendRequestReceivedFunc(source, request);
257 if (mOnUnreadFriendRequestCountChangedFunc !=
nullptr)
259 mOnUnreadFriendRequestCountChangedFunc(source, count);
265 if (mOnFriendRequestRemovedFunc !=
nullptr)
267 mOnFriendRequestRemovedFunc(source, otherUserId, reason);
uint32_t UserId
Definition: coretypes.h:22
std::shared_ptr< PubSubTopicListener > mPubSubTopicListener
Definition: friendlist.h:182
Definition: socialtypes.h:20
void HandleFriendRemoved(UserId userId)
WaitForExpiry mRecommendedFriendsFetchTimer
Definition: friendlist.h:203
std::shared_ptr< User > GetUser()
Definition: friendlist.h:79
std::map< UserId, FriendRequest > FriendRequestMap
Definition: friendlist.h:139
void NotifyFriendInfoChanges()
std::function< void(std::shared_ptr< SocialFriendRequestsTask > task)> FriendRequestsTaskSetupCallback
Definition: friendlist.h:132
Definition: friendlist.h:220
void AddToPendingFriendAdds(UserId userId)
void RemoveListener(std::shared_ptr< IListener > listener)
virtual void OnUserInfoFetchComplete(TTV_ErrorCode ec) override
TTV_ErrorCode FetchUnreadFriendRequestCount(const FetchUnreadFriendRequestCountCallback &callback)
std::function< void(TTV_ErrorCode ec, const std::vector< FriendRequest > &requests)> FetchFriendRequestsCallback
Definition: friendlist.h:57
std::function< void(TTV_ErrorCode ec)> CompleteCallback
Definition: friendlist.h:129
std::vector< UserInfo > mRecommendedFriends
Definition: friendlist.h:191
std::string mPresenceTopic
Definition: friendlist.h:205
void RequestRecommendedFriends()
void AddToPendingFriendRemoves(const FriendEntry &entry)
virtual void Update() override
std::function< void(TTV_ErrorCode ec, UpdateFriendResult result, FriendStatus status)> UpdateFriendshipCallback
Definition: friendlist.h:54
std::function< void(TTV_ErrorCode ec, const std::vector< Friend > &friends)> FetchFriendListCallback
Definition: friendlist.h:55
FeatureFlags mEnabledFeatures
Definition: friendlist.h:208
OnUnreadFriendRequestCountChangedFunc mOnUnreadFriendRequestCountChangedFunc
Definition: friendlist.h:275
FriendAction
Definition: socialtypes.h:213
void SetFriendPresence(UserId userId, Timestamp updateTime, uint64_t index, PresenceUserAvailability availability, std::unique_ptr< PresenceActivity > &&activity)
TTV_ErrorCode DismissRecommendedFriend(UserId dismissUserId, const DismissRecommendedFriendCallback &callback)
Definition: friendlist.h:51
OnFriendRequestRemovedFunc mOnFriendRequestRemovedFunc
Definition: friendlist.h:276
virtual void OnUnreadFriendRequestCountChanged(FriendList *source, uint32_t count)=0
std::vector< Friend > BuildSocialFriendListResult(const std::unordered_set< UserId > &ids)
virtual void SetTaskRunner(std::shared_ptr< TaskRunner > taskRunner) override
OnRealtimeFriendRequestReceivedFunc mOnRealtimeFriendRequestReceivedFunc
Definition: friendlist.h:274
void AddListener(std::shared_ptr< IListener > listener)
TTV_ErrorCode PerformFriendRequestListManagement(FriendRequestsTaskSetupCallback setupCallback, FriendRequestsTaskProcessResultCallback processCallback, CompleteCallback completeCallback)
TTV_ErrorCode HandleRealtimeFriendRequestReceived(UserId userId)
bool mReceivedFirstFriendRequestUnreadCountFetch
Definition: friendlist.h:211
virtual void OnRealtimeFriendRequestReceived(FriendList *source, const FriendRequest &requestList)=0
uint32_t Timestamp
Definition: coretypes.h:27
Enum
Definition: pubsubclient.h:91
Definition: socialtypes.h:334
void NotifyFriendAddsRemoves()
TTV_ErrorCode UpdateFriendship(UserId otherUserId, FriendAction action, const UpdateFriendshipCallback &callback)
std::function< void(UserId localUserId, UserId otherUserId, TTV_ErrorCode ec)> UserIdsLookupCallback
Definition: friendlist.h:130
FriendRequestRemovalReason
Definition: socialtypes.h:282
void OnTopicMessageReceived(const std::string &topic, const json::Value &msg)
FriendList(const std::shared_ptr< User > &user, const FeatureFlags &enabledFeatures)
virtual void OnFriendRequestRemoved(FriendList *source, UserId otherUserId, FriendRequestRemovalReason reason) override
Definition: friendlist.h:263
TTV_ErrorCode MarkAllFriendRequestsRead(const MarkAllFriendRequestsReadCallback &callback)
std::unordered_set< UserId > mPendingInfoChanges
The list of users who have had their info changed.
Definition: friendlist.h:188
std::function< void(FriendList *source, const std::vector< Friend > &added, const std::vector< Friend > &removed)> OnFriendshipChangedFunc
Definition: friendlist.h:224
WaitForExpiry mFriendRequestFetchTimer
Definition: friendlist.h:201
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
virtual void CompleteShutdown() override
void RequestFriendsList()
Definition: socialtypes.h:358
std::shared_ptr< PagedRequestFetcher > mFriendRequestFetcher
Definition: friendlist.h:213
TTV_ErrorCode FetchFriendRequests(const FetchFriendRequestsCallback &callback)
Definition: friendlist.h:63
std::function< void(FriendList *source, const std::vector< Friend > &list)> OnFriendInfoChangedFunc
Definition: friendlist.h:223
Represents a JSON value.
Definition: value.h:114
std::function< void(TTV_ErrorCode ec, FriendStatus status)> FetchFriendStatusCallback
Definition: friendlist.h:56
bool mReceivedFirstFriendRequestsFetch
Definition: friendlist.h:210
WaitForExpiry mFriendListFetchTimer
Definition: friendlist.h:200
Definition: pubsubclient.h:86
std::map< UserId, Friend > mPendingRemovedFriends
The set of friends who were removed from the friend list.
Definition: friendlist.h:186
Friend friendData
Definition: friendlist.h:125
Definition: eventsource.h:18
TTV_ErrorCode HandleFriendRequestAccepted(UserId userId, FriendRequestRemovalReason reason)
Definition: friendlist.h:109
EventSource< IListener > mListeners
Definition: friendlist.h:204
virtual void OnRealtimeFriendRequestReceived(FriendList *source, const FriendRequest &request) override
Definition: friendlist.h:247
PresenceUserAvailability
Definition: socialtypes.h:37
std::function< void(TTV_ErrorCode ec, const std::vector< UserInfo > &recommendedFriends)> FetchRecommendedFriendsCallback
Definition: friendlist.h:60
void RequestFriendRequestUnreadCount()
std::function< void(TTV_ErrorCode ec)> GetUserInfoCompleteCallback
Definition: friendlist.h:135
FriendList * mOwner
Definition: friendlist.h:120
std::function< void(FriendList *source, uint32_t count)> OnUnreadFriendRequestCountChangedFunc
Definition: friendlist.h:226
std::unordered_set< UserId > mPendingAddedFriends
The set of friends who were added via a friend request.
Definition: friendlist.h:185
virtual bool CheckShutdown() override
uint32_t mNumUnreadFriendRequests
The number of unread friend requests.
Definition: friendlist.h:198
bool mReceivedFirstFriendListFetch
Definition: friendlist.h:209
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
Definition: component.h:87
uint64_t presenceUpdateIndex
Definition: friendlist.h:126
void OnTopicSubscribeStateChanged(const std::string &topic, PubSubClient::SubscribeState::Enum state, TTV_ErrorCode ec)
static std::string GetComponentName()
Definition: friendlist.h:106
virtual void OnUnreadFriendRequestCountChanged(FriendList *source, uint32_t count) override
Definition: friendlist.h:255
virtual TTV_ErrorCode Initialize() override
virtual void OnFriendInfoChanged(FriendList *source, const std::vector< Friend > &friends)=0
CallbackQueue< FetchFriendListCallback > mFetchFriendListCallbacks
Definition: friendlist.h:192
Definition: pubsubclient.h:117
TTV_ErrorCode FetchFriendList(const FetchFriendListCallback &callback)
OnFriendInfoChangedFunc mOnFriendInfoChangedFunc
Definition: friendlist.h:272
virtual void OnFriendshipChanged(FriendList *source, const std::vector< Friend > &added, const std::vector< Friend > &removed)=0
FriendRequestMap mFriendRequests
Definition: friendlist.h:197
TTV_ErrorCode FetchFriendStatus(UserId otherUserId, const FetchFriendStatusCallback &callback)
std::function< void(TTV_ErrorCode ec, uint32_t count)> FetchUnreadFriendRequestCountCallback
Definition: friendlist.h:58
std::function< TTV_ErrorCode(std::shared_ptr< SocialFriendRequestsTask::Result > result)> FriendRequestsTaskProcessResultCallback
Definition: friendlist.h:133
TTV_ErrorCode HandleFriendRequestRemoved(UserId userId, FriendRequestRemovalReason reason)
Definition: socialgetfriendspresencetask.h:23
virtual std::string GetLoggerName() const override
std::map< UserId, FriendEntry > mFriendMap
Definition: friendlist.h:190
bool mReceivedFirstRecommendedFriendsFetch
Definition: friendlist.h:212
std::function< void(FriendList *source, const FriendRequest &request)> OnRealtimeFriendRequestReceivedFunc
Definition: friendlist.h:225
OnFriendshipChangedFunc mOnFriendshipChangedFunc
Definition: friendlist.h:273
std::shared_ptr< UserRepository > mUserRepository
Definition: friendlist.h:179
std::shared_ptr< PubSubClient > mPubSub
Definition: friendlist.h:181
std::function< void(TTV_ErrorCode ec)> DismissRecommendedFriendCallback
Definition: friendlist.h:61
virtual void OnFriendRequestRemoved(FriendList *source, UserId otherUserId, FriendRequestRemovalReason reason)=0
CallbackQueue< FetchUnreadFriendRequestCountCallback > mFetchUnreadFriendRequestCountCallbacks
Definition: friendlist.h:194
std::function< void(UserId ownerUserId, UserId otherUserId, TTV_ErrorCode ec)> FriendChangeSetupCallback
Definition: friendlist.h:137
void RequestFriendRequests()
std::shared_ptr< PubSubTopicListenerHelper > mPubSubTopicListenerHelper
Definition: friendlist.h:183
Definition: friendlist.h:123
TTV_ErrorCode FetchRecommendedFriends(const FetchRecommendedFriendsCallback &callback)
virtual TTV_ErrorCode Shutdown() override
void HandleFriendsList(std::vector< FriendEntry > &&list)
void SetUserRepository(std::shared_ptr< UserRepository > repository)
Definition: friendlist.h:77
std::string mFriendshipTopic
Definition: friendlist.h:206
std::function< UserInfo *(UserId userId)> GetUserInfoTargetCallback
Definition: friendlist.h:136
CallbackQueue< FetchRecommendedFriendsCallback > mFetchRecommendedFriendsCallbacks
Definition: friendlist.h:195
TTV_ErrorCode SubscribeTopics()
std::weak_ptr< User > mUser
Definition: component.h:119
void SetNumUnreadFriendRequests(uint32_t count)
std::function< void(TTV_ErrorCode ec)> MarkAllFriendRequestsReadCallback
Definition: friendlist.h:59
std::function< void(FriendList *source, UserId otherUserId, FriendRequestRemovalReason reason)> OnFriendRequestRemovedFunc
Definition: friendlist.h:227
bool RemoveFriendRequest(UserId userId, FriendRequestRemovalReason reason)
virtual void OnFriendshipChanged(FriendList *source, const std::vector< Friend > &added, const std::vector< Friend > &removed) override
Definition: friendlist.h:239
WaitForExpiry mFriendRequestUnreadCountFetchTimer
Definition: friendlist.h:202
CallbackQueue< FetchFriendRequestsCallback > mFetchFriendRequestsCallbacks
Definition: friendlist.h:193
virtual void OnFriendInfoChanged(FriendList *source, const std::vector< Friend > &list) override
Definition: friendlist.h:231