public async Task<Listing> GetMessages(int? limit)
{
var user = await _userService.GetUser();
if (user == null || string.IsNullOrEmpty(user.Username))
{
return await _redditService.GetMessages(limit);
}
lock (_currentlyStoringMessages)
{
if (_currentlyStoringMessages.ContainsKey(user.Username))
return _currentlyStoringMessages[user.Username];
}
if (user.Username != null)
return MaybeStoreMessages(user, await _redditService.GetMessages(limit));
var messages = await _offlineService.GetMessages(user);
if (messages != null && messages.Data.Children.Count > 0)
return messages;
else
return MaybeStoreMessages(user, await _redditService.GetMessages(limit));
}