async Task <bool> ProcessMessages(MessagesProcessor messagesProcessor, ConcurrentBag <TgMessage> returnValue, Func <IEnumerable <Message>, IEnumerable <TgMessage> > map) { try { var messages = await messagesProcessor.GetMessages(); if (!messages.Any()) { return(false); } var tgMessages = map(messages); foreach (var tgMessage in tgMessages) { returnValue.Add(tgMessage); } } catch (Exception exception) { LogManager.GetCurrentClassLogger().Error(exception); return(true); } return(true); }
async Task <IReadOnlyCollection <TgMessage> > GetMessagesForContactId(int contactId) { var returnValue = new List <TgMessage>(); var messagesProcessor = new MessagesProcessor(_client, contactId); for (var messages = await messagesProcessor.GetMessages(); messages.Any(); messages = await messagesProcessor.GetMessages()) { var tgMessages = MapMessages(messages); returnValue.AddRange(tgMessages); } return(returnValue.ToArray()); }