public async Task Execute() { //Get tweets var lastTweets = GetTweetsUntilLastSync(_syncAccount.LastSyncTweetId).OrderBy(x => x.Id).ToList(); //Sync if (lastTweets.Count == 0) { return; } foreach (var lastTweet in lastTweets) { var mediasIds = new int[0]; var messageContent = lastTweet.MessageContent; if (lastTweet.MediaUrls != null) { var uploadResults = (await _mastodonService.SubmitAttachementsAsync(_syncAccount.MastodonAccessToken, _syncAccount.MastodonInstance, lastTweet.MediaUrls)).ToArray(); mediasIds = uploadResults.Where(x => x.UploadSucceeded).Select(x => x.AttachementId).ToArray(); var failedUploadAttachementUrls = uploadResults.Where(x => !x.UploadSucceeded).Select(x => x.AttachementUrl); foreach (var url in failedUploadAttachementUrls) { messageContent += $" {url}"; } } await _mastodonService.SubmitTootAsync(_syncAccount.MastodonAccessToken, _syncAccount.MastodonInstance, messageContent, mediasIds); } //Update profile _syncAccount.LastSyncTweetId = lastTweets.Select(x => x.Id).Max(); _syncAccountsRepository.UpdateAccount(_syncAccount); }