22 #include <unordered_set> 33 class SettingRepository;
34 class PagedRequestFetcher;
38 class ChatUserThreads;
39 class ChatGetDisplayInfoTask;
40 class ChatGetUserThreadsTask;
41 class ChatGetUnreadMessageCountTask;
42 class BitsConfigRepository;
65 void SetListener(std::shared_ptr<IChatUserThreadsListener> listener);
69 virtual void Update()
override;
114 std::shared_ptr<ChatUserThread>
GetThread(
const std::string& threadId);
171 void MergeThreads(
const std::vector<ThreadData>& threadList);
183 std::map<std::string, std::shared_ptr<ChatUserThread>>
mThreadMap;
uint32_t UserId
Definition: coretypes.h:22
Definition: chattypes.h:528
EventSource< IChatUserThreadsListener > mListeners
Definition: chatuserthreads.h:189
std::shared_ptr< PagedRequestFetcher > mThreadPageFetcher
Definition: chatuserthreads.h:191
std::function< void(TTV_ErrorCode ec, MessageId messageId)> SendMessageCallback
Definition: chatuserthreads.h:53
void OnMetadataFetchComplete(ChatUserThread *source, TTV_ErrorCode ec)
virtual ~ChatUserThreads()
TTV_ErrorCode FetchBitsConfig()
void SetBitsConfigRepository(std::shared_ptr< BitsConfigRepository > repository)
Definition: chatuserthreads.h:64
void OnUnreadMessageWindowChanged(ChatUserThread *source, MessageId lastMessageId, MessageId lastReadMessageId)
TTV_ErrorCode FetchThreadData(const std::string &threadId, const FetchThreadDataCallback &callback)
Definition: chatuserthread.h:42
virtual TTV_ErrorCode Initialize() override
std::shared_ptr< PubSubClient > mPubSub
Definition: chatuserthreads.h:193
uint32_t MessageId
Definition: chattypes.h:26
virtual std::string GetLoggerName() const override
std::shared_ptr< PubSubTopicListener > mPubSubTopicListener
Definition: chatuserthreads.h:194
void SetSettingRepository(std::shared_ptr< SettingRepository > settings)
std::shared_ptr< BitsConfiguration > mBitsConfiguration
Definition: chatuserthreads.h:182
void RequestUnreadCounts()
Enum
Definition: pubsubclient.h:91
std::function< void(TTV_ErrorCode ec, const ThreadData &data)> FetchThreadDataCallback
Definition: chatuserthreads.h:55
WaitForExpiry mUnreadSyncTimer
When to update the unread count information from the backend.
Definition: chatuserthreads.h:200
bool mBitsConfigFetchInFlight
Definition: chatuserthreads.h:208
virtual void Update() override
uint32_t mMaxFetchedThreadOffset
The maximum offset for loaded thread pages.
Definition: chatuserthreads.h:206
static std::string GenerateThreadId(UserId a, UserId b)
void OnParticipantsUpdated(ChatUserThread *source, const std::vector< ChatUserInfo > &participants)
TTV_ErrorCode RemoveThread(const std::string &threadId)
CallbackQueue< FetchUnreadCountsCallback > mUnreadCountCallbacks
Definition: chatuserthreads.h:205
void UpdateCachedThreadWithLiveMessage(const WhisperMessage &message)
std::shared_ptr< BitsConfigRepository > mBitsConfigRepository
Definition: chatuserthreads.h:181
void SetTokenizationOptions(const TokenizationOptions &options)
Definition: chatuserthreads.h:61
JSON (JavaScript Object Notation).
Definition: adsapi.h:16
virtual void OnUserInfoFetchComplete(TTV_ErrorCode ec) override
virtual void OnTopicSubscribeStateChanged(PubSubClient *source, const std::string &topic, PubSubClient::SubscribeState::Enum state, TTV_ErrorCode ec) override
std::function< void(TTV_ErrorCode ec, const std::vector< ThreadData > &page, uint32_t total)> FetchThreadDataPageCallback
Definition: chatuserthreads.h:54
std::map< std::string, std::shared_ptr< ChatUserThread > > mThreadMap
The mapping of thread id to thread.
Definition: chatuserthreads.h:183
std::shared_ptr< ChatGetUnreadMessageCountTask > mChatGetUnreadMessageCountTask
Definition: chatuserthreads.h:186
Represents a JSON value.
Definition: value.h:114
std::string mWhisperPubSubTopic
The topic used to subscribe for realtime whisper events.
Definition: chatuserthreads.h:196
void OnRealtimeMessageReceived(ChatUserThread *source, const WhisperMessage &message)
std::function< void(TTV_ErrorCode ec, const UnreadThreadCounts &counts)> FetchUnreadCountsCallback
Definition: chatuserthreads.h:56
Definition: pubsubclient.h:86
std::map< std::string, SendMessageCallback > mPendingSentCallbacksByNonce
Sent message nonces on which we are waiting for an acknowledgement from the server.
Definition: chatuserthreads.h:185
Definition: eventsource.h:18
TTV_ErrorCode SendMessageToUser(UserId userId, const std::string &message, WhisperMessage &placeholderMessage, const SendMessageCallback &callback)
void ProcessSentNonce(const std::string &nonce, MessageId messageId, TTV_ErrorCode ec)
void SetListener(std::shared_ptr< IChatUserThreadsListener > listener)
RetryTimer mCachedThreadSyncTimer
When to refresh the content of cached threads.
Definition: chatuserthreads.h:202
TTV_ErrorCode FetchUnreadCounts(const FetchUnreadCountsCallback &callback)
TokenizationOptions mTokenizationOptions
Definition: chatuserthreads.h:207
uint32_t TTV_ErrorCode
Definition: errortypes.h:30
TTV_ErrorCode SubscribeTopics()
Definition: component.h:87
void BumpThread(const std::string &threadId)
Definition: chatuserthread.h:39
TTV_ErrorCode RemoveThreadWithUser(UserId userId)
Definition: pubsubclient.h:117
Definition: chatuserthreads.h:126
Definition: chatuserthreads.h:140
TTV_ErrorCode FetchChatDisplayInfo()
void SetUserRepository(std::shared_ptr< UserRepository > repository)
Definition: chatuserthreads.h:62
virtual bool CheckShutdown() override
std::shared_ptr< ChatUserThread > GetThread(const std::string &threadId)
virtual void OnTopicMessageReceived(PubSubClient *source, const std::string &topic, const json::Value &msg) override
bool mHasFetchedBitsConfig
Definition: chatuserthreads.h:209
std::vector< std::shared_ptr< ChatUserThread > > mThreadList
The ordered list of cached threads, sorted by decreasing timestamp.
Definition: chatuserthreads.h:184
virtual TTV_ErrorCode Shutdown() override
ChatUserInfo mChatUserInfo
The cached user info for the local user.
Definition: chatuserthreads.h:198
TTV_ErrorCode FetchThreadDataPage(uint32_t offset, uint32_t pageSize, const FetchThreadDataPageCallback &callback)
TTV_ErrorCode TokenizeLocalMessage(const std::shared_ptr< User > &user, const std::string &message, const std::string &threadId, WhisperMessage &chatMessage)
WaitForExpiry mUserChatDisplayFetchTimer
When to fetch the enabled badges and user color info from the backend.
Definition: chatuserthreads.h:201
ChatUserThreads * mOwner
Definition: chatuserthreads.h:153
std::unique_ptr< UnreadThreadCache > mUnreadThreadCache
Definition: chatuserthreads.h:204
PubSubTopicListener(ChatUserThreads *owner)
std::shared_ptr< ChatUserThread::Listener > mInternalThreadListener
Definition: chatuserthreads.h:188
ChatUserThreads * mOwner
Definition: chatuserthreads.h:137
Definition: chattypes.h:126
Definition: chattypes.h:343
virtual void CompleteShutdown() override
std::shared_ptr< ChatGetDisplayInfoTask > mChatGetDisplayInfoTask
Definition: chatuserthreads.h:187
TTV_ErrorCode SyncCachedThreads()
RetryTimer mFetchBitsConfigRetryTimer
Definition: chatuserthreads.h:203
Definition: chattypes.h:41
void OnMuteStatusChanged(ChatUserThread *source, bool muted)
TTV_ErrorCode FetchEmoteSets()
virtual void OnTopicListenerRemoved(PubSubClient *source, const std::string &topic, TTV_ErrorCode ec) override
std::weak_ptr< UserRepository > mUserRepository
Definition: chatuserthreads.h:179
std::shared_ptr< SettingRepository > mSettingRepository
Definition: chatuserthreads.h:180
ChatUserThreads(std::shared_ptr< User > user)
std::shared_ptr< PubSubTopicListenerHelper > mPubSubTopicListenerHelper
Definition: chatuserthreads.h:195
std::shared_ptr< ChatUserThread > CreateThread(const std::string &threadId, const ThreadData *data)
static std::string GetComponentName()
Definition: chatuserthreads.h:118
Definition: chatuserthreads.h:50
TTV_ErrorCode SendMessageWithThread(const std::shared_ptr< ChatUserThread > &thread, UserId otherUserId, const std::string &message, const SendMessageCallback &callback)
void MergeThreads(const std::vector< ThreadData > &threadList)