示例#1
0
        // Remove the updated threads from session, so a fresh version can be fetched again.
        public void OnThreadUpdatedCacheHandler(Types.ConvThreadCategory category = Types.ConvThreadCategory.Unknown, int officialCoinId = 0, int threadId = 0)
        {
            if (_memoryCache.TryGetValue(Constant.Session.GlobalThreadsByCategory, out List <ConversationFetchData> fetchData))
            {
                if (fetchData.IsNullOrEmpty())
                {
                    return;
                }

                if (threadId > 0)
                {
                    if (fetchData.Any(x => x.Results.Any(t => t.ThreadId == threadId)))
                    {
                        fetchData.RemoveAll(x => x.Results.Any(t => t.ThreadId == threadId));
                        _memoryCache.Set(Constant.Session.GlobalThreadsByCategory, fetchData, TimeSpan.FromHours(24));
                    }
                }
                else if (fetchData.Any(x => x.Category == category && x.OfficialCoinId == officialCoinId))
                {
                    ConversationFetchData desiredResult = fetchData.First(x => x.Category == category && x.OfficialCoinId == officialCoinId);
                    fetchData.Remove(desiredResult);

                    _memoryCache.Set(Constant.Session.GlobalThreadsByCategory, fetchData, TimeSpan.FromHours(24));
                }
            }
        }
示例#2
0
        public async Task <List <BBThread> > GetThreadsByCategory(int take, Types.ConvThreadCategory category, int officialCoinId = 0)
        {
            if (_memoryCache.TryGetValue(Constant.Session.GlobalThreadsByCategory, out List <ConversationFetchData> fetchData))
            {
                if (!fetchData.IsNullOrEmpty() && fetchData.Any(x => x.Take == take && x.Category == category && x.OfficialCoinId == officialCoinId))
                {
                    // This results already exist.
                    ConversationFetchData desiredResult = fetchData.First(x => x.Take == take && x.Category == category && x.OfficialCoinId == officialCoinId);
                    return(desiredResult.Results);
                }
            }

            // Results does not exist, or fetchData itself is non-existant.
            if (fetchData.IsNullOrEmpty())
            {
                fetchData = new List <ConversationFetchData>();
            }

            List <BBThread> results = await CommunityLogic.GetMessageThreads(50, Types.ConvThreadCategory.MainDashboard, CurrentUser, officialCoinId : officialCoinId);

            fetchData.Add(new ConversationFetchData
            {
                Take           = take,
                Category       = category,
                OfficialCoinId = officialCoinId,
                Results        = results
            });
            _memoryCache.Set(Constant.Session.GlobalThreadsByCategory, fetchData, TimeSpan.FromHours(24));

            return(results);
        }