public async Task <IEnumerable <PinData> > GetPins(IMessageChannel channel) { using (var db = data.GetContext()) { var pinIdsTask = db.GetPins(channel.Id); var pinsTask = channel.GetPinnedMessagesAsync(); await Task.WhenAll(pinIdsTask, pinsTask); var pinIds = pinIdsTask.Result; return(pinsTask.Result.OfType <IUserMessage>().Select(x => new PinData(x, pinIds.Contains(x.Id)))); } }
public async Task Refresh(IMessageChannel channel) { var pinsTask = channel.GetPinnedMessagesAsync(); using (var db = data.GetContext()) { var superPinsTask = db.GetPins(channel.Id); await Task.WhenAll(pinsTask, superPinsTask); var superPins = superPinsTask.Result; await Repin(pinsTask.Result.OfType <IUserMessage>().Where(x => superPins.Contains(x.Id))); } }