From 561d871677f775e9e1374bb14d8d9fa51de50fb5 Mon Sep 17 00:00:00 2001 From: Ronald Barendse Date: Mon, 3 Mar 2025 06:47:37 +0100 Subject: [PATCH] Remove `await Task.FromResult()` and unnecessary async modifiers (#16535) * Remove await Task.FromResult and unnecessary async modifiers * Remove usage of await Task.WhenAll() to avoid deadlocks * Fix code formatting --------- Co-authored-by: Andy Butland --- .../Content/ByIdsContentApiController.cs | 2 +- .../Content/ByRouteContentApiController.cs | 2 +- .../Media/ByIdMediaApiController.cs | 14 +++--- .../Media/ByIdsMediaApiController.cs | 12 ++--- .../Media/ByPathMediaApiController.cs | 14 +++--- .../Media/QueryMediaApiController.cs | 14 +++--- .../Culture/AllCultureController.cs | 6 +-- .../Dictionary/AllDictionaryController.cs | 4 +- .../Tree/DictionaryTreeControllerBase.cs | 13 +++++- .../Item/ItemDocumentItemController.cs | 8 ++-- .../Item/SearchDocumentItemController.cs | 10 ++--- .../AreReferencedDocumentController.cs | 4 +- .../ReferencedByDocumentController.cs | 2 +- ...ReferencedDescendantsDocumentController.cs | 4 +- .../Document/UpdateNotificationsController.cs | 4 +- .../Item/ItemDocumentBlueprintController.cs | 8 ++-- .../Item/ItemDocumentTypeItemController.cs | 8 ++-- .../Item/SearchDocumentTypeItemController.cs | 8 ++-- .../DynamicRoot/GetQueryStepsController.cs | 4 +- .../ExecuteActionHealthCheckController.cs | 2 +- .../Group/AllHealthCheckGroupController.cs | 4 +- .../Group/ByNameHealthCheckGroupController.cs | 6 +-- .../Indexer/DetailsIndexerController.cs | 9 ++-- .../Indexer/RebuildIndexerController.cs | 10 ++--- .../AllSinkLevelLogViewerController.cs | 4 +- .../Media/Item/ItemMediaItemController.cs | 8 ++-- .../Media/Item/SearchMediaItemController.cs | 6 +-- .../Controllers/Media/MediaUrlController.cs | 6 +-- .../AreReferencedMediaController.cs | 4 +- .../References/ReferencedByMediaController.cs | 2 +- .../ReferencedDescendantsMediaController.cs | 4 +- .../MediaType/ByKeyMediaTypeController.cs | 4 +- .../Item/ItemMediaTypeItemController.cs | 8 ++-- .../Item/SearchMediaTypeItemController.cs | 8 ++-- .../Member/Item/ItemMemberItemController.cs | 8 ++-- .../Member/Item/SearchMemberItemController.cs | 10 ++--- .../MemberGroup/AllMemberGroupController.cs | 4 +- .../Item/ItemMemberGroupItemController.cs | 6 +-- .../Item/ItemMemberTypeItemController.cs | 6 +-- .../Item/SearchMemberTypeItemController.cs | 8 ++-- .../BuildModelsBuilderController.cs | 6 +-- .../GetModelsBuilderController.cs | 6 +-- .../StatusModelsBuilderController.cs | 6 +-- .../AllowedObjectTypesController.cs | 6 +-- .../Created/AllCreatedPackageController.cs | 2 +- .../Item/ItemPartialViewItemController.cs | 8 ++-- .../RebuildPublishedCacheController.cs | 6 +-- .../ReloadPublishedCacheController.cs | 7 ++- .../StatusPublishedCacheController.cs | 8 ++-- .../RecycleBin/RecycleBinControllerBase.cs | 9 ++-- ...eteByKeyRedirectUrlManagementController.cs | 4 +- .../GetAllRedirectUrlManagementController.cs | 4 +- .../ByRelationTypeKeyRelationController.cs | 7 ++- .../ByKeyRelationTypeController.cs | 8 ++-- .../Item/ItemRelationTypeItemController.cs | 8 ++-- .../Script/Item/ItemScriptItemController.cs | 8 ++-- .../Searcher/AllSearcherController.cs | 6 +-- .../Searcher/QuerySearcherController.cs | 12 ++--- .../Security/BackOfficeController.cs | 4 +- .../ConfigurationSecurityController.cs | 6 +-- .../Server/StatusServerController.cs | 6 +-- .../Item/ItemStaticFileItemController.cs | 8 ++-- .../Item/ItemStylesheetItemController.cs | 8 ++-- .../Controllers/Tag/ByQueryTagController.cs | 4 +- .../Telemetry/AllTelemetryController.cs | 4 +- .../Telemetry/GetTelemetryController.cs | 6 +-- .../Telemetry/SetTelemetryController.cs | 4 +- .../Query/ExecuteTemplateQueryController.cs | 6 +-- .../Query/SettingsTemplateQueryController.cs | 6 +-- .../Tree/EntityTreeControllerBase.cs | 18 ++++---- .../Tree/FileSystemTreeControllerBase.cs | 14 +++--- .../Tree/FolderTreeControllerBase.cs | 15 ++++--- .../Upgrade/SettingsUpgradeController.cs | 6 +-- .../UrlSegment/ResizeImagingController.cs | 6 +-- ...DocumentNotificationPresentationFactory.cs | 13 +++--- .../DocumentVersionPresentationFactory.cs | 12 ++++- .../RelationTypePresentationFactory.cs | 6 +-- .../Factories/UserPresentationFactory.cs | 28 ++++++------ .../Routing/BackOfficeAreaRoutes.cs | 6 +-- ...SqliteEFCoreDistributedLockingMechanism.cs | 45 +++++++++---------- .../Checks/Security/BaseHttpHeaderCheck.cs | 7 ++- .../Checks/Security/ExcessiveHeadersCheck.cs | 4 +- .../Checks/Security/HttpsCheck.cs | 14 +++--- .../Authorization/FeatureAuthorizer.cs | 4 +- src/Umbraco.Core/Services/AuditService.cs | 10 ++--- .../ContentBlueprintEditingService.cs | 4 +- .../Services/ContentEditingService.cs | 6 +-- .../Services/ContentEditingServiceBase.cs | 24 +++++----- .../ContentEditingServiceWithSortingBase.cs | 4 +- .../Services/ContentPermissionService.cs | 34 +++++++------- .../Services/ContentVersionService.cs | 27 ++++++----- src/Umbraco.Core/Services/DataTypeService.cs | 6 +-- .../Services/DictionaryItemService.cs | 40 ++++++++--------- src/Umbraco.Core/Services/DomainService.cs | 10 ++--- .../Services/EntityTypeContainerService.cs | 14 +++--- .../FileSystem/FolderServiceOperationBase.cs | 21 ++++----- src/Umbraco.Core/Services/LanguageService.cs | 26 +++++------ src/Umbraco.Core/Services/LogViewerService.cs | 44 +++++++++--------- .../Services/MediaEditingService.cs | 6 +-- .../Services/MediaPermissionService.cs | 20 ++++----- .../Services/NoopSegmentService.cs | 4 +- .../Services/PartialViewService.cs | 10 ++--- src/Umbraco.Core/Services/RelationService.cs | 20 ++++----- src/Umbraco.Core/Services/TemplateService.cs | 41 ++++++++--------- .../Services/TrackedReferencesService.cs | 12 ++--- .../Services/WebProfilerService.cs | 12 ++--- .../Telemetry/TelemetryService.cs | 3 +- .../BackgroundJobs/Jobs/WebhookFiring.cs | 1 + .../Install/InstallHelper.cs | 4 +- .../Install/PackageMigrationRunner.cs | 8 ++-- .../Manifest/PackageManifestService.cs | 15 ++++--- .../Implement/DataTypeUsageRepository.cs | 4 +- .../LocalFileSystemTemporaryFileRepository.cs | 16 ++++--- .../Implement/PropertyTypeUsageRepository.cs | 8 ++-- .../Security/MemberUserStore.cs | 13 +++--- .../Implement/ContentListViewService.cs | 8 ++-- .../Implement/MediaListViewService.cs | 8 ++-- .../Services/Implement/PackagingService.cs | 4 +- .../Services/MemberEditingService.cs | 4 +- .../ManagementApi/ManagementApiTest.cs | 3 +- .../Services/UserIdKeyResolverTests.cs | 8 ++-- .../Scoping/EFCoreScopeTest.cs | 4 +- .../Jobs/HealthCheckNotifierJobTests.cs | 2 +- .../HealthChecks/HealthCheckResultsTests.cs | 8 ++-- .../Security/MemberManagerTests.cs | 3 +- .../Security/MemberRoleStoreTests.cs | 6 ++- 126 files changed, 600 insertions(+), 574 deletions(-) diff --git a/src/Umbraco.Cms.Api.Delivery/Controllers/Content/ByIdsContentApiController.cs b/src/Umbraco.Cms.Api.Delivery/Controllers/Content/ByIdsContentApiController.cs index 0771c35758..7eb653e9d2 100644 --- a/src/Umbraco.Cms.Api.Delivery/Controllers/Content/ByIdsContentApiController.cs +++ b/src/Umbraco.Cms.Api.Delivery/Controllers/Content/ByIdsContentApiController.cs @@ -58,6 +58,6 @@ public class ByIdsContentApiController : ContentApiItemControllerBase .WhereNotNull() .ToArray(); - return await Task.FromResult(Ok(apiContentItems)); + return Ok(apiContentItems); } } diff --git a/src/Umbraco.Cms.Api.Delivery/Controllers/Content/ByRouteContentApiController.cs b/src/Umbraco.Cms.Api.Delivery/Controllers/Content/ByRouteContentApiController.cs index 54fe5785a9..2b94e1169f 100644 --- a/src/Umbraco.Cms.Api.Delivery/Controllers/Content/ByRouteContentApiController.cs +++ b/src/Umbraco.Cms.Api.Delivery/Controllers/Content/ByRouteContentApiController.cs @@ -117,7 +117,7 @@ public class ByRouteContentApiController : ContentApiItemControllerBase return deniedAccessResult; } - return await Task.FromResult(Ok(ApiContentResponseBuilder.Build(contentItem))); + return Ok(ApiContentResponseBuilder.Build(contentItem)); } IApiContentRoute? redirectRoute = _requestRedirectService.GetRedirectRoute(path); diff --git a/src/Umbraco.Cms.Api.Delivery/Controllers/Media/ByIdMediaApiController.cs b/src/Umbraco.Cms.Api.Delivery/Controllers/Media/ByIdMediaApiController.cs index f7fa2f6d92..d790f7f948 100644 --- a/src/Umbraco.Cms.Api.Delivery/Controllers/Media/ByIdMediaApiController.cs +++ b/src/Umbraco.Cms.Api.Delivery/Controllers/Media/ByIdMediaApiController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core.Models.DeliveryApi; @@ -24,8 +24,8 @@ public class ByIdMediaApiController : MediaApiControllerBase [ProducesResponseType(typeof(IApiMediaWithCropsResponse), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] [Obsolete("Please use version 2 of this API. Will be removed in V15.")] - public async Task ById(Guid id) - => await HandleRequest(id); + public Task ById(Guid id) + => Task.FromResult(HandleRequest(id)); /// /// Gets a media item by id. @@ -36,16 +36,16 @@ public class ByIdMediaApiController : MediaApiControllerBase [MapToApiVersion("2.0")] [ProducesResponseType(typeof(IApiMediaWithCropsResponse), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task ByIdV20(Guid id) - => await HandleRequest(id); + public Task ByIdV20(Guid id) + => Task.FromResult(HandleRequest(id)); - private async Task HandleRequest(Guid id) + private IActionResult HandleRequest(Guid id) { IPublishedContent? media = PublishedMediaCache.GetById(id); if (media is null) { - return await Task.FromResult(NotFound()); + return NotFound(); } return Ok(BuildApiMediaWithCrops(media)); diff --git a/src/Umbraco.Cms.Api.Delivery/Controllers/Media/ByIdsMediaApiController.cs b/src/Umbraco.Cms.Api.Delivery/Controllers/Media/ByIdsMediaApiController.cs index 957c982c38..0bf4b89c12 100644 --- a/src/Umbraco.Cms.Api.Delivery/Controllers/Media/ByIdsMediaApiController.cs +++ b/src/Umbraco.Cms.Api.Delivery/Controllers/Media/ByIdsMediaApiController.cs @@ -22,8 +22,8 @@ public class ByIdsMediaApiController : MediaApiControllerBase [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] [Obsolete("Please use version 2 of this API. Will be removed in V15.")] - public async Task Item([FromQuery(Name = "id")] HashSet ids) - => await HandleRequest(ids); + public Task Item([FromQuery(Name = "id")] HashSet ids) + => Task.FromResult(HandleRequest(ids)); /// /// Gets media items by ids. @@ -33,10 +33,10 @@ public class ByIdsMediaApiController : MediaApiControllerBase [HttpGet("items")] [MapToApiVersion("2.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task ItemsV20([FromQuery(Name = "id")] HashSet ids) - => await HandleRequest(ids); + public Task ItemsV20([FromQuery(Name = "id")] HashSet ids) + => Task.FromResult(HandleRequest(ids)); - private async Task HandleRequest(HashSet ids) + private IActionResult HandleRequest(HashSet ids) { IPublishedContent[] mediaItems = ids .Select(PublishedMediaCache.GetById) @@ -47,6 +47,6 @@ public class ByIdsMediaApiController : MediaApiControllerBase .Select(BuildApiMediaWithCrops) .ToArray(); - return await Task.FromResult(Ok(apiMediaItems)); + return Ok(apiMediaItems); } } diff --git a/src/Umbraco.Cms.Api.Delivery/Controllers/Media/ByPathMediaApiController.cs b/src/Umbraco.Cms.Api.Delivery/Controllers/Media/ByPathMediaApiController.cs index 0afedddffb..982a727991 100644 --- a/src/Umbraco.Cms.Api.Delivery/Controllers/Media/ByPathMediaApiController.cs +++ b/src/Umbraco.Cms.Api.Delivery/Controllers/Media/ByPathMediaApiController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core.DeliveryApi; @@ -27,8 +27,8 @@ public class ByPathMediaApiController : MediaApiControllerBase [ProducesResponseType(typeof(IApiMediaWithCropsResponse), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] [Obsolete("Please use version 2 of this API. Will be removed in V15.")] - public async Task ByPath(string path) - => await HandleRequest(path); + public Task ByPath(string path) + => Task.FromResult(HandleRequest(path)); /// /// Gets a media item by its path. @@ -39,17 +39,17 @@ public class ByPathMediaApiController : MediaApiControllerBase [MapToApiVersion("2.0")] [ProducesResponseType(typeof(IApiMediaWithCropsResponse), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task ByPathV20(string path) - => await HandleRequest(path); + public Task ByPathV20(string path) + => Task.FromResult(HandleRequest(path)); - private async Task HandleRequest(string path) + private IActionResult HandleRequest(string path) { path = DecodePath(path); IPublishedContent? media = _apiMediaQueryService.GetByPath(path); if (media is null) { - return await Task.FromResult(NotFound()); + return NotFound(); } return Ok(BuildApiMediaWithCrops(media)); diff --git a/src/Umbraco.Cms.Api.Delivery/Controllers/Media/QueryMediaApiController.cs b/src/Umbraco.Cms.Api.Delivery/Controllers/Media/QueryMediaApiController.cs index c61aaf8764..0440126d63 100644 --- a/src/Umbraco.Cms.Api.Delivery/Controllers/Media/QueryMediaApiController.cs +++ b/src/Umbraco.Cms.Api.Delivery/Controllers/Media/QueryMediaApiController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Common.ViewModels.Pagination; @@ -32,13 +32,13 @@ public class QueryMediaApiController : MediaApiControllerBase [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)] [Obsolete("Please use version 2 of this API. Will be removed in V15.")] - public async Task Query( + public Task Query( string? fetch, [FromQuery] string[] filter, [FromQuery] string[] sort, int skip = 0, int take = 10) - => await HandleRequest(fetch, filter, sort, skip, take); + => Task.FromResult(HandleRequest(fetch, filter, sort, skip, take)); /// /// Gets a paginated list of media item(s) from query. @@ -53,15 +53,15 @@ public class QueryMediaApiController : MediaApiControllerBase [MapToApiVersion("2.0")] [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)] - public async Task QueryV20( + public Task QueryV20( string? fetch, [FromQuery] string[] filter, [FromQuery] string[] sort, int skip = 0, int take = 10) - => await HandleRequest(fetch, filter, sort, skip, take); + => Task.FromResult(HandleRequest(fetch, filter, sort, skip, take)); - private async Task HandleRequest(string? fetch, string[] filter, string[] sort, int skip, int take) + private IActionResult HandleRequest(string? fetch, string[] filter, string[] sort, int skip, int take) { Attempt, ApiMediaQueryOperationStatus> queryAttempt = _apiMediaQueryService.ExecuteQuery(fetch, filter, sort, skip, take); @@ -79,6 +79,6 @@ public class QueryMediaApiController : MediaApiControllerBase Items = mediaItems.Select(BuildApiMediaWithCrops) }; - return await Task.FromResult(Ok(model)); + return Ok(model); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Culture/AllCultureController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Culture/AllCultureController.cs index 20d6770444..eb5177996a 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Culture/AllCultureController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Culture/AllCultureController.cs @@ -1,4 +1,4 @@ -using System.Globalization; +using System.Globalization; using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -28,7 +28,7 @@ public class AllCultureController : CultureControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] - public async Task> GetAll(CancellationToken cancellationToken, int skip = 0, int take = 100) + public Task> GetAll(CancellationToken cancellationToken, int skip = 0, int take = 100) { CultureInfo[] all = _cultureService.GetValidCultureInfos(); @@ -38,6 +38,6 @@ public class AllCultureController : CultureControllerBase Total = all.Length }; - return await Task.FromResult(viewModel); + return Task.FromResult(viewModel); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Dictionary/AllDictionaryController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Dictionary/AllDictionaryController.cs index b40db7607a..a0e7747243 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Dictionary/AllDictionaryController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Dictionary/AllDictionaryController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core.Mapping; @@ -38,6 +38,6 @@ public class AllDictionaryController : DictionaryControllerBase Total = items.Length, Items = _umbracoMapper.MapEnumerable(items.Skip(skip).Take(take)) }; - return await Task.FromResult(model); + return model; } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Dictionary/Tree/DictionaryTreeControllerBase.cs b/src/Umbraco.Cms.Api.Management/Controllers/Dictionary/Tree/DictionaryTreeControllerBase.cs index 5e55924079..2b02ff541a 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Dictionary/Tree/DictionaryTreeControllerBase.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Dictionary/Tree/DictionaryTreeControllerBase.cs @@ -28,7 +28,7 @@ public class DictionaryTreeControllerBase : NamedEntityTreeControllerBase> MapTreeItemViewModels(IEnumerable dictionaryItems) - => await Task.WhenAll(dictionaryItems.Select(CreateEntityTreeItemViewModelAsync)); + => await MapTreeItemViewModelsAsync(dictionaryItems).ToArrayAsync(); protected override async Task>> GetAncestors(Guid descendantKey, bool includeSelf = true) { @@ -54,10 +54,19 @@ public class DictionaryTreeControllerBase : NamedEntityTreeControllerBase MapTreeItemViewModelsAsync(IEnumerable dictionaryItems) + { + foreach (IDictionaryItem dictionaryItem in dictionaryItems) + { + yield return await CreateEntityTreeItemViewModelAsync(dictionaryItem); + } + } + private async Task CreateEntityTreeItemViewModelAsync(IDictionaryItem dictionaryItem) { var hasChildren = await DictionaryItemService.CountChildrenAsync(dictionaryItem.Key) > 0; diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Document/Item/ItemDocumentItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Document/Item/ItemDocumentItemController.cs index bea90daf42..ebefb5bfb2 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Document/Item/ItemDocumentItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Document/Item/ItemDocumentItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Factories; @@ -24,13 +24,13 @@ public class ItemDocumentItemController : DocumentItemControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Item( + public Task Item( CancellationToken cancellationToken, [FromQuery(Name = "id")] HashSet ids) { if (ids.Count is 0) { - return Ok(Enumerable.Empty()); + return Task.FromResult(Ok(Enumerable.Empty())); } IEnumerable documents = _entityService @@ -38,6 +38,6 @@ public class ItemDocumentItemController : DocumentItemControllerBase .OfType(); IEnumerable documentItemResponseModels = documents.Select(_documentPresentationFactory.CreateItemResponseModel); - return await Task.FromResult(Ok(documentItemResponseModels)); + return Task.FromResult(Ok(documentItemResponseModels)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Document/Item/SearchDocumentItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Document/Item/SearchDocumentItemController.cs index 0ab15f0e7f..345a35f124 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Document/Item/SearchDocumentItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Document/Item/SearchDocumentItemController.cs @@ -1,4 +1,4 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -24,8 +24,8 @@ public class SearchDocumentItemController : DocumentItemControllerBase [NonAction] [Obsolete("Scheduled to be removed in v16, use the non obsoleted method instead")] - public async Task Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100) - => await SearchFromParent(cancellationToken, query, skip, take); + public Task Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100) + => SearchFromParent(cancellationToken, query, skip, take); [NonAction] [Obsolete("Scheduled to be removed in v16, use the non obsoleted method instead")] @@ -35,7 +35,7 @@ public class SearchDocumentItemController : DocumentItemControllerBase [HttpGet("search")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedModel), StatusCodes.Status200OK)] - public async Task SearchFromParentWithAllowedTypes(CancellationToken cancellationToken, string query, int skip = 0, int take = 100, Guid? parentId = null, [FromQuery]IEnumerable? allowedDocumentTypes = null) + public Task SearchFromParentWithAllowedTypes(CancellationToken cancellationToken, string query, int skip = 0, int take = 100, Guid? parentId = null, [FromQuery]IEnumerable? allowedDocumentTypes = null) { PagedModel searchResult = _indexedEntitySearchService.Search(UmbracoObjectTypes.Document, query, parentId, allowedDocumentTypes, skip, take); var result = new PagedModel @@ -44,6 +44,6 @@ public class SearchDocumentItemController : DocumentItemControllerBase Total = searchResult.Total, }; - return await Task.FromResult(Ok(result)); + return Task.FromResult(Ok(result)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Document/References/AreReferencedDocumentController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Document/References/AreReferencedDocumentController.cs index ed593e9c9e..bc2353dc55 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Document/References/AreReferencedDocumentController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Document/References/AreReferencedDocumentController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Common.ViewModels.Pagination; @@ -45,6 +45,6 @@ public class AreReferencedDocumentController : DocumentControllerBase Items = _umbracoMapper.MapEnumerable(distinctByKeyItemsWithReferencedRelations.Items), }; - return await Task.FromResult(pagedViewModel); + return pagedViewModel; } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Document/References/ReferencedByDocumentController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Document/References/ReferencedByDocumentController.cs index 47df66fd6d..6a1d9b2824 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Document/References/ReferencedByDocumentController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Document/References/ReferencedByDocumentController.cs @@ -45,6 +45,6 @@ public class ReferencedByDocumentController : DocumentControllerBase Items = await _relationTypePresentationFactory.CreateReferenceResponseModelsAsync(relationItems.Items), }; - return await Task.FromResult(pagedViewModel); + return pagedViewModel; } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Document/References/ReferencedDescendantsDocumentController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Document/References/ReferencedDescendantsDocumentController.cs index 4b931632e1..138b919628 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Document/References/ReferencedDescendantsDocumentController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Document/References/ReferencedDescendantsDocumentController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Common.ViewModels.Pagination; @@ -45,6 +45,6 @@ public class ReferencedDescendantsDocumentController : DocumentControllerBase Items = _umbracoMapper.MapEnumerable(relationItems.Items), }; - return await Task.FromResult(pagedViewModel); + return pagedViewModel; } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Document/UpdateNotificationsController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Document/UpdateNotificationsController.cs index d02e1456f9..0d504b22a6 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Document/UpdateNotificationsController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Document/UpdateNotificationsController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.ViewModels.Document; @@ -35,6 +35,6 @@ public class UpdateNotificationsController : DocumentControllerBase } _notificationService.SetNotifications(_backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser, content, updateModel.SubscribedActionIds); - return await Task.FromResult(Ok()); + return Ok(); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/DocumentBlueprint/Item/ItemDocumentBlueprintController.cs b/src/Umbraco.Cms.Api.Management/Controllers/DocumentBlueprint/Item/ItemDocumentBlueprintController.cs index 5694d5b0b9..551f6cc407 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/DocumentBlueprint/Item/ItemDocumentBlueprintController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/DocumentBlueprint/Item/ItemDocumentBlueprintController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Factories; @@ -25,13 +25,13 @@ public class ItemDocumentBlueprintController : DocumentBlueprintItemControllerBa [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Item( + public Task Item( CancellationToken cancellationToken, [FromQuery(Name = "id")] HashSet ids) { if (ids.Count is 0) { - return Ok(Enumerable.Empty()); + return Task.FromResult(Ok(Enumerable.Empty())); } IEnumerable documents = _entityService @@ -39,6 +39,6 @@ public class ItemDocumentBlueprintController : DocumentBlueprintItemControllerBa .Select(x => x as IDocumentEntitySlim) .WhereNotNull(); IEnumerable responseModels = documents.Select(x => _documentPresentationFactory.CreateBlueprintItemResponseModel(x)); - return await Task.FromResult(Ok(responseModels)); + return Task.FromResult(Ok(responseModels)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/Item/ItemDocumentTypeItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/Item/ItemDocumentTypeItemController.cs index 55211c7555..a4ed4eaa29 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/Item/ItemDocumentTypeItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/Item/ItemDocumentTypeItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.ViewModels.DocumentType.Item; @@ -23,17 +23,17 @@ public class ItemDocumentTypeItemController : DocumentTypeItemControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Item( + public Task Item( CancellationToken cancellationToken, [FromQuery(Name = "id")] HashSet ids) { if (ids.Count is 0) { - return Ok(Enumerable.Empty()); + return Task.FromResult(Ok(Enumerable.Empty())); } IEnumerable contentTypes = _contentTypeService.GetMany(ids); List responseModels = _mapper.MapEnumerable(contentTypes); - return await Task.FromResult(Ok(responseModels)); + return Task.FromResult(Ok(responseModels)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/Item/SearchDocumentTypeItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/Item/SearchDocumentTypeItemController.cs index 5069df0d80..28708b52d1 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/Item/SearchDocumentTypeItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/Item/SearchDocumentTypeItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.ViewModels.DocumentType.Item; @@ -27,12 +27,12 @@ public class SearchDocumentTypeItemController : DocumentTypeItemControllerBase [HttpGet("search")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedModel), StatusCodes.Status200OK)] - public async Task Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100) + public Task Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100) { PagedModel searchResult = _entitySearchService.Search(UmbracoObjectTypes.DocumentType, query, skip, take); if (searchResult.Items.Any() is false) { - return await Task.FromResult(Ok(new PagedModel { Total = searchResult.Total })); + return Task.FromResult(Ok(new PagedModel { Total = searchResult.Total })); } IEnumerable contentTypes = _contentTypeService.GetMany(searchResult.Items.Select(item => item.Key).ToArray().EmptyNull()); @@ -42,6 +42,6 @@ public class SearchDocumentTypeItemController : DocumentTypeItemControllerBase Total = searchResult.Total }; - return Ok(result); + return Task.FromResult(Ok(result)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/DynamicRoot/GetQueryStepsController.cs b/src/Umbraco.Cms.Api.Management/Controllers/DynamicRoot/GetQueryStepsController.cs index 1271c2ab3f..5dc68f4522 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/DynamicRoot/GetQueryStepsController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/DynamicRoot/GetQueryStepsController.cs @@ -21,10 +21,10 @@ public class GetQueryStepsController : DynamicRootControllerBase [HttpGet($"steps")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task GetQuerySteps(CancellationToken cancellationToken) + public Task GetQuerySteps(CancellationToken cancellationToken) { IEnumerable querySteps = _dynamicRootQueryStepCollection.Select(x => x.SupportedDirectionAlias); - return await Task.FromResult(Ok(querySteps)); + return Task.FromResult(Ok(querySteps)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/ExecuteActionHealthCheckController.cs b/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/ExecuteActionHealthCheckController.cs index 6f3e5ea933..4a8583f4fd 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/ExecuteActionHealthCheckController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/ExecuteActionHealthCheckController.cs @@ -63,6 +63,6 @@ public class ExecuteActionHealthCheckController : HealthCheckControllerBase HealthCheckStatus result = await healthCheck.ExecuteActionAsync(_umbracoMapper.Map(action)!); - return await Task.FromResult(Ok(_umbracoMapper.Map(result))); + return Ok(_umbracoMapper.Map(result)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/Group/AllHealthCheckGroupController.cs b/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/Group/AllHealthCheckGroupController.cs index baaaf467bf..f41f352cc7 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/Group/AllHealthCheckGroupController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/Group/AllHealthCheckGroupController.cs @@ -31,7 +31,7 @@ public class AllHealthCheckGroupController : HealthCheckGroupControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] - public async Task>> All( + public Task>> All( CancellationToken cancellationToken, int skip = 0, int take = 100) @@ -46,6 +46,6 @@ public class AllHealthCheckGroupController : HealthCheckGroupControllerBase Items = _umbracoMapper.MapEnumerable, HealthCheckGroupResponseModel>(groups.Skip(skip).Take(take)) }; - return await Task.FromResult(Ok(viewModel)); + return Task.FromResult>>(Ok(viewModel)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/Group/ByNameHealthCheckGroupController.cs b/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/Group/ByNameHealthCheckGroupController.cs index 1aa97c6249..6ffa173e9b 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/Group/ByNameHealthCheckGroupController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/HealthCheck/Group/ByNameHealthCheckGroupController.cs @@ -31,7 +31,7 @@ public class ByNameHealthCheckGroupController : HealthCheckGroupControllerBase [MapToApiVersion("1.0")] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)] [ProducesResponseType(typeof(HealthCheckGroupPresentationModel), StatusCodes.Status200OK)] - public async Task ByName( + public Task ByName( CancellationToken cancellationToken, string name) { @@ -42,9 +42,9 @@ public class ByNameHealthCheckGroupController : HealthCheckGroupControllerBase if (group is null) { - return HealthCheckGroupNotFound(); + return Task.FromResult(HealthCheckGroupNotFound()); } - return await Task.FromResult(Ok(_umbracoMapper.Map(group))); + return Task.FromResult(Ok(_umbracoMapper.Map(group))); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Indexer/DetailsIndexerController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Indexer/DetailsIndexerController.cs index a6d8a7c407..0eee31be10 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Indexer/DetailsIndexerController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Indexer/DetailsIndexerController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Examine; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -34,11 +34,11 @@ public class DetailsIndexerController : IndexerControllerBase [MapToApiVersion("1.0")] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)] [ProducesResponseType(typeof(IndexResponseModel), StatusCodes.Status200OK)] - public async Task> Details(CancellationToken cancellationToken, string indexName) + public Task> Details(CancellationToken cancellationToken, string indexName) { if (_examineManager.TryGetIndex(indexName, out IIndex? index)) { - return await Task.FromResult(_indexPresentationFactory.Create(index!)); + return Task.FromResult>(_indexPresentationFactory.Create(index)); } var invalidModelProblem = new ProblemDetails @@ -49,7 +49,6 @@ public class DetailsIndexerController : IndexerControllerBase Type = "Error", }; - return await Task.FromResult(NotFound(invalidModelProblem)); - + return Task.FromResult>(NotFound(invalidModelProblem)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Indexer/RebuildIndexerController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Indexer/RebuildIndexerController.cs index 97131adcb9..cba2252991 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Indexer/RebuildIndexerController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Indexer/RebuildIndexerController.cs @@ -36,7 +36,7 @@ public class RebuildIndexerController : IndexerControllerBase [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status409Conflict)] [ProducesResponseType(StatusCodes.Status200OK)] - public async Task Rebuild(CancellationToken cancellationToken, string indexName) + public Task Rebuild(CancellationToken cancellationToken, string indexName) { if (!_examineManager.TryGetIndex(indexName, out IIndex? index)) { @@ -48,7 +48,7 @@ public class RebuildIndexerController : IndexerControllerBase Type = "Error", }; - return await Task.FromResult(NotFound(invalidModelProblem)); + return Task.FromResult(NotFound(invalidModelProblem)); } if (!_indexingRebuilderService.CanRebuild(index.Name)) @@ -62,14 +62,14 @@ public class RebuildIndexerController : IndexerControllerBase Type = "Error", }; - return await Task.FromResult(BadRequest(invalidModelProblem)); + return Task.FromResult(BadRequest(invalidModelProblem)); } _logger.LogInformation("Rebuilding index '{IndexName}'", indexName); if (_indexingRebuilderService.TryRebuild(index, indexName)) { - return await Task.FromResult(Ok()); + return Task.FromResult(Ok()); } var problemDetails = new ProblemDetails @@ -80,6 +80,6 @@ public class RebuildIndexerController : IndexerControllerBase Type = "Error", }; - return await Task.FromResult(Conflict(problemDetails)); + return Task.FromResult(Conflict(problemDetails)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllSinkLevelLogViewerController.cs b/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllSinkLevelLogViewerController.cs index f2ec9e034f..e3bd052922 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllSinkLevelLogViewerController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/LogViewer/AllSinkLevelLogViewerController.cs @@ -30,7 +30,7 @@ public class AllSinkLevelLogViewerController : LogViewerControllerBase [HttpGet("level")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] - public async Task>> AllLogLevels( + public Task>> AllLogLevels( CancellationToken cancellationToken, int skip = 0, int take = 100) @@ -45,6 +45,6 @@ public class AllSinkLevelLogViewerController : LogViewerControllerBase Items = _umbracoMapper.MapEnumerable, LoggerResponseModel>(logLevels.Skip(skip).Take(take)) }; - return await Task.FromResult(Ok(viewModel)); + return Task.FromResult>>(Ok(viewModel)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Media/Item/ItemMediaItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Media/Item/ItemMediaItemController.cs index ddea5cfbcb..7bab65c3ca 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Media/Item/ItemMediaItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Media/Item/ItemMediaItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Factories; @@ -25,13 +25,13 @@ public class ItemMediaItemController : MediaItemControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Item( + public Task Item( CancellationToken cancellationToken, [FromQuery(Name = "id")] HashSet ids) { if (ids.Count is 0) { - return Ok(Enumerable.Empty()); + return Task.FromResult(Ok(Enumerable.Empty())); } IEnumerable media = _entityService @@ -39,6 +39,6 @@ public class ItemMediaItemController : MediaItemControllerBase .OfType(); IEnumerable responseModels = media.Select(_mediaPresentationFactory.CreateItemResponseModel); - return await Task.FromResult(Ok(responseModels)); + return Task.FromResult(Ok(responseModels)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Media/Item/SearchMediaItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Media/Item/SearchMediaItemController.cs index c7cccd0cea..a29814de4d 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Media/Item/SearchMediaItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Media/Item/SearchMediaItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Factories; @@ -35,7 +35,7 @@ public class SearchMediaItemController : MediaItemControllerBase [HttpGet("search")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedModel), StatusCodes.Status200OK)] - public async Task SearchFromParentWithAllowedTypes(CancellationToken cancellationToken, string query, int skip = 0, int take = 100, Guid? parentId = null, [FromQuery]IEnumerable? allowedMediaTypes = null) + public Task SearchFromParentWithAllowedTypes(CancellationToken cancellationToken, string query, int skip = 0, int take = 100, Guid? parentId = null, [FromQuery]IEnumerable? allowedMediaTypes = null) { PagedModel searchResult = _indexedEntitySearchService.Search(UmbracoObjectTypes.Media, query, parentId, allowedMediaTypes, skip, take); var result = new PagedModel @@ -44,6 +44,6 @@ public class SearchMediaItemController : MediaItemControllerBase Total = searchResult.Total, }; - return await Task.FromResult(Ok(result)); + return Task.FromResult(Ok(result)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Media/MediaUrlController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Media/MediaUrlController.cs index d967bd9435..1db1a3c1be 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Media/MediaUrlController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Media/MediaUrlController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Factories; @@ -25,10 +25,10 @@ public class MediaUrlController : MediaControllerBase [MapToApiVersion("1.0")] [HttpGet("urls")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task GetUrls([FromQuery(Name = "id")] HashSet ids) + public Task GetUrls([FromQuery(Name = "id")] HashSet ids) { IEnumerable items = _mediaService.GetByIds(ids); - return await Task.FromResult(Ok(_mediaUrlFactory.CreateUrlSets(items))); + return Task.FromResult(Ok(_mediaUrlFactory.CreateUrlSets(items))); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Media/References/AreReferencedMediaController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Media/References/AreReferencedMediaController.cs index 89e0c2d1ba..d10bdb9627 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Media/References/AreReferencedMediaController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Media/References/AreReferencedMediaController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Common.ViewModels.Pagination; @@ -46,6 +46,6 @@ public class AreReferencedMediaController : MediaControllerBase Items = _umbracoMapper.MapEnumerable(distinctByKeyItemsWithReferencedRelations.Items), }; - return await Task.FromResult(pagedViewModel); + return pagedViewModel; } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Media/References/ReferencedByMediaController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Media/References/ReferencedByMediaController.cs index 63748741b1..e9e62504ed 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Media/References/ReferencedByMediaController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Media/References/ReferencedByMediaController.cs @@ -45,6 +45,6 @@ public class ReferencedByMediaController : MediaControllerBase Items = await _relationTypePresentationFactory.CreateReferenceResponseModelsAsync(relationItems.Items), }; - return await Task.FromResult(pagedViewModel); + return pagedViewModel; } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Media/References/ReferencedDescendantsMediaController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Media/References/ReferencedDescendantsMediaController.cs index 2990602e02..c6c16cb222 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Media/References/ReferencedDescendantsMediaController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Media/References/ReferencedDescendantsMediaController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Common.ViewModels.Pagination; @@ -45,6 +45,6 @@ public class ReferencedDescendantsMediaController : MediaControllerBase Items = _umbracoMapper.MapEnumerable(relationItems.Items), }; - return await Task.FromResult(pagedViewModel); + return pagedViewModel; } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/MediaType/ByKeyMediaTypeController.cs b/src/Umbraco.Cms.Api.Management/Controllers/MediaType/ByKeyMediaTypeController.cs index ec3d955b2f..75a32569bd 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/MediaType/ByKeyMediaTypeController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/MediaType/ByKeyMediaTypeController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.ViewModels.MediaType; @@ -34,6 +34,6 @@ public class ByKeyMediaTypeController : MediaTypeControllerBase } MediaTypeResponseModel model = _umbracoMapper.Map(mediaType)!; - return await Task.FromResult(Ok(model)); + return Ok(model); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/MediaType/Item/ItemMediaTypeItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/MediaType/Item/ItemMediaTypeItemController.cs index 14bcff0e51..92133d2808 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/MediaType/Item/ItemMediaTypeItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/MediaType/Item/ItemMediaTypeItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.ViewModels.MediaType.Item; @@ -23,17 +23,17 @@ public class ItemMediaTypeItemController : MediaTypeItemControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Item( + public Task Item( CancellationToken cancellationToken, [FromQuery(Name = "id")] HashSet ids) { if (ids.Count is 0) { - return Ok(Enumerable.Empty()); + return Task.FromResult(Ok(Enumerable.Empty())); } IEnumerable mediaTypes = _mediaTypeService.GetMany(ids); List responseModels = _mapper.MapEnumerable(mediaTypes); - return await Task.FromResult(Ok(responseModels)); + return Task.FromResult(Ok(responseModels)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/MediaType/Item/SearchMediaTypeItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/MediaType/Item/SearchMediaTypeItemController.cs index 475087766f..a6fbade1c7 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/MediaType/Item/SearchMediaTypeItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/MediaType/Item/SearchMediaTypeItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.ViewModels.MediaType.Item; @@ -27,12 +27,12 @@ public class SearchMediaTypeItemController : MediaTypeItemControllerBase [HttpGet("search")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedModel), StatusCodes.Status200OK)] - public async Task Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100) + public Task Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100) { PagedModel searchResult = _entitySearchService.Search(UmbracoObjectTypes.MediaType, query, skip, take); if (searchResult.Items.Any() is false) { - return await Task.FromResult(Ok(new PagedModel { Total = searchResult.Total })); + return Task.FromResult(Ok(new PagedModel { Total = searchResult.Total })); } IEnumerable mediaTypes = _mediaTypeService.GetMany(searchResult.Items.Select(item => item.Key).ToArray().EmptyNull()); @@ -42,6 +42,6 @@ public class SearchMediaTypeItemController : MediaTypeItemControllerBase Total = searchResult.Total }; - return Ok(result); + return Task.FromResult(Ok(result)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Member/Item/ItemMemberItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Member/Item/ItemMemberItemController.cs index eb81efed18..8e2e73538c 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Member/Item/ItemMemberItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Member/Item/ItemMemberItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Factories; @@ -25,13 +25,13 @@ public class ItemMemberItemController : MemberItemControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Item( + public Task Item( CancellationToken cancellationToken, [FromQuery(Name = "id")] HashSet ids) { if (ids.Count is 0) { - return Ok(Enumerable.Empty()); + return Task.FromResult(Ok(Enumerable.Empty())); } IEnumerable members = _entityService @@ -39,6 +39,6 @@ public class ItemMemberItemController : MemberItemControllerBase .OfType(); IEnumerable responseModels = members.Select(_memberPresentationFactory.CreateItemResponseModel); - return await Task.FromResult(Ok(responseModels)); + return Task.FromResult(Ok(responseModels)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Member/Item/SearchMemberItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Member/Item/SearchMemberItemController.cs index 187dc239b3..eac1a3909e 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Member/Item/SearchMemberItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Member/Item/SearchMemberItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Factories; @@ -23,13 +23,13 @@ public class SearchMemberItemController : MemberItemControllerBase [NonAction] [Obsolete("Scheduled to be removed in v16, use the non obsoleted method instead")] - public async Task Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100) - => await SearchWithAllowedTypes(cancellationToken, query, skip, take); + public Task Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100) + => SearchWithAllowedTypes(cancellationToken, query, skip, take); [HttpGet("search")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedModel), StatusCodes.Status200OK)] - public async Task SearchWithAllowedTypes(CancellationToken cancellationToken, string query, int skip = 0, int take = 100, [FromQuery]IEnumerable? allowedMemberTypes = null) + public Task SearchWithAllowedTypes(CancellationToken cancellationToken, string query, int skip = 0, int take = 100, [FromQuery]IEnumerable? allowedMemberTypes = null) { PagedModel searchResult = _indexedEntitySearchService.Search(UmbracoObjectTypes.Member, query, null, allowedMemberTypes, skip, take); var result = new PagedModel @@ -38,6 +38,6 @@ public class SearchMemberItemController : MemberItemControllerBase Total = searchResult.Total }; - return await Task.FromResult(Ok(result)); + return Task.FromResult(Ok(result)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/MemberGroup/AllMemberGroupController.cs b/src/Umbraco.Cms.Api.Management/Controllers/MemberGroup/AllMemberGroupController.cs index 8f2bfd7318..0f5b3384ba 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/MemberGroup/AllMemberGroupController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/MemberGroup/AllMemberGroupController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Common.ViewModels.Pagination; @@ -36,6 +36,6 @@ public class AllMemberGroupController : MemberGroupControllerBase Items = _mapper.MapEnumerable(memberGroups.Skip(skip).Take(take)), }; - return await Task.FromResult(Ok(viewModel)); + return Ok(viewModel); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/MemberGroup/Item/ItemMemberGroupItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/MemberGroup/Item/ItemMemberGroupItemController.cs index 4a7b2e762d..479a8c5617 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/MemberGroup/Item/ItemMemberGroupItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/MemberGroup/Item/ItemMemberGroupItemController.cs @@ -25,17 +25,17 @@ public class ItemMemberGroupItemController : MemberGroupItemControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Item( + public Task Item( CancellationToken cancellationToken, [FromQuery(Name = "id")] HashSet ids) { if (ids.Count is 0) { - return Ok(Enumerable.Empty()); + return Task.FromResult(Ok(Enumerable.Empty())); } IEnumerable memberGroups = _entityService.GetAll(UmbracoObjectTypes.MemberGroup, ids.ToArray()); List responseModel = _mapper.MapEnumerable(memberGroups); - return Ok(responseModel); + return Task.FromResult(Ok(responseModel)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/MemberType/Item/ItemMemberTypeItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/MemberType/Item/ItemMemberTypeItemController.cs index c110e9ef6b..8aa28468b1 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/MemberType/Item/ItemMemberTypeItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/MemberType/Item/ItemMemberTypeItemController.cs @@ -23,17 +23,17 @@ public class ItemMemberTypeItemController : MemberTypeItemControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Item( + public Task Item( CancellationToken cancellationToken, [FromQuery(Name = "id")] HashSet ids) { if (ids.Count is 0) { - return Ok(Enumerable.Empty()); + return Task.FromResult(Ok(Enumerable.Empty())); } IEnumerable memberTypes = _memberTypeService.GetMany(ids); List responseModels = _mapper.MapEnumerable(memberTypes); - return Ok(responseModels); + return Task.FromResult(Ok(responseModels)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/MemberType/Item/SearchMemberTypeItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/MemberType/Item/SearchMemberTypeItemController.cs index 6e8151d8a2..0d211bad43 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/MemberType/Item/SearchMemberTypeItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/MemberType/Item/SearchMemberTypeItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.ViewModels.MemberType.Item; @@ -26,12 +26,12 @@ public class SearchMemberTypeItemController : MemberTypeItemControllerBase [HttpGet("search")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedModel), StatusCodes.Status200OK)] - public async Task Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100) + public Task Search(CancellationToken cancellationToken, string query, int skip = 0, int take = 100) { PagedModel searchResult = _entitySearchService.Search(UmbracoObjectTypes.MemberType, query, skip, take); if (searchResult.Items.Any() is false) { - return await Task.FromResult(Ok(new PagedModel { Total = searchResult.Total })); + return Task.FromResult(Ok(new PagedModel { Total = searchResult.Total })); } IEnumerable memberTypes = _memberTypeService.GetMany(searchResult.Items.Select(item => item.Key).ToArray()); @@ -41,6 +41,6 @@ public class SearchMemberTypeItemController : MemberTypeItemControllerBase Total = searchResult.Total }; - return Ok(result); + return Task.FromResult(Ok(result)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/ModelsBuilder/BuildModelsBuilderController.cs b/src/Umbraco.Cms.Api.Management/Controllers/ModelsBuilder/BuildModelsBuilderController.cs index 14adb70c3b..bd4af3e97b 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/ModelsBuilder/BuildModelsBuilderController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/ModelsBuilder/BuildModelsBuilderController.cs @@ -56,7 +56,7 @@ public class BuildModelsBuilderController : ModelsBuilderControllerBase [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status428PreconditionRequired)] [MapToApiVersion("1.0")] - public async Task BuildModels(CancellationToken cancellationToken) + public Task BuildModels(CancellationToken cancellationToken) { try { @@ -70,7 +70,7 @@ public class BuildModelsBuilderController : ModelsBuilderControllerBase Type = "Error", }; - return new ObjectResult(problemDetailsModel) { StatusCode = StatusCodes.Status428PreconditionRequired }; + return Task.FromResult(new ObjectResult(problemDetailsModel) { StatusCode = StatusCodes.Status428PreconditionRequired }); } _modelGenerator.GenerateModels(); @@ -81,6 +81,6 @@ public class BuildModelsBuilderController : ModelsBuilderControllerBase _mbErrors.Report("Failed to build models.", e); } - return Ok(); + return Task.FromResult(Ok()); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/ModelsBuilder/GetModelsBuilderController.cs b/src/Umbraco.Cms.Api.Management/Controllers/ModelsBuilder/GetModelsBuilderController.cs index 764ba65b75..492ad23c63 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/ModelsBuilder/GetModelsBuilderController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/ModelsBuilder/GetModelsBuilderController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Factories; @@ -16,6 +16,6 @@ public class GetModelsBuilderController : ModelsBuilderControllerBase [HttpGet("dashboard")] [ProducesResponseType(typeof(ModelsBuilderResponseModel), StatusCodes.Status200OK)] [MapToApiVersion("1.0")] - public async Task> GetDashboard(CancellationToken cancellationToken) - => await Task.FromResult(Ok(_modelsBuilderPresentationFactory.Create())); + public Task> GetDashboard(CancellationToken cancellationToken) + => Task.FromResult>(Ok(_modelsBuilderPresentationFactory.Create())); } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/ModelsBuilder/StatusModelsBuilderController.cs b/src/Umbraco.Cms.Api.Management/Controllers/ModelsBuilder/StatusModelsBuilderController.cs index fcbcd9e3cc..f49b16b851 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/ModelsBuilder/StatusModelsBuilderController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/ModelsBuilder/StatusModelsBuilderController.cs @@ -1,4 +1,4 @@ -using System.Threading.Tasks; +using System.Threading.Tasks; using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -18,7 +18,7 @@ public class StatusModelsBuilderController : ModelsBuilderControllerBase [HttpGet("status")] [ProducesResponseType(typeof(OutOfDateStatusResponseModel), StatusCodes.Status200OK)] [MapToApiVersion("1.0")] - public async Task> GetModelsOutOfDateStatus(CancellationToken cancellationToken) + public Task> GetModelsOutOfDateStatus(CancellationToken cancellationToken) { OutOfDateStatusResponseModel status = _outOfDateModelsStatus.IsEnabled ? _outOfDateModelsStatus.IsOutOfDate @@ -26,6 +26,6 @@ public class StatusModelsBuilderController : ModelsBuilderControllerBase : new OutOfDateStatusResponseModel { Status = OutOfDateType.Current } : new OutOfDateStatusResponseModel { Status = OutOfDateType.Unknown }; - return await Task.FromResult(Ok(status)); + return Task.FromResult>(Ok(status)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/ObjectTypes/AllowedObjectTypesController.cs b/src/Umbraco.Cms.Api.Management/Controllers/ObjectTypes/AllowedObjectTypesController.cs index 394ddb6573..7b5687971d 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/ObjectTypes/AllowedObjectTypesController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/ObjectTypes/AllowedObjectTypesController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Common.ViewModels.Pagination; @@ -17,11 +17,11 @@ public class AllowedObjectTypesController : ObjectTypesControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] - public async Task Allowed(CancellationToken cancellationToken, int skip = 0, int take = 100) + public Task Allowed(CancellationToken cancellationToken, int skip = 0, int take = 100) { ObjectTypeResponseModel[] objectTypes = _objectTypePresentationFactory.Create().ToArray(); - return await Task.FromResult(Ok(new PagedViewModel + return Task.FromResult(Ok(new PagedViewModel { Total = objectTypes.Length, Items = objectTypes.Skip(skip).Take(take), diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Package/Created/AllCreatedPackageController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Package/Created/AllCreatedPackageController.cs index 64ab3dec47..73ef803011 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Package/Created/AllCreatedPackageController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Package/Created/AllCreatedPackageController.cs @@ -44,6 +44,6 @@ public class AllCreatedPackageController : CreatedPackageControllerBase Items = _umbracoMapper.MapEnumerable(createdPackages.Items) }; - return await Task.FromResult(Ok(viewModel)); + return Ok(viewModel); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/PartialView/Item/ItemPartialViewItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/PartialView/Item/ItemPartialViewItemController.cs index 370f1ab8f5..27f09cb4d4 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/PartialView/Item/ItemPartialViewItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/PartialView/Item/ItemPartialViewItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Extensions; @@ -18,17 +18,17 @@ public class ItemPartialViewItemController : PartialViewItemControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Item( + public Task Item( CancellationToken cancellationToken, [FromQuery(Name = "path")] HashSet paths) { if (paths.Count is 0) { - return Ok(Enumerable.Empty()); + return Task.FromResult(Ok(Enumerable.Empty())); } paths = paths.Select(path => path.VirtualPathToSystemPath()).ToHashSet(); IEnumerable responseModels = _fileItemPresentationFactory.CreatePartialViewItemResponseModels(paths); - return await Task.FromResult(Ok(responseModels)); + return Task.FromResult(Ok(responseModels)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/PublishedCache/RebuildPublishedCacheController.cs b/src/Umbraco.Cms.Api.Management/Controllers/PublishedCache/RebuildPublishedCacheController.cs index d48ad9fdbb..8f29b922f3 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/PublishedCache/RebuildPublishedCacheController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/PublishedCache/RebuildPublishedCacheController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core.PublishedCache; @@ -15,9 +15,9 @@ public class RebuildPublishedCacheController : PublishedCacheControllerBase [HttpPost("rebuild")] [MapToApiVersion("1.0")] [ProducesResponseType(StatusCodes.Status200OK)] - public async Task Rebuild(CancellationToken cancellationToken) + public Task Rebuild(CancellationToken cancellationToken) { _databaseCacheRebuilder.Rebuild(); - return await Task.FromResult(Ok()); + return Task.FromResult(Ok()); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/PublishedCache/ReloadPublishedCacheController.cs b/src/Umbraco.Cms.Api.Management/Controllers/PublishedCache/ReloadPublishedCacheController.cs index da655627f5..e147c9f775 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/PublishedCache/ReloadPublishedCacheController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/PublishedCache/ReloadPublishedCacheController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core.Cache; @@ -16,10 +16,9 @@ public class ReloadPublishedCacheController : PublishedCacheControllerBase [HttpPost("reload")] [MapToApiVersion("1.0")] [ProducesResponseType(StatusCodes.Status200OK)] - public async Task Reload(CancellationToken cancellationToken) + public Task Reload(CancellationToken cancellationToken) { _distributedCache.RefreshAllPublishedSnapshot(); - return await Task.FromResult(Ok()); + return Task.FromResult(Ok()); } } - diff --git a/src/Umbraco.Cms.Api.Management/Controllers/PublishedCache/StatusPublishedCacheController.cs b/src/Umbraco.Cms.Api.Management/Controllers/PublishedCache/StatusPublishedCacheController.cs index 3a9d72c12c..e4c287f762 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/PublishedCache/StatusPublishedCacheController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/PublishedCache/StatusPublishedCacheController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -11,8 +11,6 @@ public class StatusPublishedCacheController : PublishedCacheControllerBase [HttpGet("status")] [MapToApiVersion("1.0")] [ProducesResponseType(StatusCodes.Status501NotImplemented)] - public async Task> Status(CancellationToken cancellationToken) - { - return StatusCode(StatusCodes.Status501NotImplemented); - } + public Task> Status(CancellationToken cancellationToken) + => Task.FromResult>(StatusCode(StatusCodes.Status501NotImplemented)); } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/RecycleBin/RecycleBinControllerBase.cs b/src/Umbraco.Cms.Api.Management/Controllers/RecycleBin/RecycleBinControllerBase.cs index 69ae9b0b9d..850d7240d0 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/RecycleBin/RecycleBinControllerBase.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/RecycleBin/RecycleBinControllerBase.cs @@ -23,17 +23,18 @@ public abstract class RecycleBinControllerBase : ContentControllerBase protected abstract Guid RecycleBinRootKey { get; } - protected async Task>> GetRoot(int skip, int take) + protected Task>> GetRoot(int skip, int take) { IEntitySlim[] rootEntities = GetPagedRootEntities(skip, take, out var totalItems); TItem[] treeItemViewModels = MapRecycleBinViewModels(null, rootEntities); PagedViewModel result = PagedViewModel(treeItemViewModels, totalItems); - return await Task.FromResult(Ok(result)); + + return Task.FromResult>>(Ok(result)); } - protected async Task>> GetChildren(Guid parentKey, int skip, int take) + protected Task>> GetChildren(Guid parentKey, int skip, int take) { IEntitySlim[] children = GetPagedChildEntities(parentKey, skip, take, out var totalItems); @@ -41,7 +42,7 @@ public abstract class RecycleBinControllerBase : ContentControllerBase PagedViewModel result = PagedViewModel(treeItemViewModels, totalItems); - return await Task.FromResult(Ok(result)); + return Task.FromResult>>(Ok(result)); } protected virtual TItem MapRecycleBinViewModel(Guid? parentKey, IEntitySlim entity) diff --git a/src/Umbraco.Cms.Api.Management/Controllers/RedirectUrlManagement/DeleteByKeyRedirectUrlManagementController.cs b/src/Umbraco.Cms.Api.Management/Controllers/RedirectUrlManagement/DeleteByKeyRedirectUrlManagementController.cs index 3a0e60b61d..6f33b16699 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/RedirectUrlManagement/DeleteByKeyRedirectUrlManagementController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/RedirectUrlManagement/DeleteByKeyRedirectUrlManagementController.cs @@ -18,9 +18,9 @@ public class DeleteByKeyRedirectUrlManagementController : RedirectUrlManagementC [MapToApiVersion("1.0")] [HttpDelete("{id:guid}")] [ProducesResponseType(StatusCodes.Status200OK)] - public async Task DeleteByKey(CancellationToken cancellationToken, Guid id) + public Task DeleteByKey(CancellationToken cancellationToken, Guid id) { _redirectUrlService.Delete(id); - return Ok(); + return Task.FromResult(Ok()); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/RedirectUrlManagement/GetAllRedirectUrlManagementController.cs b/src/Umbraco.Cms.Api.Management/Controllers/RedirectUrlManagement/GetAllRedirectUrlManagementController.cs index f4600ef653..bd3449679e 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/RedirectUrlManagement/GetAllRedirectUrlManagementController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/RedirectUrlManagement/GetAllRedirectUrlManagementController.cs @@ -27,7 +27,7 @@ public class GetAllRedirectUrlManagementController : RedirectUrlManagementContro [HttpGet] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)] [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] - public async Task>> GetAll( + public Task>> GetAll( CancellationToken cancellationToken, string? filter, int skip = 0, @@ -39,6 +39,6 @@ public class GetAllRedirectUrlManagementController : RedirectUrlManagementContro : _redirectUrlService.SearchRedirectUrls(filter, skip, take, out total); IEnumerable redirectViewModels = _redirectUrlPresentationFactory.CreateMany(redirects); - return new PagedViewModel { Items = redirectViewModels, Total = total }; + return Task.FromResult>>(new PagedViewModel { Items = redirectViewModels, Total = total }); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Relation/ByRelationTypeKeyRelationController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Relation/ByRelationTypeKeyRelationController.cs index cde52b5884..189019cc85 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Relation/ByRelationTypeKeyRelationController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Relation/ByRelationTypeKeyRelationController.cs @@ -43,16 +43,15 @@ public class ByRelationTypeKeyRelationController : RelationControllerBase if (relationsAttempt.Success is false) { - return await Task.FromResult(RelationOperationStatusResult(relationsAttempt.Status)); + return RelationOperationStatusResult(relationsAttempt.Status); } IEnumerable mappedRelations = relationsAttempt.Result.Items.Select(_relationPresentationFactory.Create); - return await Task.FromResult(Ok(new PagedViewModel + return Ok(new PagedViewModel { Total = relationsAttempt.Result.Total, Items = mappedRelations, - })); - + }); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/RelationType/ByKeyRelationTypeController.cs b/src/Umbraco.Cms.Api.Management/Controllers/RelationType/ByKeyRelationTypeController.cs index a0d6ae4a46..691c6ae0ef 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/RelationType/ByKeyRelationTypeController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/RelationType/ByKeyRelationTypeController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.ViewModels.RelationType; @@ -24,16 +24,16 @@ public class ByKeyRelationTypeController : RelationTypeControllerBase [MapToApiVersion("1.0")] [ProducesResponseType(typeof(RelationTypeResponseModel), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)] - public async Task ByKey(CancellationToken cancellationToken, Guid id) + public Task ByKey(CancellationToken cancellationToken, Guid id) { IRelationType? relationType = _relationService.GetRelationTypeById(id); if (relationType is null) { - return RelationTypeNotFound(); + return Task.FromResult(RelationTypeNotFound()); } RelationTypeResponseModel mappedRelationType = _mapper.Map(relationType)!; - return await Task.FromResult(Ok(mappedRelationType)); + return Task.FromResult(Ok(mappedRelationType)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/RelationType/Item/ItemRelationTypeItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/RelationType/Item/ItemRelationTypeItemController.cs index 6745108b93..6ba42c1579 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/RelationType/Item/ItemRelationTypeItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/RelationType/Item/ItemRelationTypeItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.ViewModels.RelationType.Item; @@ -23,13 +23,13 @@ public class ItemRelationTypeItemController : RelationTypeItemControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Item( + public Task Item( CancellationToken cancellationToken, [FromQuery(Name = "id")] HashSet ids) { if (ids.Count is 0) { - return Ok(Enumerable.Empty()); + return Task.FromResult(Ok(Enumerable.Empty())); } // relation service does not allow fetching a collection of relation types by their ids; instead it relies @@ -40,6 +40,6 @@ public class ItemRelationTypeItemController : RelationTypeItemControllerBase List responseModels = _mapper.MapEnumerable(relationTypes); - return await Task.FromResult(Ok(responseModels)); + return Task.FromResult(Ok(responseModels)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Script/Item/ItemScriptItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Script/Item/ItemScriptItemController.cs index 5786c7aaf6..e18eda31a7 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Script/Item/ItemScriptItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Script/Item/ItemScriptItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Extensions; @@ -18,17 +18,17 @@ public class ItemScriptItemController : ScriptItemControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Item( + public Task Item( CancellationToken cancellationToken, [FromQuery(Name = "path")] HashSet paths) { if (paths.Count is 0) { - return Ok(Enumerable.Empty()); + return Task.FromResult(Ok(Enumerable.Empty())); } paths = paths.Select(path => path.VirtualPathToSystemPath()).ToHashSet(); IEnumerable responseModels = _fileItemPresentationFactory.CreateScriptItemResponseModels(paths); - return await Task.FromResult(Ok(responseModels)); + return Task.FromResult(Ok(responseModels)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Searcher/AllSearcherController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Searcher/AllSearcherController.cs index 76cd2f639b..60ee9f22b7 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Searcher/AllSearcherController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Searcher/AllSearcherController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Examine; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -22,7 +22,7 @@ public class AllSearcherController : SearcherControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] - public async Task>> All( + public Task>> All( CancellationToken cancellationToken, int skip = 0, int take = 100) @@ -37,6 +37,6 @@ public class AllSearcherController : SearcherControllerBase Total = searchers.Count, }; - return await Task.FromResult(Ok(viewModel)); + return Task.FromResult>>(Ok(viewModel)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Searcher/QuerySearcherController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Searcher/QuerySearcherController.cs index f3f7d0acad..2017d4b376 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Searcher/QuerySearcherController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Searcher/QuerySearcherController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Examine; using Examine.Lucene.Search; using Examine.Search; @@ -23,7 +23,7 @@ public class QuerySearcherController : SearcherControllerBase [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)] - public async Task>> Query( + public Task>> Query( CancellationToken cancellationToken, string searcherName, string? term, @@ -34,7 +34,7 @@ public class QuerySearcherController : SearcherControllerBase if (term.IsNullOrWhiteSpace()) { - return new PagedViewModel(); + return Task.FromResult>>(new PagedViewModel()); } if (!_examineManagerService.TryFindSearcher(searcherName, out ISearcher searcher)) @@ -47,7 +47,7 @@ public class QuerySearcherController : SearcherControllerBase Type = "Error", }; - return NotFound(invalidModelProblem); + return Task.FromResult>>(NotFound(invalidModelProblem)); } ISearchResults results; @@ -71,10 +71,10 @@ public class QuerySearcherController : SearcherControllerBase Type = "Error", }; - return BadRequest(invalidModelProblem); + return Task.FromResult>>(BadRequest(invalidModelProblem)); } - return await Task.FromResult(new PagedViewModel + return Task.FromResult>>(new PagedViewModel { Total = results.TotalItemCount, Items = results.Select(x => new SearchResultResponseModel diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Security/BackOfficeController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Security/BackOfficeController.cs index cada1031e3..de2ae97a2d 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Security/BackOfficeController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Security/BackOfficeController.cs @@ -492,7 +492,7 @@ public class BackOfficeController : SecurityControllerBase return new ChallengeResult(provider, properties); } - private async Task SignInBackOfficeUser(ClaimsPrincipal backOfficePrincipal, OpenIddictRequest request) + private Task SignInBackOfficeUser(ClaimsPrincipal backOfficePrincipal, OpenIddictRequest request) { Claim[] backOfficeClaims = backOfficePrincipal.Claims.ToArray(); foreach (Claim backOfficeClaim in backOfficeClaims) @@ -506,7 +506,7 @@ public class BackOfficeController : SecurityControllerBase backOfficePrincipal.SetScopes(OpenIddictConstants.Scopes.OfflineAccess); } - return new SignInResult(OpenIddictServerAspNetCoreDefaults.AuthenticationScheme, backOfficePrincipal); + return Task.FromResult(new SignInResult(OpenIddictServerAspNetCoreDefaults.AuthenticationScheme, backOfficePrincipal)); } private async Task SignInBackOfficeUser(BackOfficeIdentityUser backOfficeUser, OpenIddictRequest request) diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Security/ConfigurationSecurityController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Security/ConfigurationSecurityController.cs index e65ea9752c..c96f4a2bcf 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Security/ConfigurationSecurityController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Security/ConfigurationSecurityController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -20,13 +20,13 @@ public class ConfigurationSecurityController : SecurityControllerBase [HttpGet("configuration")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(SecurityConfigurationResponseModel), StatusCodes.Status200OK)] - public async Task Configuration(CancellationToken cancellationToken) + public Task Configuration(CancellationToken cancellationToken) { var viewModel = new SecurityConfigurationResponseModel { PasswordConfiguration = _passwordConfigurationPresentationFactory.CreatePasswordConfigurationResponseModel(), }; - return await Task.FromResult(Ok(viewModel)); + return Task.FromResult(Ok(viewModel)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Server/StatusServerController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Server/StatusServerController.cs index 0e25c9d3c6..4a9afe24ec 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Server/StatusServerController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Server/StatusServerController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -19,6 +19,6 @@ public class StatusServerController : ServerControllerBase [MapToApiVersion("1.0")] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)] [ProducesResponseType(typeof(ServerStatusResponseModel), StatusCodes.Status200OK)] - public async Task> Get(CancellationToken cancellationToken) => - await Task.FromResult(new ServerStatusResponseModel { ServerStatus = _runtimeState.Level }); + public Task> Get(CancellationToken cancellationToken) + => Task.FromResult>(new ServerStatusResponseModel { ServerStatus = _runtimeState.Level }); } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/StaticFile/Item/ItemStaticFileItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/StaticFile/Item/ItemStaticFileItemController.cs index 3301ecf8e1..600499c8a1 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/StaticFile/Item/ItemStaticFileItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/StaticFile/Item/ItemStaticFileItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Extensions; @@ -18,17 +18,17 @@ public class ItemStaticFileItemController : StaticFileItemControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Item( + public Task Item( CancellationToken cancellationToken, [FromQuery(Name = "path")] HashSet paths) { if (paths.Count is 0) { - return Ok(Enumerable.Empty()); + return Task.FromResult(Ok(Enumerable.Empty())); } paths = paths.Select(path => path.VirtualPathToSystemPath()).ToHashSet(); IEnumerable responseModels = _fileItemPresentationFactory.CreateStaticFileItemResponseModels(paths); - return await Task.FromResult(Ok(responseModels)); + return Task.FromResult(Ok(responseModels)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Stylesheet/Item/ItemStylesheetItemController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Stylesheet/Item/ItemStylesheetItemController.cs index d9ab9b4aa9..f5e6d71adb 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Stylesheet/Item/ItemStylesheetItemController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Stylesheet/Item/ItemStylesheetItemController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Extensions; @@ -18,17 +18,17 @@ public class ItemStylesheetItemController : StylesheetItemControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Item( + public Task Item( CancellationToken cancellationToken, [FromQuery(Name = "path")] HashSet paths) { if (paths.Count is 0) { - return Ok(Enumerable.Empty()); + return Task.FromResult(Ok(Enumerable.Empty())); } paths = paths.Select(path => path.VirtualPathToSystemPath()).ToHashSet(); IEnumerable responseModels = _fileItemPresentationFactory.CreateStylesheetItemResponseModels(paths); - return await Task.FromResult(Ok(responseModels)); + return Task.FromResult(Ok(responseModels)); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Tag/ByQueryTagController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Tag/ByQueryTagController.cs index d528eabbc4..368d908598 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Tag/ByQueryTagController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Tag/ByQueryTagController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Common.ViewModels.Pagination; @@ -42,6 +42,6 @@ public class ByQueryTagController : TagControllerBase Total = responseModels.Count, }; - return await Task.FromResult(Ok(pagedViewModel)); + return Ok(pagedViewModel); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Telemetry/AllTelemetryController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Telemetry/AllTelemetryController.cs index 625b8b146b..df18521fbc 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Telemetry/AllTelemetryController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Telemetry/AllTelemetryController.cs @@ -13,13 +13,13 @@ public class AllTelemetryController : TelemetryControllerBase [HttpGet] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] - public async Task> GetAll( + public Task> GetAll( CancellationToken cancellationToken, int skip = 0, int take = 100) { TelemetryLevel[] levels = Enum.GetValues(); - return await Task.FromResult(new PagedViewModel + return Task.FromResult(new PagedViewModel { Total = levels.Length, Items = levels.Skip(skip).Take(take).Select(level => new TelemetryResponseModel { TelemetryLevel = level }), diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Telemetry/GetTelemetryController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Telemetry/GetTelemetryController.cs index d3bfe107a3..c442e6727b 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Telemetry/GetTelemetryController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Telemetry/GetTelemetryController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core.Services; @@ -16,6 +16,6 @@ public class GetTelemetryController : TelemetryControllerBase [HttpGet("level")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(TelemetryResponseModel), StatusCodes.Status200OK)] - public async Task Get(CancellationToken cancellationToken) - => await Task.FromResult(new TelemetryResponseModel { TelemetryLevel = _metricsConsentService.GetConsentLevel() }); + public Task Get(CancellationToken cancellationToken) + => Task.FromResult(new TelemetryResponseModel { TelemetryLevel = _metricsConsentService.GetConsentLevel() }); } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Telemetry/SetTelemetryController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Telemetry/SetTelemetryController.cs index b0f8110e40..f48abbc11d 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Telemetry/SetTelemetryController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Telemetry/SetTelemetryController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core.Services; @@ -34,6 +34,6 @@ public class SetTelemetryController : TelemetryControllerBase } await _metricsConsentService.SetConsentLevelAsync(telemetryRepresentationBase.TelemetryLevel); - return await Task.FromResult(Ok()); + return Ok(); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Template/Query/ExecuteTemplateQueryController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Template/Query/ExecuteTemplateQueryController.cs index b491b45f59..2b3656ad25 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Template/Query/ExecuteTemplateQueryController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Template/Query/ExecuteTemplateQueryController.cs @@ -1,4 +1,4 @@ -using System.Diagnostics; +using System.Diagnostics; using System.Linq.Expressions; using System.Text; using Asp.Versioning; @@ -80,7 +80,7 @@ public class ExecuteTemplateQueryController : TemplateQueryControllerBase [HttpPost("execute")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(TemplateQueryResultResponseModel), StatusCodes.Status200OK)] - public async Task> Execute( + public Task> Execute( CancellationToken cancellationToken, TemplateQueryExecuteModel query) { @@ -96,7 +96,7 @@ public class ExecuteTemplateQueryController : TemplateQueryControllerBase .GetMany(results.Select(content => content.ContentType.Key).Distinct()) .ToDictionary(contentType => contentType.Key, contentType => contentType.Icon); - return await Task.FromResult(Ok(new TemplateQueryResultResponseModel + return Task.FromResult>(Ok(new TemplateQueryResultResponseModel { QueryExpression = queryExpression.ToString(), ResultCount = results.Count, diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Template/Query/SettingsTemplateQueryController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Template/Query/SettingsTemplateQueryController.cs index d5d5026c4f..868bd8baa3 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Template/Query/SettingsTemplateQueryController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Template/Query/SettingsTemplateQueryController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.ViewModels.Template.Query; @@ -17,7 +17,7 @@ public class SettingsTemplateQueryController : TemplateQueryControllerBase [HttpGet("settings")] [MapToApiVersion("1.0")] [ProducesResponseType(typeof(TemplateQuerySettingsResponseModel), StatusCodes.Status200OK)] - public async Task> Settings(CancellationToken cancellationToken) + public Task> Settings(CancellationToken cancellationToken) { var contentTypeAliases = _contentTypeService .GetAll() @@ -29,7 +29,7 @@ public class SettingsTemplateQueryController : TemplateQueryControllerBase IEnumerable operators = GetOperators(); - return await Task.FromResult(Ok(new TemplateQuerySettingsResponseModel + return Task.FromResult>(Ok(new TemplateQuerySettingsResponseModel { DocumentTypeAliases = contentTypeAliases, Properties = properties, diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Tree/EntityTreeControllerBase.cs b/src/Umbraco.Cms.Api.Management/Controllers/Tree/EntityTreeControllerBase.cs index 57f575fd8a..bf86b852ed 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Tree/EntityTreeControllerBase.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Tree/EntityTreeControllerBase.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Common.ViewModels.Pagination; using Umbraco.Cms.Api.Management.ViewModels; using Umbraco.Cms.Api.Management.ViewModels.Tree; @@ -22,24 +22,26 @@ public abstract class EntityTreeControllerBase : ManagementApiControllerB protected virtual Ordering ItemOrdering => Ordering.By(nameof(Infrastructure.Persistence.Dtos.NodeDto.Text)); - protected async Task>> GetRoot(int skip, int take) + protected Task>> GetRoot(int skip, int take) { IEntitySlim[] rootEntities = GetPagedRootEntities(skip, take, out var totalItems); TItem[] treeItemViewModels = MapTreeItemViewModels(null, rootEntities); PagedViewModel result = PagedViewModel(treeItemViewModels, totalItems); - return await Task.FromResult(Ok(result)); + + return Task.FromResult>>(Ok(result)); } - protected async Task>> GetChildren(Guid parentId, int skip, int take) + protected Task>> GetChildren(Guid parentId, int skip, int take) { IEntitySlim[] children = GetPagedChildEntities(parentId, skip, take, out var totalItems); TItem[] treeItemViewModels = MapTreeItemViewModels(parentId, children); PagedViewModel result = PagedViewModel(treeItemViewModels, totalItems); - return await Task.FromResult(Ok(result)); + + return Task.FromResult>>(Ok(result)); } protected virtual async Task>> GetAncestors(Guid descendantKey, bool includeSelf = true) @@ -60,13 +62,13 @@ public abstract class EntityTreeControllerBase : ManagementApiControllerB return Ok(result); } - protected virtual async Task GetAncestorEntitiesAsync(Guid descendantKey, bool includeSelf) + protected virtual Task GetAncestorEntitiesAsync(Guid descendantKey, bool includeSelf) { IEntitySlim? entity = EntityService.Get(descendantKey, ItemObjectType); if (entity is null) { // not much else we can do here but return nothing - return await Task.FromResult(Array.Empty()); + return Task.FromResult(Array.Empty()); } var ancestorIds = entity.AncestorIds(); @@ -76,7 +78,7 @@ public abstract class EntityTreeControllerBase : ManagementApiControllerB : Array.Empty(); ancestors = ancestors.Union(includeSelf ? new[] { entity } : Array.Empty()); - return ancestors.OrderBy(item => item.Level).ToArray(); + return Task.FromResult(ancestors.OrderBy(item => item.Level).ToArray()); } protected virtual IEntitySlim[] GetPagedRootEntities(int skip, int take, out long totalItems) diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Tree/FileSystemTreeControllerBase.cs b/src/Umbraco.Cms.Api.Management/Controllers/Tree/FileSystemTreeControllerBase.cs index 80b1edffeb..1388e4b798 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Tree/FileSystemTreeControllerBase.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Tree/FileSystemTreeControllerBase.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Common.ViewModels.Pagination; using Umbraco.Cms.Api.Management.Extensions; using Umbraco.Cms.Api.Management.ViewModels.FileSystem; @@ -12,28 +12,28 @@ public abstract class FileSystemTreeControllerBase : ManagementApiControllerBase { protected abstract IFileSystem FileSystem { get; } - protected async Task>> GetRoot(int skip, int take) + protected Task>> GetRoot(int skip, int take) { FileSystemTreeItemPresentationModel[] viewModels = GetPathViewModels(string.Empty, skip, take, out var totalItems); PagedViewModel result = PagedViewModel(viewModels, totalItems); - return await Task.FromResult(Ok(result)); + return Task.FromResult>>(Ok(result)); } - protected async Task>> GetChildren(string path, int skip, int take) + protected Task>> GetChildren(string path, int skip, int take) { FileSystemTreeItemPresentationModel[] viewModels = GetPathViewModels(path, skip, take, out var totalItems); PagedViewModel result = PagedViewModel(viewModels, totalItems); - return await Task.FromResult(Ok(result)); + return Task.FromResult>>(Ok(result)); } - protected virtual async Task>> GetAncestors(string path, bool includeSelf = true) + protected virtual Task>> GetAncestors(string path, bool includeSelf = true) { path = path.VirtualPathToSystemPath(); FileSystemTreeItemPresentationModel[] models = GetAncestorModels(path, includeSelf); - return await Task.FromResult(Ok(models)); + return Task.FromResult>>(Ok(models)); } protected virtual FileSystemTreeItemPresentationModel[] GetAncestorModels(string path, bool includeSelf) diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Tree/FolderTreeControllerBase.cs b/src/Umbraco.Cms.Api.Management/Controllers/Tree/FolderTreeControllerBase.cs index 2a33d95aa3..a7c201372c 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Tree/FolderTreeControllerBase.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Tree/FolderTreeControllerBase.cs @@ -1,4 +1,4 @@ -using Umbraco.Cms.Api.Management.ViewModels.Tree; +using Umbraco.Cms.Api.Management.ViewModels.Tree; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.Entities; @@ -63,14 +63,14 @@ public abstract class FolderTreeControllerBase : NamedEntityTreeControlle return viewModel; } - protected override async Task GetAncestorEntitiesAsync(Guid descendantKey, bool includeSelf = true) + protected override Task GetAncestorEntitiesAsync(Guid descendantKey, bool includeSelf = true) { IEntitySlim? entity = EntityService.Get(descendantKey, ItemObjectType) ?? EntityService.Get(descendantKey, FolderObjectType); if (entity is null) { // not much else we can do here but return nothing - return await Task.FromResult(Array.Empty()); + return Task.FromResult(Array.Empty()); } var ancestorIds = entity.AncestorIds(); @@ -81,9 +81,12 @@ public abstract class FolderTreeControllerBase : NamedEntityTreeControlle .GetAll(ItemObjectType, ancestorIds) .Union(containers) : Array.Empty(); - ancestors = ancestors.Union(includeSelf ? new[] { entity } : Array.Empty()); + if (includeSelf) + { + ancestors = ancestors.Append(entity); + } - return ancestors.OrderBy(item => item.Level).ToArray(); + return Task.FromResult(ancestors.OrderBy(item => item.Level).ToArray()); } private IEntitySlim[] GetEntities(Guid? parentKey, int skip, int take, out long totalItems) @@ -94,7 +97,7 @@ public abstract class FolderTreeControllerBase : NamedEntityTreeControlle IEntitySlim[] itemEntities = EntityService.GetPagedChildren( parentKey, - new [] { FolderObjectType, ItemObjectType }, + [FolderObjectType, ItemObjectType], childObjectTypes, skip, take, diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Upgrade/SettingsUpgradeController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Upgrade/SettingsUpgradeController.cs index 66e212650f..2dcbd8a014 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Upgrade/SettingsUpgradeController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Upgrade/SettingsUpgradeController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core.Mapping; @@ -26,7 +26,7 @@ public class SettingsUpgradeController : UpgradeControllerBase [MapToApiVersion("1.0")] [ProducesResponseType(typeof(UpgradeSettingsResponseModel), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status428PreconditionRequired)] - public async Task> Settings(CancellationToken cancellationToken) + public Task> Settings(CancellationToken cancellationToken) { // TODO: Async - We need to figure out what we want to do with async endpoints that doesn't do anything async // We want these to be async for future use (Ideally we'll have more async things), @@ -34,6 +34,6 @@ public class SettingsUpgradeController : UpgradeControllerBase UpgradeSettingsModel upgradeSettings = _upgradeSettingsFactory.GetUpgradeSettings(); UpgradeSettingsResponseModel responseModel = _mapper.Map(upgradeSettings)!; - return await Task.FromResult(responseModel); + return Task.FromResult>(responseModel); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/UrlSegment/ResizeImagingController.cs b/src/Umbraco.Cms.Api.Management/Controllers/UrlSegment/ResizeImagingController.cs index 2c2dba9a19..ea13c080e2 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/UrlSegment/ResizeImagingController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/UrlSegment/ResizeImagingController.cs @@ -1,4 +1,4 @@ -using Asp.Versioning; +using Asp.Versioning; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Api.Management.Factories; @@ -23,10 +23,10 @@ public class ResizeImagingController : ImagingControllerBase [MapToApiVersion("1.0")] [HttpGet("resize/urls")] [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)] - public async Task Urls([FromQuery(Name = "id")] HashSet ids, int height = 200, int width = 200, ImageCropMode? mode = null) + public Task Urls([FromQuery(Name = "id")] HashSet ids, int height = 200, int width = 200, ImageCropMode? mode = null) { IEnumerable items = _mediaService.GetByIds(ids); - return await Task.FromResult(Ok(_reziseImageUrlFactory.CreateUrlSets(items, height, width, mode))); + return Task.FromResult(Ok(_reziseImageUrlFactory.CreateUrlSets(items, height, width, mode))); } } diff --git a/src/Umbraco.Cms.Api.Management/Factories/DocumentNotificationPresentationFactory.cs b/src/Umbraco.Cms.Api.Management/Factories/DocumentNotificationPresentationFactory.cs index 7daf762b78..5a79c575a5 100644 --- a/src/Umbraco.Cms.Api.Management/Factories/DocumentNotificationPresentationFactory.cs +++ b/src/Umbraco.Cms.Api.Management/Factories/DocumentNotificationPresentationFactory.cs @@ -1,4 +1,4 @@ -using Umbraco.Cms.Api.Management.ViewModels.Document; +using Umbraco.Cms.Api.Management.ViewModels.Document; using Umbraco.Cms.Core.Actions; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Security; @@ -19,15 +19,14 @@ internal sealed class DocumentNotificationPresentationFactory : IDocumentNotific _backOfficeSecurityAccessor = backOfficeSecurityAccessor; } - public async Task> CreateNotificationModelsAsync(IContent content) + public Task> CreateNotificationModelsAsync(IContent content) { var subscribedActionIds = _notificationService - .GetUserNotifications(_backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser, content.Path)? - .Select(n => n.Action) - .ToArray() - ?? Array.Empty(); + .GetUserNotifications(_backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser, content.Path)? + .Select(n => n.Action) + .ToArray() ?? Array.Empty(); - return await Task.FromResult(_actionCollection + return Task.FromResult>(_actionCollection .Where(action => action.ShowInNotifier) .Select(action => new DocumentNotificationResponseModel { diff --git a/src/Umbraco.Cms.Api.Management/Factories/DocumentVersionPresentationFactory.cs b/src/Umbraco.Cms.Api.Management/Factories/DocumentVersionPresentationFactory.cs index 2c3b80fd3c..21d87f53f8 100644 --- a/src/Umbraco.Cms.Api.Management/Factories/DocumentVersionPresentationFactory.cs +++ b/src/Umbraco.Cms.Api.Management/Factories/DocumentVersionPresentationFactory.cs @@ -31,6 +31,14 @@ internal sealed class DocumentVersionPresentationFactory : IDocumentVersionPrese contentVersion.CurrentDraftVersion, contentVersion.PreventCleanup); - public async Task> CreateMultipleAsync(IEnumerable contentVersions) => - await Task.WhenAll(contentVersions.Select(CreateAsync)); + public async Task> CreateMultipleAsync(IEnumerable contentVersions) + => await CreateMultipleImplAsync(contentVersions).ToArrayAsync(); + + private async IAsyncEnumerable CreateMultipleImplAsync(IEnumerable contentVersions) + { + foreach (ContentVersionMeta contentVersion in contentVersions) + { + yield return await CreateAsync(contentVersion); + } + } } diff --git a/src/Umbraco.Cms.Api.Management/Factories/RelationTypePresentationFactory.cs b/src/Umbraco.Cms.Api.Management/Factories/RelationTypePresentationFactory.cs index 3ce445a125..651abfd71a 100644 --- a/src/Umbraco.Cms.Api.Management/Factories/RelationTypePresentationFactory.cs +++ b/src/Umbraco.Cms.Api.Management/Factories/RelationTypePresentationFactory.cs @@ -1,4 +1,4 @@ -using Umbraco.Cms.Api.Management.ViewModels.TrackedReferences; +using Umbraco.Cms.Api.Management.ViewModels.TrackedReferences; using Umbraco.Cms.Core; using Umbraco.Cms.Core.Mapping; using Umbraco.Cms.Core.Models; @@ -15,7 +15,7 @@ public class RelationTypePresentationFactory : IRelationTypePresentationFactory _umbracoMapper = umbracoMapper; } - public async Task> CreateReferenceResponseModelsAsync(IEnumerable relationItemModels) + public Task> CreateReferenceResponseModelsAsync(IEnumerable relationItemModels) { IReferenceResponseModel[] result = relationItemModels.Select(relationItemModel => relationItemModel.NodeType switch { @@ -24,6 +24,6 @@ public class RelationTypePresentationFactory : IRelationTypePresentationFactory _ => _umbracoMapper.Map(relationItemModel) as IReferenceResponseModel, }).WhereNotNull().ToArray(); - return await Task.FromResult(result); + return Task.FromResult>(result); } } diff --git a/src/Umbraco.Cms.Api.Management/Factories/UserPresentationFactory.cs b/src/Umbraco.Cms.Api.Management/Factories/UserPresentationFactory.cs index e1ee38d51a..baa67a3299 100644 --- a/src/Umbraco.Cms.Api.Management/Factories/UserPresentationFactory.cs +++ b/src/Umbraco.Cms.Api.Management/Factories/UserPresentationFactory.cs @@ -96,7 +96,7 @@ public class UserPresentationFactory : IUserPresentationFactory Kind = user.Kind }; - public async Task CreateCreationModelAsync(CreateUserRequestModel requestModel) + public Task CreateCreationModelAsync(CreateUserRequestModel requestModel) { var createModel = new UserCreateModel { @@ -108,10 +108,10 @@ public class UserPresentationFactory : IUserPresentationFactory Kind = requestModel.Kind }; - return await Task.FromResult(createModel); + return Task.FromResult(createModel); } - public async Task CreateInviteModelAsync(InviteUserRequestModel requestModel) + public Task CreateInviteModelAsync(InviteUserRequestModel requestModel) { var inviteModel = new UserInviteModel { @@ -122,10 +122,10 @@ public class UserPresentationFactory : IUserPresentationFactory Message = requestModel.Message, }; - return await Task.FromResult(inviteModel); + return Task.FromResult(inviteModel); } - public async Task CreateResendInviteModelAsync(ResendInviteUserRequestModel requestModel) + public Task CreateResendInviteModelAsync(ResendInviteUserRequestModel requestModel) { var inviteModel = new UserResendInviteModel { @@ -133,10 +133,10 @@ public class UserPresentationFactory : IUserPresentationFactory Message = requestModel.Message, }; - return await Task.FromResult(inviteModel); + return Task.FromResult(inviteModel); } - public async Task CreateCurrentUserConfigurationModelAsync() + public Task CreateCurrentUserConfigurationModelAsync() { var model = new CurrenUserConfigurationResponseModel { @@ -149,7 +149,7 @@ public class UserPresentationFactory : IUserPresentationFactory AllowTwoFactor = _externalLoginProviders.HasDenyLocalLogin() is false, }; - return await Task.FromResult(model); + return Task.FromResult(model); } public Task CreateUserConfigurationModelAsync() => @@ -165,7 +165,7 @@ public class UserPresentationFactory : IUserPresentationFactory AllowTwoFactor = _externalLoginProviders.HasDenyLocalLogin() is false, }); - public async Task CreateUpdateModelAsync(Guid existingUserKey, UpdateUserRequestModel updateModel) + public Task CreateUpdateModelAsync(Guid existingUserKey, UpdateUserRequestModel updateModel) { var model = new UserUpdateModel { @@ -182,7 +182,7 @@ public class UserPresentationFactory : IUserPresentationFactory model.UserGroupKeys = updateModel.UserGroupIds.Select(x => x.Id).ToHashSet(); - return await Task.FromResult(model); + return Task.FromResult(model); } public async Task CreateCurrentUserResponseModelAsync(IUser user) @@ -202,7 +202,7 @@ public class UserPresentationFactory : IUserPresentationFactory var allowedSections = presentationGroups.SelectMany(x => x.Sections).ToHashSet(); - return await Task.FromResult(new CurrentUserResponseModel() + return new CurrentUserResponseModel() { Id = presentationUser.Id, Email = presentationUser.Email, @@ -222,17 +222,17 @@ public class UserPresentationFactory : IUserPresentationFactory AllowedSections = allowedSections, IsAdmin = user.IsAdmin(), UserGroupIds = presentationUser.UserGroupIds, - }); + }; } - public async Task CreateCalculatedUserStartNodesResponseModelAsync(IUser user) + public Task CreateCalculatedUserStartNodesResponseModelAsync(IUser user) { var mediaStartNodeIds = user.CalculateMediaStartNodeIds(_entityService, _appCaches); ISet mediaStartNodeKeys = GetKeysFromIds(mediaStartNodeIds, UmbracoObjectTypes.Media); var contentStartNodeIds = user.CalculateContentStartNodeIds(_entityService, _appCaches); ISet documentStartNodeKeys = GetKeysFromIds(contentStartNodeIds, UmbracoObjectTypes.Document); - return await Task.FromResult(new CalculatedUserStartNodesResponseModel() + return Task.FromResult(new CalculatedUserStartNodesResponseModel() { Id = user.Key, MediaStartNodeIds = mediaStartNodeKeys, diff --git a/src/Umbraco.Cms.Api.Management/Routing/BackOfficeAreaRoutes.cs b/src/Umbraco.Cms.Api.Management/Routing/BackOfficeAreaRoutes.cs index e7f0a597a6..ed246fd058 100644 --- a/src/Umbraco.Cms.Api.Management/Routing/BackOfficeAreaRoutes.cs +++ b/src/Umbraco.Cms.Api.Management/Routing/BackOfficeAreaRoutes.cs @@ -33,14 +33,14 @@ public sealed class BackOfficeAreaRoutes : IAreaRoutes _umbracoPathSegment = globalSettings.Value.GetUmbracoMvcArea(hostingEnvironment); } - [Obsolete("Use non-obsolete constructor. This will be removed in Umbraco 15.")] + [Obsolete("Use non-obsolete constructor. Scheduled for removal in Umbraco 16.")] public BackOfficeAreaRoutes( IOptions globalSettings, IHostingEnvironment hostingEnvironment, IRuntimeState runtimeState, - UmbracoApiControllerTypeCollection apiControllers) : this(globalSettings, hostingEnvironment, runtimeState) + UmbracoApiControllerTypeCollection apiControllers) + : this(globalSettings, hostingEnvironment, runtimeState) { - } /// diff --git a/src/Umbraco.Cms.Persistence.EFCore/Locking/SqliteEFCoreDistributedLockingMechanism.cs b/src/Umbraco.Cms.Persistence.EFCore/Locking/SqliteEFCoreDistributedLockingMechanism.cs index b6e2fa0b7b..13db115106 100644 --- a/src/Umbraco.Cms.Persistence.EFCore/Locking/SqliteEFCoreDistributedLockingMechanism.cs +++ b/src/Umbraco.Cms.Persistence.EFCore/Locking/SqliteEFCoreDistributedLockingMechanism.cs @@ -16,10 +16,10 @@ namespace Umbraco.Cms.Persistence.EFCore.Locking; internal sealed class SqliteEFCoreDistributedLockingMechanism : IDistributedLockingMechanism where T : DbContext { - private ConnectionStrings _connectionStrings; - private GlobalSettings _globalSettings; private readonly ILogger> _logger; private readonly Lazy> _efCoreScopeAccessor; + private GlobalSettings _globalSettings; + private ConnectionStrings _connectionStrings; public SqliteEFCoreDistributedLockingMechanism( ILogger> logger, @@ -31,29 +31,26 @@ internal sealed class SqliteEFCoreDistributedLockingMechanism : IDistributedL _efCoreScopeAccessor = efCoreScopeAccessor; _globalSettings = globalSettings.CurrentValue; _connectionStrings = connectionStrings.CurrentValue; - globalSettings.OnChange(x=>_globalSettings = x); - connectionStrings.OnChange(x=>_connectionStrings = x); + + globalSettings.OnChange(x => _globalSettings = x); + connectionStrings.OnChange(x => _connectionStrings = x); } public bool HasActiveRelatedScope => _efCoreScopeAccessor.Value.AmbientScope is not null; /// - public bool Enabled => _connectionStrings.IsConnectionStringConfigured() && - string.Equals(_connectionStrings.ProviderName, "Microsoft.Data.Sqlite", StringComparison.InvariantCultureIgnoreCase) && _efCoreScopeAccessor.Value.AmbientScope is not null; + public bool Enabled + => _connectionStrings.IsConnectionStringConfigured() && + string.Equals(_connectionStrings.ProviderName, Constants.ProviderNames.SQLLite, StringComparison.InvariantCultureIgnoreCase) && + _efCoreScopeAccessor.Value.AmbientScope is not null; // With journal_mode=wal we can always read a snapshot. public IDistributedLock ReadLock(int lockId, TimeSpan? obtainLockTimeout = null) - { - obtainLockTimeout ??= _globalSettings.DistributedLockingReadLockDefaultTimeout; - return new SqliteDistributedLock(this, lockId, DistributedLockType.ReadLock, obtainLockTimeout.Value); - } + => new SqliteDistributedLock(this, lockId, DistributedLockType.ReadLock, obtainLockTimeout ?? _globalSettings.DistributedLockingReadLockDefaultTimeout); // With journal_mode=wal only a single write transaction can exist at a time. public IDistributedLock WriteLock(int lockId, TimeSpan? obtainLockTimeout = null) - { - obtainLockTimeout ??= _globalSettings.DistributedLockingWriteLockDefaultTimeout; - return new SqliteDistributedLock(this, lockId, DistributedLockType.WriteLock, obtainLockTimeout.Value); - } + => new SqliteDistributedLock(this, lockId, DistributedLockType.WriteLock, obtainLockTimeout ?? _globalSettings.DistributedLockingWriteLockDefaultTimeout); private sealed class SqliteDistributedLock : IDistributedLock { @@ -104,9 +101,9 @@ internal sealed class SqliteEFCoreDistributedLockingMechanism : IDistributedL public DistributedLockType LockType { get; } - public void Dispose() => + public void Dispose() // Mostly no op, cleaned up by completing transaction in scope. - _parent._logger.LogDebug("Dropped {lockType} for id {id}", LockType, LockId); + => _parent._logger.LogDebug("Dropped {lockType} for id {id}", LockType, LockId); public override string ToString() => $"SqliteDistributedLock({LockId})"; @@ -115,15 +112,17 @@ internal sealed class SqliteEFCoreDistributedLockingMechanism : IDistributedL // Mostly no-op just check that we didn't end up ReadUncommitted for real. private void ObtainReadLock() { - IEfCoreScope? efCoreScope = _parent._efCoreScopeAccessor.Value.AmbientScope ?? throw new PanicException("No current ambient scope"); + IEfCoreScope? efCoreScope = _parent._efCoreScopeAccessor.Value.AmbientScope + ?? throw new PanicException("No current ambient scope"); - efCoreScope.ExecuteWithContextAsync(async database => + efCoreScope.ExecuteWithContextAsync(database => { if (database.Database.CurrentTransaction is null) { - throw new InvalidOperationException( - "SqliteDistributedLockingMechanism requires a transaction to function."); + throw new InvalidOperationException("SqliteDistributedLockingMechanism requires a transaction to function."); } + + return Task.CompletedTask; }); } @@ -131,14 +130,14 @@ internal sealed class SqliteEFCoreDistributedLockingMechanism : IDistributedL // lock occurs for entire database as opposed to row/table. private void ObtainWriteLock() { - IEfCoreScope? efCoreScope = _parent._efCoreScopeAccessor.Value.AmbientScope ?? throw new PanicException("No ambient scope"); + IEfCoreScope? efCoreScope = _parent._efCoreScopeAccessor.Value.AmbientScope + ?? throw new PanicException("No ambient scope"); efCoreScope.ExecuteWithContextAsync(async database => { if (database.Database.CurrentTransaction is null) { - throw new InvalidOperationException( - "SqliteDistributedLockingMechanism requires a transaction to function."); + throw new InvalidOperationException("SqliteDistributedLockingMechanism requires a transaction to function."); } var query = @$"UPDATE umbracoLock SET value = (CASE WHEN (value=1) THEN -1 ELSE 1 END) WHERE id = {LockId.ToString(CultureInfo.InvariantCulture)}"; diff --git a/src/Umbraco.Core/HealthChecks/Checks/Security/BaseHttpHeaderCheck.cs b/src/Umbraco.Core/HealthChecks/Checks/Security/BaseHttpHeaderCheck.cs index b9d14a9131..751998c85a 100644 --- a/src/Umbraco.Core/HealthChecks/Checks/Security/BaseHttpHeaderCheck.cs +++ b/src/Umbraco.Core/HealthChecks/Checks/Security/BaseHttpHeaderCheck.cs @@ -62,15 +62,14 @@ public abstract class BaseHttpHeaderCheck : HealthCheck /// /// Get the status for this health check /// - public override async Task> GetStatusAsync() => - await Task.WhenAll(CheckForHeader()); + public override async Task> GetStatusAsync() + => [await CheckForHeader()]; /// /// Executes the action and returns it's status /// public override HealthCheckStatus ExecuteAction(HealthCheckAction action) - => throw new InvalidOperationException( - "HTTP Header action requested is either not executable or does not exist"); + => throw new InvalidOperationException("HTTP Header action requested is either not executable or does not exist"); /// /// The actual health check method. diff --git a/src/Umbraco.Core/HealthChecks/Checks/Security/ExcessiveHeadersCheck.cs b/src/Umbraco.Core/HealthChecks/Checks/Security/ExcessiveHeadersCheck.cs index e527463929..9bcee6f5d3 100644 --- a/src/Umbraco.Core/HealthChecks/Checks/Security/ExcessiveHeadersCheck.cs +++ b/src/Umbraco.Core/HealthChecks/Checks/Security/ExcessiveHeadersCheck.cs @@ -35,8 +35,8 @@ public class ExcessiveHeadersCheck : HealthCheck /// /// Get the status for this health check /// - public override async Task> GetStatusAsync() => - await Task.WhenAll(CheckForHeaders()); + public override async Task> GetStatusAsync() + => [await CheckForHeaders()]; /// /// Executes the action and returns it's status diff --git a/src/Umbraco.Core/HealthChecks/Checks/Security/HttpsCheck.cs b/src/Umbraco.Core/HealthChecks/Checks/Security/HttpsCheck.cs index e28b821842..c1deb71a49 100644 --- a/src/Umbraco.Core/HealthChecks/Checks/Security/HttpsCheck.cs +++ b/src/Umbraco.Core/HealthChecks/Checks/Security/HttpsCheck.cs @@ -46,16 +46,16 @@ public class HttpsCheck : HealthCheck _hostingEnvironment = hostingEnvironment; } /// - public override async Task> GetStatusAsync() => - await Task.WhenAll( - CheckIfCurrentSchemeIsHttps(), - CheckHttpsConfigurationSetting(), - CheckForValidCertificate()); + public override async Task> GetStatusAsync() + => [ + await CheckIfCurrentSchemeIsHttps(), + await CheckHttpsConfigurationSetting(), + await CheckForValidCertificate() + ]; /// public override HealthCheckStatus ExecuteAction(HealthCheckAction action) - => throw new InvalidOperationException( - "HttpsCheck action requested is either not executable or does not exist"); + => throw new InvalidOperationException("HttpsCheck action requested is either not executable or does not exist"); private static bool ServerCertificateCustomValidation( HttpRequestMessage requestMessage, diff --git a/src/Umbraco.Core/Security/Authorization/FeatureAuthorizer.cs b/src/Umbraco.Core/Security/Authorization/FeatureAuthorizer.cs index 1d238070fb..a15cbf5016 100644 --- a/src/Umbraco.Core/Security/Authorization/FeatureAuthorizer.cs +++ b/src/Umbraco.Core/Security/Authorization/FeatureAuthorizer.cs @@ -10,6 +10,6 @@ internal sealed class FeatureAuthorizer : IFeatureAuthorizer public FeatureAuthorizer(UmbracoFeatures umbracoFeatures) => _umbracoFeatures = umbracoFeatures; /// - public async Task IsDeniedAsync(Type type) => - await Task.FromResult(_umbracoFeatures.IsControllerEnabled(type) is false); + public Task IsDeniedAsync(Type type) + => Task.FromResult(_umbracoFeatures.IsControllerEnabled(type) is false); } diff --git a/src/Umbraco.Core/Services/AuditService.cs b/src/Umbraco.Core/Services/AuditService.cs index 7373142013..855e3261cd 100644 --- a/src/Umbraco.Core/Services/AuditService.cs +++ b/src/Umbraco.Core/Services/AuditService.cs @@ -236,7 +236,7 @@ public sealed class AuditService : RepositoryService, IAuditService } } - public async Task> GetItemsByKeyAsync( + public Task> GetItemsByKeyAsync( Guid entityKey, UmbracoObjectTypes entityType, int skip, @@ -258,7 +258,7 @@ public sealed class AuditService : RepositoryService, IAuditService Attempt keyToIdAttempt = _entityService.GetId(entityKey, entityType); if (keyToIdAttempt.Success is false) { - return await Task.FromResult(new PagedModel { Items = Enumerable.Empty(), Total = 0 }); + return Task.FromResult(new PagedModel { Items = Enumerable.Empty(), Total = 0 }); } using (ScopeProvider.CreateCoreScope(autoComplete: true)) @@ -268,7 +268,7 @@ public sealed class AuditService : RepositoryService, IAuditService PaginationHelper.ConvertSkipTakeToPaging(skip, take, out var pageNumber, out var pageSize); IEnumerable auditItems = _auditRepository.GetPagedResultsByQuery(query, pageNumber, pageSize, out var totalRecords, orderDirection, auditTypeFilter, customFilter); - return new PagedModel { Items = auditItems, Total = totalRecords }; + return Task.FromResult(new PagedModel { Items = auditItems, Total = totalRecords }); } } @@ -294,7 +294,7 @@ public sealed class AuditService : RepositoryService, IAuditService if (user is null) { - return await Task.FromResult(new PagedModel()); + return new PagedModel(); } using (ScopeProvider.CreateCoreScope(autoComplete: true)) @@ -304,7 +304,7 @@ public sealed class AuditService : RepositoryService, IAuditService PaginationHelper.ConvertSkipTakeToPaging(skip, take, out var pageNumber, out var pageSize); IEnumerable auditItems = _auditRepository.GetPagedResultsByQuery(query, pageNumber, pageSize, out var totalRecords, orderDirection, auditTypeFilter, customFilter); - return await Task.FromResult(new PagedModel { Items = auditItems, Total = totalRecords }); + return new PagedModel { Items = auditItems, Total = totalRecords }; } } diff --git a/src/Umbraco.Core/Services/ContentBlueprintEditingService.cs b/src/Umbraco.Core/Services/ContentBlueprintEditingService.cs index 44fdc4baca..b33d19a4d6 100644 --- a/src/Umbraco.Core/Services/ContentBlueprintEditingService.cs +++ b/src/Umbraco.Core/Services/ContentBlueprintEditingService.cs @@ -29,10 +29,10 @@ internal sealed class ContentBlueprintEditingService : base(contentService, contentTypeService, propertyEditorCollection, dataTypeService, logger, scopeProvider, userIdKeyResolver, validationService, optionsMonitor, relationService) => _containerService = containerService; - public async Task GetAsync(Guid key) + public Task GetAsync(Guid key) { IContent? blueprint = ContentService.GetBlueprintById(key); - return await Task.FromResult(blueprint); + return Task.FromResult(blueprint); } public async Task?, ContentEditingOperationStatus>> GetPagedByContentTypeAsync(Guid contentTypeKey, int skip, int take) diff --git a/src/Umbraco.Core/Services/ContentEditingService.cs b/src/Umbraco.Core/Services/ContentEditingService.cs index 1dc54426d0..08af77d3e7 100644 --- a/src/Umbraco.Core/Services/ContentEditingService.cs +++ b/src/Umbraco.Core/Services/ContentEditingService.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Models; @@ -58,10 +58,10 @@ internal sealed class ContentEditingService _languageService = languageService; } - public async Task GetAsync(Guid key) + public Task GetAsync(Guid key) { IContent? content = ContentService.GetById(key); - return await Task.FromResult(content); + return Task.FromResult(content); } [Obsolete("Please use the validate update method that is not obsoleted. Will be removed in V16.")] diff --git a/src/Umbraco.Core/Services/ContentEditingServiceBase.cs b/src/Umbraco.Core/Services/ContentEditingServiceBase.cs index 63232f7262..3c038cd33b 100644 --- a/src/Umbraco.Core/Services/ContentEditingServiceBase.cs +++ b/src/Umbraco.Core/Services/ContentEditingServiceBase.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Models; @@ -185,7 +185,7 @@ internal abstract class ContentEditingServiceBase(status, content)); + return Attempt.FailWithStatus(status, content); } if (disabledWhenReferenced && _relationService.IsRelated(content.Id)) @@ -217,12 +217,12 @@ internal abstract class ContentEditingServiceBase(ContentEditingOperationStatus.NotInTrash, content)); + return Attempt.FailWithStatus(ContentEditingOperationStatus.NotInTrash, content); } TContentType contentType = ContentTypeService.Get(content.ContentType.Key)!; @@ -265,7 +265,7 @@ internal abstract class ContentEditingServiceBase TryGetAndValidateParentIdAsync(Guid? parentKey, TContentType contentType) + protected virtual Task<(int? ParentId, ContentEditingOperationStatus OperationStatus)> TryGetAndValidateParentIdAsync(Guid? parentKey, TContentType contentType) { TContent? parent = parentKey.HasValue ? ContentService.GetById(parentKey.Value) @@ -378,19 +378,19 @@ internal abstract class ContentEditingServiceBase((null, ContentEditingOperationStatus.ParentNotFound)); + return Task.FromResult<(int?, ContentEditingOperationStatus)>((null, ContentEditingOperationStatus.ParentNotFound)); } if (parent == null && contentType.AllowedAsRoot == false) { - return (null, ContentEditingOperationStatus.NotAllowed); + return Task.FromResult<(int?, ContentEditingOperationStatus)>((null, ContentEditingOperationStatus.NotAllowed)); } if (parent != null) { if (parent.Trashed) { - return (null, ContentEditingOperationStatus.InTrash); + return Task.FromResult<(int?, ContentEditingOperationStatus)>((null, ContentEditingOperationStatus.InTrash)); } TContentType? parentContentType = ContentTypeService.Get(parent.ContentType.Key); @@ -399,11 +399,11 @@ internal abstract class ContentEditingServiceBase((null, ContentEditingOperationStatus.NotAllowed)); } } - return (parent?.Id ?? Constants.System.Root, ContentEditingOperationStatus.Success); + return Task.FromResult<(int?, ContentEditingOperationStatus)>((parent?.Id ?? Constants.System.Root, ContentEditingOperationStatus.Success)); } private void UpdateNames(ContentEditingModelBase contentEditingModelBase, TContent content, TContentType contentType) diff --git a/src/Umbraco.Core/Services/ContentEditingServiceWithSortingBase.cs b/src/Umbraco.Core/Services/ContentEditingServiceWithSortingBase.cs index 47335566bd..530f56e19c 100644 --- a/src/Umbraco.Core/Services/ContentEditingServiceWithSortingBase.cs +++ b/src/Umbraco.Core/Services/ContentEditingServiceWithSortingBase.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Models; @@ -62,7 +62,7 @@ internal abstract class ContentEditingServiceWithSortingBase - public async Task AuthorizeAccessAsync( + public Task AuthorizeAccessAsync( IUser user, IEnumerable contentKeys, ISet permissionsToCheck) @@ -41,21 +41,21 @@ internal sealed class ContentPermissionService : IContentPermissionService if (contentItems.Length == 0) { - return ContentAuthorizationStatus.NotFound; + return Task.FromResult(ContentAuthorizationStatus.NotFound); } if (contentItems.Any(contentItem => user.HasPathAccess(contentItem, _entityService, _appCaches) == false)) { - return ContentAuthorizationStatus.UnauthorizedMissingPathAccess; + return Task.FromResult(ContentAuthorizationStatus.UnauthorizedMissingPathAccess); } - return HasPermissionAccess(user, contentItems.Select(c => c.Path), permissionsToCheck) + return Task.FromResult(HasPermissionAccess(user, contentItems.Select(c => c.Path), permissionsToCheck) ? ContentAuthorizationStatus.Success - : ContentAuthorizationStatus.UnauthorizedMissingPermissionAccess; + : ContentAuthorizationStatus.UnauthorizedMissingPermissionAccess); } /// - public async Task AuthorizeDescendantsAccessAsync( + public Task AuthorizeDescendantsAccessAsync( IUser user, Guid parentKey, ISet permissionsToCheck) @@ -69,7 +69,7 @@ internal sealed class ContentPermissionService : IContentPermissionService if (contentItem is null) { - return ContentAuthorizationStatus.NotFound; + return Task.FromResult(ContentAuthorizationStatus.NotFound); } while (page * pageSize < total) @@ -97,41 +97,41 @@ internal sealed class ContentPermissionService : IContentPermissionService } } - return denied.Count == 0 + return Task.FromResult(denied.Count == 0 ? ContentAuthorizationStatus.Success - : ContentAuthorizationStatus.UnauthorizedMissingDescendantAccess; + : ContentAuthorizationStatus.UnauthorizedMissingDescendantAccess); } /// - public async Task AuthorizeRootAccessAsync(IUser user, ISet permissionsToCheck) + public Task AuthorizeRootAccessAsync(IUser user, ISet permissionsToCheck) { var hasAccess = user.HasContentRootAccess(_entityService, _appCaches); if (hasAccess == false) { - return ContentAuthorizationStatus.UnauthorizedMissingRootAccess; + return Task.FromResult(ContentAuthorizationStatus.UnauthorizedMissingRootAccess); } // In this case, we have to use the Root id as path (i.e. -1) since we don't have a content item - return HasPermissionAccess(user, new[] { Constants.System.RootString }, permissionsToCheck) + return Task.FromResult(HasPermissionAccess(user, new[] { Constants.System.RootString }, permissionsToCheck) ? ContentAuthorizationStatus.Success - : ContentAuthorizationStatus.UnauthorizedMissingPermissionAccess; + : ContentAuthorizationStatus.UnauthorizedMissingPermissionAccess); } /// - public async Task AuthorizeBinAccessAsync(IUser user, ISet permissionsToCheck) + public Task AuthorizeBinAccessAsync(IUser user, ISet permissionsToCheck) { var hasAccess = user.HasContentBinAccess(_entityService, _appCaches); if (hasAccess == false) { - return ContentAuthorizationStatus.UnauthorizedMissingBinAccess; + return Task.FromResult(ContentAuthorizationStatus.UnauthorizedMissingBinAccess); } // In this case, we have to use the Recycle Bin id as path (i.e. -20) since we don't have a content item - return HasPermissionAccess(user, new[] { Constants.System.RecycleBinContentString }, permissionsToCheck) + return Task.FromResult(HasPermissionAccess(user, new[] { Constants.System.RecycleBinContentString }, permissionsToCheck) ? ContentAuthorizationStatus.Success - : ContentAuthorizationStatus.UnauthorizedMissingPermissionAccess; + : ContentAuthorizationStatus.UnauthorizedMissingPermissionAccess); } /// diff --git a/src/Umbraco.Core/Services/ContentVersionService.cs b/src/Umbraco.Core/Services/ContentVersionService.cs index a0b64a764a..0451409a4b 100644 --- a/src/Umbraco.Core/Services/ContentVersionService.cs +++ b/src/Umbraco.Core/Services/ContentVersionService.cs @@ -112,46 +112,45 @@ internal class ContentVersionService : IContentVersionService public void SetPreventCleanup(int versionId, bool preventCleanup, int userId = Constants.Security.SuperUserId) => HandleSetPreventCleanup(versionId, preventCleanup, userId); - public async Task?, ContentVersionOperationStatus>> GetPagedContentVersionsAsync(Guid contentId, string? culture, int skip, int take) + public Task?, ContentVersionOperationStatus>> GetPagedContentVersionsAsync(Guid contentId, string? culture, int skip, int take) { - IEntitySlim? document = await Task.FromResult(_entityService.Get(contentId, UmbracoObjectTypes.Document)); + IEntitySlim? document = _entityService.Get(contentId, UmbracoObjectTypes.Document); if (document is null) { - return Attempt?, ContentVersionOperationStatus>.Fail(ContentVersionOperationStatus.ContentNotFound); + return Task.FromResult(Attempt?, ContentVersionOperationStatus>.Fail(ContentVersionOperationStatus.ContentNotFound)); } if (PaginationConverter.ConvertSkipTakeToPaging(skip, take, out var pageNumber, out var pageSize) == false) { - return Attempt?, ContentVersionOperationStatus>.Fail(ContentVersionOperationStatus.InvalidSkipTake); + return Task.FromResult(Attempt?, ContentVersionOperationStatus>.Fail(ContentVersionOperationStatus.InvalidSkipTake)); } IEnumerable? versions = - await Task.FromResult(HandleGetPagedContentVersions( + HandleGetPagedContentVersions( document.Id, pageNumber, pageSize, out var total, - culture)); + culture); if (versions is null) { - return Attempt?, ContentVersionOperationStatus>.Fail(ContentVersionOperationStatus.NotFound); + return Task.FromResult(Attempt?, ContentVersionOperationStatus>.Fail(ContentVersionOperationStatus.NotFound)); } - return Attempt?, ContentVersionOperationStatus>.Succeed( - ContentVersionOperationStatus.Success, new PagedModel(total, versions)); + return Task.FromResult(Attempt?, ContentVersionOperationStatus>.Succeed( + ContentVersionOperationStatus.Success, new PagedModel(total, versions))); } - public async Task> GetAsync(Guid versionId) + public Task> GetAsync(Guid versionId) { - IContent? version = await Task.FromResult(_contentService.GetVersion(versionId.ToInt())); + IContent? version = _contentService.GetVersion(versionId.ToInt()); if (version is null) { - return Attempt.Fail(ContentVersionOperationStatus - .NotFound); + return Task.FromResult(Attempt.Fail(ContentVersionOperationStatus.NotFound)); } - return Attempt.Succeed(ContentVersionOperationStatus.Success, version); + return Task.FromResult(Attempt.Succeed(ContentVersionOperationStatus.Success, version)); } public async Task> SetPreventCleanupAsync(Guid versionId, bool preventCleanup, Guid userKey) diff --git a/src/Umbraco.Core/Services/DataTypeService.cs b/src/Umbraco.Core/Services/DataTypeService.cs index f22948968a..60e28240a0 100644 --- a/src/Umbraco.Core/Services/DataTypeService.cs +++ b/src/Umbraco.Core/Services/DataTypeService.cs @@ -690,17 +690,17 @@ namespace Umbraco.Cms.Core.Services.Implement } /// - public async Task>, DataTypeOperationStatus>> GetReferencesAsync(Guid id) + public Task>, DataTypeOperationStatus>> GetReferencesAsync(Guid id) { using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete:true); IDataType? dataType = GetDataTypeFromRepository(id); if (dataType == null) { - return Attempt.FailWithStatus>, DataTypeOperationStatus>(DataTypeOperationStatus.NotFound, new Dictionary>()); + return Task.FromResult(Attempt.FailWithStatus>, DataTypeOperationStatus>(DataTypeOperationStatus.NotFound, new Dictionary>())); } IReadOnlyDictionary> usages = _dataTypeRepository.FindUsages(dataType.Id); - return await Task.FromResult(Attempt.SucceedWithStatus(DataTypeOperationStatus.Success, usages)); + return Task.FromResult(Attempt.SucceedWithStatus(DataTypeOperationStatus.Success, usages)); } public IReadOnlyDictionary> GetListViewReferences(int id) diff --git a/src/Umbraco.Core/Services/DictionaryItemService.cs b/src/Umbraco.Core/Services/DictionaryItemService.cs index 38e37afedb..467f4ea26a 100644 --- a/src/Umbraco.Core/Services/DictionaryItemService.cs +++ b/src/Umbraco.Core/Services/DictionaryItemService.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Notifications; @@ -33,42 +33,42 @@ internal sealed class DictionaryItemService : RepositoryService, IDictionaryItem } /// - public async Task GetAsync(Guid id) + public Task GetAsync(Guid id) { using (ScopeProvider.CreateCoreScope(autoComplete: true)) { IDictionaryItem? item = _dictionaryRepository.Get(id); - return await Task.FromResult(item); + return Task.FromResult(item); } } /// - public async Task GetAsync(string key) + public Task GetAsync(string key) { using (ScopeProvider.CreateCoreScope(autoComplete: true)) { IDictionaryItem? item = _dictionaryRepository.Get(key); - return await Task.FromResult(item); + return Task.FromResult(item); } } /// - public async Task> GetManyAsync(params Guid[] ids) + public Task> GetManyAsync(params Guid[] ids) { using (ScopeProvider.CreateCoreScope(autoComplete: true)) { IEnumerable items = _dictionaryRepository.GetMany(ids).ToArray(); - return await Task.FromResult(items); + return Task.FromResult(items); } } /// - public async Task> GetManyAsync(params string[] keys) + public Task> GetManyAsync(params string[] keys) { using (ScopeProvider.CreateCoreScope(autoComplete: true)) { IEnumerable items = _dictionaryRepository.GetManyByKeys(keys).ToArray(); - return await Task.FromResult(items); + return Task.FromResult(items); } } @@ -106,12 +106,12 @@ internal sealed class DictionaryItemService : RepositoryService, IDictionaryItem => await CountByQueryAsync(Query().Where(x => x.ParentId == parentId)); /// - public async Task> GetDescendantsAsync(Guid? parentId, string? filter = null) + public Task> GetDescendantsAsync(Guid? parentId, string? filter = null) { using (ScopeProvider.CreateCoreScope(autoComplete: true)) { IDictionaryItem[] items = _dictionaryRepository.GetDictionaryItemDescendants(parentId, filter).ToArray(); - return await Task.FromResult(items); + return Task.FromResult>(items); } } @@ -123,12 +123,12 @@ internal sealed class DictionaryItemService : RepositoryService, IDictionaryItem => await CountByQueryAsync(Query().Where(x => x.ParentId == null)); /// - public async Task ExistsAsync(string key) + public Task ExistsAsync(string key) { using (ScopeProvider.CreateCoreScope(autoComplete: true)) { IDictionaryItem? item = _dictionaryRepository.Get(key); - return await Task.FromResult(item != null); + return Task.FromResult(item != null); } } @@ -203,7 +203,7 @@ internal sealed class DictionaryItemService : RepositoryService, IDictionaryItem Audit(AuditType.Delete, "Delete DictionaryItem", currentUserId, dictionaryItem.Id, nameof(DictionaryItem)); scope.Complete(); - return await Task.FromResult(Attempt.SucceedWithStatus(DictionaryItemOperationStatus.Success, dictionaryItem)); + return Attempt.SucceedWithStatus(DictionaryItemOperationStatus.Success, dictionaryItem); } } @@ -265,16 +265,16 @@ internal sealed class DictionaryItemService : RepositoryService, IDictionaryItem Audit(AuditType.Move, "Move DictionaryItem", currentUserId, dictionaryItem.Id, nameof(DictionaryItem)); scope.Complete(); - return await Task.FromResult(Attempt.SucceedWithStatus(DictionaryItemOperationStatus.Success, dictionaryItem)); + return Attempt.SucceedWithStatus(DictionaryItemOperationStatus.Success, dictionaryItem); } } - private async Task CountByQueryAsync(IQuery query) + private Task CountByQueryAsync(IQuery query) { using (ScopeProvider.CreateCoreScope(autoComplete: true)) { var items = _dictionaryRepository.Count(query); - return await Task.FromResult(items); + return Task.FromResult(items); } } @@ -326,16 +326,16 @@ internal sealed class DictionaryItemService : RepositoryService, IDictionaryItem Audit(auditType, auditMessage, currentUserId, dictionaryItem.Id, nameof(DictionaryItem)); scope.Complete(); - return await Task.FromResult(Attempt.SucceedWithStatus(DictionaryItemOperationStatus.Success, dictionaryItem)); + return Attempt.SucceedWithStatus(DictionaryItemOperationStatus.Success, dictionaryItem); } } - private async Task> GetByQueryAsync(IQuery query) + private Task> GetByQueryAsync(IQuery query) { using (ScopeProvider.CreateCoreScope(autoComplete: true)) { IDictionaryItem[] items = _dictionaryRepository.Get(query).ToArray(); - return await Task.FromResult(items); + return Task.FromResult>(items); } } diff --git a/src/Umbraco.Core/Services/DomainService.cs b/src/Umbraco.Core/Services/DomainService.cs index 58f776a45a..16eb225aa5 100644 --- a/src/Umbraco.Core/Services/DomainService.cs +++ b/src/Umbraco.Core/Services/DomainService.cs @@ -159,23 +159,23 @@ public class DomainService : RepositoryService, IDomainService } /// - public async Task> GetAssignedDomainsAsync(Guid contentKey, bool includeWildcards) + public Task> GetAssignedDomainsAsync(Guid contentKey, bool includeWildcards) { IContent? content = _contentService.GetById(contentKey); if (content == null) { - return await Task.FromResult(Enumerable.Empty()); + return Task.FromResult(Enumerable.Empty()); } using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true); - return _domainRepository.GetAssignedDomains(content.Id, includeWildcards); + return Task.FromResult(_domainRepository.GetAssignedDomains(content.Id, includeWildcards)); } /// - public async Task> GetAllAsync(bool includeWildcards) + public Task> GetAllAsync(bool includeWildcards) { using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true); - return await Task.FromResult(_domainRepository.GetAll(includeWildcards)); + return Task.FromResult(_domainRepository.GetAll(includeWildcards)); } /// diff --git a/src/Umbraco.Core/Services/EntityTypeContainerService.cs b/src/Umbraco.Core/Services/EntityTypeContainerService.cs index 962d853ce8..4a403e0c1f 100644 --- a/src/Umbraco.Core/Services/EntityTypeContainerService.cs +++ b/src/Umbraco.Core/Services/EntityTypeContainerService.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.Entities; @@ -43,11 +43,11 @@ internal abstract class EntityTypeContainerService - public async Task GetAsync(Guid id) + public Task GetAsync(Guid id) { using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true); ReadLock(scope); - return await Task.FromResult(_entityContainerRepository.Get(id)); + return Task.FromResult(_entityContainerRepository.Get(id)); } @@ -67,12 +67,12 @@ internal abstract class EntityTypeContainerService - public async Task GetParentAsync(EntityContainer container) - => await Task.FromResult(GetParent(container)); + public Task GetParentAsync(EntityContainer container) + => Task.FromResult(GetParent(container)); /// - public async Task GetParentAsync(TTreeEntity entity) - => await Task.FromResult(GetParent(entity)); + public Task GetParentAsync(TTreeEntity entity) + => Task.FromResult(GetParent(entity)); /// public async Task> CreateAsync(Guid? key, string name, Guid? parentKey, Guid userKey) diff --git a/src/Umbraco.Core/Services/FileSystem/FolderServiceOperationBase.cs b/src/Umbraco.Core/Services/FileSystem/FolderServiceOperationBase.cs index 68523d1443..95766a9a6f 100644 --- a/src/Umbraco.Core/Services/FileSystem/FolderServiceOperationBase.cs +++ b/src/Umbraco.Core/Services/FileSystem/FolderServiceOperationBase.cs @@ -1,4 +1,4 @@ -using Umbraco.Cms.Core.Models.FileSystem; +using Umbraco.Cms.Core.Models.FileSystem; using Umbraco.Cms.Core.Persistence.Repositories; using Umbraco.Cms.Core.Scoping; using Umbraco.Extensions; @@ -32,7 +32,7 @@ internal abstract class FolderServiceOperationBase> HandleCreateAsync(string name, string? parentPath) + protected Task> HandleCreateAsync(string name, string? parentPath) { using ICoreScope scope = _scopeProvider.CreateCoreScope(); @@ -40,7 +40,7 @@ internal abstract class FolderServiceOperationBase(validateResult, null); + return Task.FromResult(Attempt.FailWithStatus(validateResult, null)); } _repository.AddFolder(path); @@ -53,34 +53,34 @@ internal abstract class FolderServiceOperationBase(Success, result)); + return Task.FromResult(Attempt.SucceedWithStatus(Success, result)); } - protected async Task HandleDeleteAsync(string path) + protected Task HandleDeleteAsync(string path) { using ICoreScope scope = _scopeProvider.CreateCoreScope(); TOperationStatus validateResult = ValidateDelete(path); if (Success.Equals(validateResult) is false) { - return await Task.FromResult(validateResult); + return Task.FromResult(validateResult); } _repository.DeleteFolder(path); scope.Complete(); - return Success; + return Task.FromResult(Success); } - protected async Task HandleGetAsync(string path) + protected Task HandleGetAsync(string path) { using ICoreScope scope = _scopeProvider.CreateCoreScope(); // There's not much we can actually get when it's a folder, so it more a matter of ensuring the folder exists and returning a model. if (_repository.FolderExists(path) is false) { - return await Task.FromResult(null); + return Task.FromResult(null); } var result = new TFolderModel @@ -91,7 +91,8 @@ internal abstract class FolderServiceOperationBase(result); } private TOperationStatus ValidateCreate(string name, string path, string? parentPath) diff --git a/src/Umbraco.Core/Services/LanguageService.cs b/src/Umbraco.Core/Services/LanguageService.cs index 343a762367..01a249dbd0 100644 --- a/src/Umbraco.Core/Services/LanguageService.cs +++ b/src/Umbraco.Core/Services/LanguageService.cs @@ -1,4 +1,4 @@ -using System.Globalization; +using System.Globalization; using Microsoft.Extensions.Logging; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; @@ -34,46 +34,46 @@ internal sealed class LanguageService : RepositoryService, ILanguageService } /// - public async Task GetAsync(string isoCode) + public Task GetAsync(string isoCode) { using (ScopeProvider.CreateCoreScope(autoComplete: true)) { - return await Task.FromResult(_languageRepository.GetByIsoCode(isoCode)); + return Task.FromResult(_languageRepository.GetByIsoCode(isoCode)); } } /// - public async Task GetDefaultLanguageAsync() + public Task GetDefaultLanguageAsync() { using (ScopeProvider.CreateCoreScope(autoComplete: true)) { - return await Task.FromResult(_languageRepository.GetByIsoCode(_languageRepository.GetDefaultIsoCode())); + return Task.FromResult(_languageRepository.GetByIsoCode(_languageRepository.GetDefaultIsoCode())); } } /// - public async Task GetDefaultIsoCodeAsync() + public Task GetDefaultIsoCodeAsync() { using (ScopeProvider.CreateCoreScope(autoComplete: true)) { - return await Task.FromResult(_languageRepository.GetDefaultIsoCode()); + return Task.FromResult(_languageRepository.GetDefaultIsoCode()); } } /// - public async Task> GetAllAsync() + public Task> GetAllAsync() { using (ScopeProvider.CreateCoreScope(autoComplete: true)) { - return await Task.FromResult(_languageRepository.GetMany()); + return Task.FromResult(_languageRepository.GetMany()); } } - public async Task GetIsoCodesByIdsAsync(ICollection ids) + public Task GetIsoCodesByIdsAsync(ICollection ids) { using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete:true); - return await Task.FromResult(_languageRepository.GetIsoCodesByIds(ids, throwOnNotFound: true)); + return Task.FromResult(_languageRepository.GetIsoCodesByIds(ids, throwOnNotFound: true)); } public async Task> GetMultipleAsync(IEnumerable isoCodes) => (await GetAllAsync()).Where(x => isoCodes.Contains(x.IsoCode)); @@ -163,7 +163,7 @@ internal sealed class LanguageService : RepositoryService, ILanguageService var currentUserId = await _userIdKeyResolver.GetAsync(userKey); Audit(AuditType.Delete, "Delete Language", currentUserId, language.Id, UmbracoObjectTypes.Language.GetName()); scope.Complete(); - return await Task.FromResult(Attempt.SucceedWithStatus(LanguageOperationStatus.Success, language)); + return Attempt.SucceedWithStatus(LanguageOperationStatus.Success, language); } } @@ -217,7 +217,7 @@ internal sealed class LanguageService : RepositoryService, ILanguageService Audit(auditType, auditMessage, currentUserId, language.Id, UmbracoObjectTypes.Language.GetName()); scope.Complete(); - return await Task.FromResult(Attempt.SucceedWithStatus(LanguageOperationStatus.Success, language)); + return Attempt.SucceedWithStatus(LanguageOperationStatus.Success, language); } } diff --git a/src/Umbraco.Core/Services/LogViewerService.cs b/src/Umbraco.Core/Services/LogViewerService.cs index aa1b1478ad..0780838416 100644 --- a/src/Umbraco.Core/Services/LogViewerService.cs +++ b/src/Umbraco.Core/Services/LogViewerService.cs @@ -31,7 +31,7 @@ public class LogViewerService : ILogViewerService } /// - public async Task?, LogViewerOperationStatus>> GetPagedLogsAsync( + public Task?, LogViewerOperationStatus>> GetPagedLogsAsync( DateTimeOffset? startDate, DateTimeOffset? endDate, int skip, @@ -45,33 +45,33 @@ public class LogViewerService : ILogViewerService // We will need to stop the request if trying to do this on a 1GB file if (CanViewLogs(logTimePeriod) == false) { - return Attempt.FailWithStatus?, LogViewerOperationStatus>( + return Task.FromResult(Attempt.FailWithStatus?, LogViewerOperationStatus>( LogViewerOperationStatus.CancelledByLogsSizeValidation, - null); + null)); } PagedModel filteredLogs = GetFilteredLogs(logTimePeriod, filterExpression, logLevels, orderDirection, skip, take); - return Attempt.SucceedWithStatus?, LogViewerOperationStatus>( + return Task.FromResult(Attempt.SucceedWithStatus?, LogViewerOperationStatus>( LogViewerOperationStatus.Success, - filteredLogs); + filteredLogs)); } /// - public async Task> GetSavedLogQueriesAsync(int skip, int take) + public Task> GetSavedLogQueriesAsync(int skip, int take) { using ICoreScope scope = _provider.CreateCoreScope(autoComplete: true); ILogViewerQuery[] savedLogQueries = _logViewerQueryRepository.GetMany().ToArray(); var pagedModel = new PagedModel(savedLogQueries.Length, savedLogQueries.Skip(skip).Take(take)); - return await Task.FromResult(pagedModel); + return Task.FromResult(pagedModel); } /// - public async Task GetSavedLogQueryByNameAsync(string name) + public Task GetSavedLogQueryByNameAsync(string name) { using ICoreScope scope = _provider.CreateCoreScope(autoComplete: true); - return await Task.FromResult(_logViewerQueryRepository.GetByName(name)); + return Task.FromResult(_logViewerQueryRepository.GetByName(name)); } /// @@ -109,57 +109,57 @@ public class LogViewerService : ILogViewerService } /// - public async Task> CanViewLogsAsync(DateTimeOffset? startDate, DateTimeOffset? endDate) + public Task> CanViewLogsAsync(DateTimeOffset? startDate, DateTimeOffset? endDate) { LogTimePeriod logTimePeriod = GetTimePeriod(startDate, endDate); bool isAllowed = CanViewLogs(logTimePeriod); if (isAllowed == false) { - return Attempt.FailWithStatus(LogViewerOperationStatus.CancelledByLogsSizeValidation, isAllowed); + return Task.FromResult(Attempt.FailWithStatus(LogViewerOperationStatus.CancelledByLogsSizeValidation, isAllowed)); } - return Attempt.SucceedWithStatus(LogViewerOperationStatus.Success, isAllowed); + return Task.FromResult(Attempt.SucceedWithStatus(LogViewerOperationStatus.Success, isAllowed)); } /// - public async Task> GetLogLevelCountsAsync(DateTimeOffset? startDate, DateTimeOffset? endDate) + public Task> GetLogLevelCountsAsync(DateTimeOffset? startDate, DateTimeOffset? endDate) { LogTimePeriod logTimePeriod = GetTimePeriod(startDate, endDate); // We will need to stop the request if trying to do this on a 1GB file if (CanViewLogs(logTimePeriod) == false) { - return Attempt.FailWithStatus( + return Task.FromResult(Attempt.FailWithStatus( LogViewerOperationStatus.CancelledByLogsSizeValidation, - null); + null)); } LogLevelCounts counter = _logViewerRepository.GetLogCount(logTimePeriod); - return Attempt.SucceedWithStatus( + return Task.FromResult(Attempt.SucceedWithStatus( LogViewerOperationStatus.Success, - counter); + counter)); } /// - public async Task, LogViewerOperationStatus>> GetMessageTemplatesAsync(DateTimeOffset? startDate, DateTimeOffset? endDate, int skip, int take) + public Task, LogViewerOperationStatus>> GetMessageTemplatesAsync(DateTimeOffset? startDate, DateTimeOffset? endDate, int skip, int take) { LogTimePeriod logTimePeriod = GetTimePeriod(startDate, endDate); // We will need to stop the request if trying to do this on a 1GB file if (CanViewLogs(logTimePeriod) == false) { - return Attempt.FailWithStatus, LogViewerOperationStatus>( + return Task.FromResult(Attempt.FailWithStatus, LogViewerOperationStatus>( LogViewerOperationStatus.CancelledByLogsSizeValidation, - null!); + null!)); } LogTemplate[] messageTemplates = _logViewerRepository.GetMessageTemplates(logTimePeriod); - return Attempt.SucceedWithStatus( + return Task.FromResult(Attempt.SucceedWithStatus( LogViewerOperationStatus.Success, - new PagedModel(messageTemplates.Length, messageTemplates.Skip(skip).Take(take))); + new PagedModel(messageTemplates.Length, messageTemplates.Skip(skip).Take(take)))); } /// diff --git a/src/Umbraco.Core/Services/MediaEditingService.cs b/src/Umbraco.Core/Services/MediaEditingService.cs index 2a27c048a6..fda3b04cf6 100644 --- a/src/Umbraco.Core/Services/MediaEditingService.cs +++ b/src/Umbraco.Core/Services/MediaEditingService.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Models; @@ -40,10 +40,10 @@ internal sealed class MediaEditingService relationService) => _logger = logger; - public async Task GetAsync(Guid key) + public Task GetAsync(Guid key) { IMedia? media = ContentService.GetById(key); - return await Task.FromResult(media); + return Task.FromResult(media); } public async Task> ValidateUpdateAsync(Guid key, MediaUpdateModel updateModel) diff --git a/src/Umbraco.Core/Services/MediaPermissionService.cs b/src/Umbraco.Core/Services/MediaPermissionService.cs index 54c2a4941d..28276c0f56 100644 --- a/src/Umbraco.Core/Services/MediaPermissionService.cs +++ b/src/Umbraco.Core/Services/MediaPermissionService.cs @@ -23,34 +23,34 @@ internal sealed class MediaPermissionService : IMediaPermissionService } /// - public async Task AuthorizeAccessAsync(IUser user, IEnumerable mediaKeys) + public Task AuthorizeAccessAsync(IUser user, IEnumerable mediaKeys) { foreach (Guid mediaKey in mediaKeys) { IMedia? media = _mediaService.GetById(mediaKey); if (media is null) { - return MediaAuthorizationStatus.NotFound; + return Task.FromResult(MediaAuthorizationStatus.NotFound); } if (user.HasPathAccess(media, _entityService, _appCaches) == false) { - return MediaAuthorizationStatus.UnauthorizedMissingPathAccess; + return Task.FromResult(MediaAuthorizationStatus.UnauthorizedMissingPathAccess); } } - return MediaAuthorizationStatus.Success; + return Task.FromResult(MediaAuthorizationStatus.Success); } /// - public async Task AuthorizeRootAccessAsync(IUser user) - => user.HasMediaRootAccess(_entityService, _appCaches) + public Task AuthorizeRootAccessAsync(IUser user) + => Task.FromResult(user.HasMediaRootAccess(_entityService, _appCaches) ? MediaAuthorizationStatus.Success - : MediaAuthorizationStatus.UnauthorizedMissingRootAccess; + : MediaAuthorizationStatus.UnauthorizedMissingRootAccess); /// - public async Task AuthorizeBinAccessAsync(IUser user) - => user.HasMediaBinAccess(_entityService, _appCaches) + public Task AuthorizeBinAccessAsync(IUser user) + => Task.FromResult(user.HasMediaBinAccess(_entityService, _appCaches) ? MediaAuthorizationStatus.Success - : MediaAuthorizationStatus.UnauthorizedMissingBinAccess; + : MediaAuthorizationStatus.UnauthorizedMissingBinAccess); } diff --git a/src/Umbraco.Core/Services/NoopSegmentService.cs b/src/Umbraco.Core/Services/NoopSegmentService.cs index 90a3076db4..5b1f65029b 100644 --- a/src/Umbraco.Core/Services/NoopSegmentService.cs +++ b/src/Umbraco.Core/Services/NoopSegmentService.cs @@ -5,9 +5,9 @@ namespace Umbraco.Cms.Core.Services; public class NoopSegmentService : ISegmentService { - public async Task?, SegmentOperationStatus>> GetPagedSegmentsAsync(int skip = 0, int take = 100) + public Task?, SegmentOperationStatus>> GetPagedSegmentsAsync(int skip = 0, int take = 100) { - return await Task.FromResult(Attempt.SucceedWithStatus?, SegmentOperationStatus>( + return Task.FromResult(Attempt.SucceedWithStatus?, SegmentOperationStatus>( SegmentOperationStatus.Success, new PagedModel { Total = 0, Items = Enumerable.Empty() })); } diff --git a/src/Umbraco.Core/Services/PartialViewService.cs b/src/Umbraco.Core/Services/PartialViewService.cs index d4bfb5dc6d..9543f45f28 100644 --- a/src/Umbraco.Core/Services/PartialViewService.cs +++ b/src/Umbraco.Core/Services/PartialViewService.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Notifications; @@ -62,7 +62,7 @@ public class PartialViewService : FileServiceOperationBase new PartialView(path) { Content = content }; /// - public async Task> GetSnippetsAsync(int skip, int take) + public Task> GetSnippetsAsync(int skip, int take) { using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true); var result = new PagedModel( @@ -72,15 +72,15 @@ public class PartialViewService : FileServiceOperationBase new PartialViewSnippetSlim(snippet.Id, snippet.Name)) .ToArray()); - return await Task.FromResult(result); + return Task.FromResult(result); } /// - public async Task GetSnippetAsync(string id) + public Task GetSnippetAsync(string id) { using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true); PartialViewSnippet? snippet = _snippetCollection.FirstOrDefault(s => s.Id == id); - return await Task.FromResult(snippet); + return Task.FromResult(snippet); } /// diff --git a/src/Umbraco.Core/Services/RelationService.cs b/src/Umbraco.Core/Services/RelationService.cs index 6c54ee6e54..f912da7283 100644 --- a/src/Umbraco.Core/Services/RelationService.cs +++ b/src/Umbraco.Core/Services/RelationService.cs @@ -126,22 +126,22 @@ public class RelationService : RepositoryService, IRelationService /// Gets the Relation types in a paged manner. /// Currently implements the paging in memory on the name property because the underlying repository does not support paging yet /// - public async Task> GetPagedRelationTypesAsync(int skip, int take, params int[] ids) + public Task> GetPagedRelationTypesAsync(int skip, int take, params int[] ids) { using ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true); if (take == 0) { - return new PagedModel(CountRelationTypes(), Enumerable.Empty()); + return Task.FromResult(new PagedModel(CountRelationTypes(), Enumerable.Empty())); } - IRelationType[] items = await Task.FromResult(_relationTypeRepository.GetMany(ids).ToArray()); + IRelationType[] items = _relationTypeRepository.GetMany(ids).ToArray(); - return new PagedModel( + return Task.FromResult(new PagedModel( items.Length, items.OrderBy(relationType => relationType.Name) .Skip(skip) - .Take(take)); + .Take(take))); } public int CountRelationTypes() @@ -308,21 +308,21 @@ public class RelationService : RepositoryService, IRelationService } } - public async Task, RelationOperationStatus>> GetPagedByRelationTypeKeyAsync(Guid key, int skip, int take, Ordering? ordering = null) + public Task, RelationOperationStatus>> GetPagedByRelationTypeKeyAsync(Guid key, int skip, int take, Ordering? ordering = null) { using (ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true)) { IRelationType? relationType = _relationTypeRepository.Get(key); if (relationType is null) { - return await Task.FromResult(Attempt.FailWithStatus, RelationOperationStatus>(RelationOperationStatus.RelationTypeNotFound, null!)); + return Task.FromResult(Attempt.FailWithStatus, RelationOperationStatus>(RelationOperationStatus.RelationTypeNotFound, null!)); } PaginationHelper.ConvertSkipTakeToPaging(skip, take, out var pageNumber, out var pageSize); IQuery query = Query().Where(x => x.RelationTypeId == relationType.Id); IEnumerable relations = _relationRepository.GetPagedRelationsByQuery(query, pageNumber, pageSize, out var totalRecords, ordering); - return await Task.FromResult(Attempt.SucceedWithStatus(RelationOperationStatus.Success, new PagedModel(totalRecords, relations))); + return Task.FromResult(Attempt.SucceedWithStatus(RelationOperationStatus.Success, new PagedModel(totalRecords, relations))); } } @@ -663,7 +663,7 @@ public class RelationService : RepositoryService, IRelationService new RelationTypeSavedNotification(relationType, eventMessages).WithStateFrom(savingNotification)); } - return await Task.FromResult(Attempt.SucceedWithStatus(RelationTypeOperationStatus.Success, relationType)); + return Attempt.SucceedWithStatus(RelationTypeOperationStatus.Success, relationType); } /// @@ -729,7 +729,7 @@ public class RelationService : RepositoryService, IRelationService Audit(AuditType.Delete, currentUser, relationType.Id, "Deleted relation type"); scope.Notifications.Publish(new RelationTypeDeletedNotification(relationType, eventMessages).WithStateFrom(deletingNotification)); scope.Complete(); - return await Task.FromResult(Attempt.SucceedWithStatus(RelationTypeOperationStatus.Success, relationType)); + return Attempt.SucceedWithStatus(RelationTypeOperationStatus.Success, relationType); } } diff --git a/src/Umbraco.Core/Services/TemplateService.cs b/src/Umbraco.Core/Services/TemplateService.cs index a3531f02e7..80391c28b5 100644 --- a/src/Umbraco.Core/Services/TemplateService.cs +++ b/src/Umbraco.Core/Services/TemplateService.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.IO; using Umbraco.Cms.Core.Models; @@ -86,7 +86,7 @@ public class TemplateService : RepositoryService, ITemplateService scope.Complete(); } - return await Task.FromResult(Attempt.SucceedWithStatus(TemplateOperationStatus.Success, template)); + return Attempt.SucceedWithStatus(TemplateOperationStatus.Success, template); } /// @@ -126,11 +126,11 @@ public class TemplateService : RepositoryService, ITemplateService } /// - public async Task> GetAllAsync(params string[] aliases) + public Task> GetAllAsync(params string[] aliases) { using (ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true)) { - return await Task.FromResult(_templateRepository.GetAll(aliases).OrderBy(x => x.Name)); + return Task.FromResult>(_templateRepository.GetAll(aliases).OrderBy(x => x.Name)); } } @@ -151,48 +151,48 @@ public class TemplateService : RepositoryService, ITemplateService } /// - public async Task> GetChildrenAsync(int masterTemplateId) + public Task> GetChildrenAsync(int masterTemplateId) { using (ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true)) { - return await Task.FromResult(_templateRepository.GetChildren(masterTemplateId).OrderBy(x => x.Name)); + return Task.FromResult>(_templateRepository.GetChildren(masterTemplateId).OrderBy(x => x.Name)); } } /// - public async Task GetAsync(string? alias) + public Task GetAsync(string? alias) { using (ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true)) { - return await Task.FromResult(_templateRepository.Get(alias)); + return Task.FromResult(_templateRepository.Get(alias)); } } /// - public async Task GetAsync(int id) + public Task GetAsync(int id) { using (ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true)) { - return await Task.FromResult(_templateRepository.Get(id)); + return Task.FromResult(_templateRepository.Get(id)); } } /// - public async Task GetAsync(Guid id) + public Task GetAsync(Guid id) { using (ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true)) { IQuery? query = Query().Where(x => x.Key == id); - return await Task.FromResult(_templateRepository.Get(query)?.SingleOrDefault()); + return Task.FromResult(_templateRepository.Get(query)?.SingleOrDefault()); } } /// - public async Task> GetDescendantsAsync(int masterTemplateId) + public Task> GetDescendantsAsync(int masterTemplateId) { using (ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true)) { - return await Task.FromResult(_templateRepository.GetDescendants(masterTemplateId)); + return Task.FromResult(_templateRepository.GetDescendants(masterTemplateId)); } } @@ -286,31 +286,32 @@ public class TemplateService : RepositoryService, ITemplateService => await DeleteAsync(async () => await GetAsync(key), userKey); /// - public async Task GetFileContentStreamAsync(string filepath) + public Task GetFileContentStreamAsync(string filepath) { using (ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true)) { - return await Task.FromResult(_templateRepository.GetFileContentStream(filepath)); + return Task.FromResult(_templateRepository.GetFileContentStream(filepath)); } } /// - public async Task SetFileContentAsync(string filepath, Stream content) + public Task SetFileContentAsync(string filepath, Stream content) { using (ICoreScope scope = ScopeProvider.CreateCoreScope()) { _templateRepository.SetFileContent(filepath, content); scope.Complete(); - await Task.CompletedTask; } + + return Task.CompletedTask; } /// - public async Task GetFileSizeAsync(string filepath) + public Task GetFileSizeAsync(string filepath) { using (ICoreScope scope = ScopeProvider.CreateCoreScope(autoComplete: true)) { - return await Task.FromResult(_templateRepository.GetFileSize(filepath)); + return Task.FromResult(_templateRepository.GetFileSize(filepath)); } } diff --git a/src/Umbraco.Core/Services/TrackedReferencesService.cs b/src/Umbraco.Core/Services/TrackedReferencesService.cs index 5d5d76f7f0..d8103e6982 100644 --- a/src/Umbraco.Core/Services/TrackedReferencesService.cs +++ b/src/Umbraco.Core/Services/TrackedReferencesService.cs @@ -83,13 +83,13 @@ public class TrackedReferencesService : ITrackedReferencesService return pagedModel; } - public async Task> GetPagedRelationsForItemAsync(Guid key, long skip, long take, bool filterMustBeIsDependency) + public Task> GetPagedRelationsForItemAsync(Guid key, long skip, long take, bool filterMustBeIsDependency) { using ICoreScope scope = _scopeProvider.CreateCoreScope(autoComplete: true); IEnumerable items = _trackedReferencesRepository.GetPagedRelationsForItem(key, skip, take, filterMustBeIsDependency, out var totalItems); var pagedModel = new PagedModel(totalItems, items); - return await Task.FromResult(pagedModel); + return Task.FromResult(pagedModel); } [Obsolete("Use overload that takes key instead of id. This will be removed in Umbraco 15.")] @@ -108,7 +108,7 @@ public class TrackedReferencesService : ITrackedReferencesService return pagedModel; } - public async Task> GetPagedDescendantsInReferencesAsync(Guid parentKey, long skip, long take, bool filterMustBeIsDependency) + public Task> GetPagedDescendantsInReferencesAsync(Guid parentKey, long skip, long take, bool filterMustBeIsDependency) { using ICoreScope scope = _scopeProvider.CreateCoreScope(autoComplete: true); @@ -120,7 +120,7 @@ public class TrackedReferencesService : ITrackedReferencesService out var totalItems); var pagedModel = new PagedModel(totalItems, items); - return await Task.FromResult(pagedModel); + return Task.FromResult(pagedModel); } [Obsolete("Use overload that takes key instead of id. This will be removed in Umbraco 15.")] @@ -133,13 +133,13 @@ public class TrackedReferencesService : ITrackedReferencesService return pagedModel; } - public async Task> GetPagedItemsWithRelationsAsync(ISet keys, long skip, long take, bool filterMustBeIsDependency) + public Task> GetPagedItemsWithRelationsAsync(ISet keys, long skip, long take, bool filterMustBeIsDependency) { using ICoreScope scope = _scopeProvider.CreateCoreScope(autoComplete: true); IEnumerable items = _trackedReferencesRepository.GetPagedItemsWithRelations(keys, skip, take, filterMustBeIsDependency, out var totalItems); var pagedModel = new PagedModel(totalItems, items); - return await Task.FromResult(pagedModel); + return Task.FromResult(pagedModel); } public async Task> GetPagedKeysWithDependentReferencesAsync(ISet keys, Guid objectTypeId, long skip, long take) diff --git a/src/Umbraco.Core/Services/WebProfilerService.cs b/src/Umbraco.Core/Services/WebProfilerService.cs index e895bba6e7..9a42e0ee57 100644 --- a/src/Umbraco.Core/Services/WebProfilerService.cs +++ b/src/Umbraco.Core/Services/WebProfilerService.cs @@ -15,30 +15,30 @@ internal sealed class WebProfilerService : IWebProfilerService _backOfficeSecurityAccessor = backOfficeSecurityAccessor; } - public async Task> GetStatus() + public Task> GetStatus() { Attempt userIdAttempt = GetExecutingUserId(); if (userIdAttempt.Success is false) { - return Attempt.FailWithStatus(WebProfilerOperationStatus.ExecutingUserNotFound, false); + return Task.FromResult(Attempt.FailWithStatus(WebProfilerOperationStatus.ExecutingUserNotFound, false)); } var result = _webProfilerRepository.GetStatus(userIdAttempt.Result); - return await Task.FromResult(Attempt.SucceedWithStatus(WebProfilerOperationStatus.Success, result)); + return Task.FromResult(Attempt.SucceedWithStatus(WebProfilerOperationStatus.Success, result)); } - public async Task> SetStatus(bool status) + public Task> SetStatus(bool status) { Attempt userIdAttempt = GetExecutingUserId(); if (userIdAttempt.Success is false) { - return Attempt.FailWithStatus(WebProfilerOperationStatus.ExecutingUserNotFound, false); + return Task.FromResult(Attempt.FailWithStatus(WebProfilerOperationStatus.ExecutingUserNotFound, false)); } _webProfilerRepository.SetStatus(userIdAttempt.Result, status); - return await Task.FromResult(Attempt.SucceedWithStatus(WebProfilerOperationStatus.Success, status)); + return Task.FromResult(Attempt.SucceedWithStatus(WebProfilerOperationStatus.Success, status)); } private Attempt GetExecutingUserId() diff --git a/src/Umbraco.Core/Telemetry/TelemetryService.cs b/src/Umbraco.Core/Telemetry/TelemetryService.cs index ee57c4deab..c1ce0dfcc1 100644 --- a/src/Umbraco.Core/Telemetry/TelemetryService.cs +++ b/src/Umbraco.Core/Telemetry/TelemetryService.cs @@ -61,7 +61,8 @@ internal class TelemetryService : ITelemetryService }; } - private string? GetVersion() => _metricsConsentService.GetConsentLevel() == TelemetryLevel.Minimal + private string? GetVersion() + => _metricsConsentService.GetConsentLevel() == TelemetryLevel.Minimal ? null : _umbracoVersion.SemanticVersion.ToSemanticStringWithoutBuild(); diff --git a/src/Umbraco.Infrastructure/BackgroundJobs/Jobs/WebhookFiring.cs b/src/Umbraco.Infrastructure/BackgroundJobs/Jobs/WebhookFiring.cs index 07d8a09d9a..6ff87ff3cf 100644 --- a/src/Umbraco.Infrastructure/BackgroundJobs/Jobs/WebhookFiring.cs +++ b/src/Umbraco.Infrastructure/BackgroundJobs/Jobs/WebhookFiring.cs @@ -65,6 +65,7 @@ public class WebhookFiring : IRecurringBackgroundJob scope.Complete(); } + // Send webhook requests in parallel on a suppressed ExecutionContext to avoid deadlocks (each task will create its own root IScope) await Task.WhenAll(requests.Select(request => { using (ExecutionContext.SuppressFlow()) diff --git a/src/Umbraco.Infrastructure/Install/InstallHelper.cs b/src/Umbraco.Infrastructure/Install/InstallHelper.cs index 33152fbfac..0f67d56bed 100644 --- a/src/Umbraco.Infrastructure/Install/InstallHelper.cs +++ b/src/Umbraco.Infrastructure/Install/InstallHelper.cs @@ -50,7 +50,7 @@ namespace Umbraco.Cms.Infrastructure.Install _databaseProviderMetadata = databaseProviderMetadata; } - public async Task SetInstallStatusAsync(bool isCompleted, string errorMsg) + public Task SetInstallStatusAsync(bool isCompleted, string errorMsg) { try { @@ -92,6 +92,8 @@ namespace Umbraco.Cms.Infrastructure.Install { _logger.LogError(ex, "An error occurred in InstallStatus trying to check upgrades"); } + + return Task.CompletedTask; } /// diff --git a/src/Umbraco.Infrastructure/Install/PackageMigrationRunner.cs b/src/Umbraco.Infrastructure/Install/PackageMigrationRunner.cs index 954ff0a9aa..1994363e77 100644 --- a/src/Umbraco.Infrastructure/Install/PackageMigrationRunner.cs +++ b/src/Umbraco.Infrastructure/Install/PackageMigrationRunner.cs @@ -72,12 +72,12 @@ public class PackageMigrationRunner /// /// Checks if all executed package migrations succeeded for a package. /// - public async Task> RunPendingPackageMigrations(string packageName) + public Task> RunPendingPackageMigrations(string packageName) { // Check if there are any migrations if (_packageMigrationPlans.ContainsKey(packageName) == false) { - return Attempt.FailWithStatus(PackageMigrationOperationStatus.NotFound, false); + return Task.FromResult(Attempt.FailWithStatus(PackageMigrationOperationStatus.NotFound, false)); } // Run the migrations @@ -85,10 +85,10 @@ public class PackageMigrationRunner if (executedMigrationPlans.Any(plan => plan.Successful == false)) { - return Attempt.FailWithStatus(PackageMigrationOperationStatus.CancelledByFailedMigration, false); + return Task.FromResult(Attempt.FailWithStatus(PackageMigrationOperationStatus.CancelledByFailedMigration, false)); } - return Attempt.SucceedWithStatus(PackageMigrationOperationStatus.Success, true); + return Task.FromResult(Attempt.SucceedWithStatus(PackageMigrationOperationStatus.Success, true)); } /// diff --git a/src/Umbraco.Infrastructure/Manifest/PackageManifestService.cs b/src/Umbraco.Infrastructure/Manifest/PackageManifestService.cs index fbf00b7fa3..03a7b9d7c1 100644 --- a/src/Umbraco.Infrastructure/Manifest/PackageManifestService.cs +++ b/src/Umbraco.Infrastructure/Manifest/PackageManifestService.cs @@ -1,4 +1,4 @@ -using Microsoft.Extensions.Options; +using Microsoft.Extensions.Options; using Umbraco.Cms.Core.Cache; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Manifest; @@ -29,17 +29,18 @@ internal sealed class PackageManifestService : IPackageManifestService $"{nameof(PackageManifestService)}-PackageManifests", async () => { - Task>[] tasks = _packageManifestReaders - .Select(x => x.ReadPackageManifestsAsync()) - .ToArray(); - await Task.WhenAll(tasks); + var packageManifests = new List(); + foreach (IPackageManifestReader packageManifestReader in _packageManifestReaders) + { + packageManifests.AddRange(await packageManifestReader.ReadPackageManifestsAsync()); + } - return tasks.SelectMany(x => x.Result); + return packageManifests; }, _runtimeSettings.Mode == RuntimeMode.Production ? TimeSpan.FromDays(30) : TimeSpan.FromSeconds(10)) - ?? Array.Empty(); + ?? Enumerable.Empty(); public async Task> GetPublicPackageManifestsAsync() => (await GetAllPackageManifestsAsync()).Where(manifest => manifest.AllowPublicAccess); diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeUsageRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeUsageRepository.cs index 32ea15718b..dd58cd0716 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeUsageRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DataTypeUsageRepository.cs @@ -38,7 +38,7 @@ public class DataTypeUsageRepository : IDataTypeUsageRepository return database.ExecuteScalar(hasValueQuery); } - public async Task HasSavedValuesAsync(Guid dataTypeKey) + public Task HasSavedValuesAsync(Guid dataTypeKey) { IUmbracoDatabase? database = _scopeAccessor.AmbientScope?.Database; @@ -59,6 +59,6 @@ public class DataTypeUsageRepository : IDataTypeUsageRepository Sql hasValueQuery = database.SqlContext.Sql() .SelectAnyIfExists(selectQuery); - return await Task.FromResult(database.ExecuteScalar(hasValueQuery)); + return Task.FromResult(database.ExecuteScalar(hasValueQuery)); } } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/LocalFileSystemTemporaryFileRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/LocalFileSystemTemporaryFileRepository.cs index 409c2d8c91..94cb6a9bf0 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/LocalFileSystemTemporaryFileRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/LocalFileSystemTemporaryFileRepository.cs @@ -81,12 +81,11 @@ internal sealed class LocalFileSystemTemporaryFileRepository : ITemporaryFileRep var fullFileName = Path.Combine(fileDirectory.FullName, model.FileName); var metadataFileName = Path.Combine(fileDirectory.FullName, MetaDataFileName); - await Task.WhenAll( - CreateActualFile(model, fullFileName), - CreateMetadataFile(metadataFileName, new FileMetaData() - { - AvailableUntil = model.AvailableUntil - })); + await CreateActualFile(model, fullFileName); + await CreateMetadataFile(metadataFileName, new FileMetaData() + { + AvailableUntil = model.AvailableUntil + }); } public Task DeleteAsync(Guid key) @@ -120,7 +119,10 @@ internal sealed class LocalFileSystemTemporaryFileRepository : ITemporaryFileRep } } - await Task.WhenAll(keysToDelete.Select(DeleteAsync).ToArray()); + foreach (Guid keyToDelete in keysToDelete) + { + await DeleteAsync(keyToDelete); + } return keysToDelete; } diff --git a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PropertyTypeUsageRepository.cs b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PropertyTypeUsageRepository.cs index bca7cecd7a..dc7ba7e1bd 100644 --- a/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PropertyTypeUsageRepository.cs +++ b/src/Umbraco.Infrastructure/Persistence/Repositories/Implement/PropertyTypeUsageRepository.cs @@ -45,7 +45,7 @@ internal class PropertyTypeUsageRepository : IPropertyTypeUsageRepository return database.ExecuteScalar(hasValuesQuery); } - public async Task HasSavedPropertyValuesAsync(Guid contentTypeKey, string propertyAlias) + public Task HasSavedPropertyValuesAsync(Guid contentTypeKey, string propertyAlias) { IUmbracoDatabase? database = _scopeAccessor.AmbientScope?.Database; @@ -67,10 +67,10 @@ internal class PropertyTypeUsageRepository : IPropertyTypeUsageRepository Sql hasValuesQuery = database.SqlContext.Sql() .SelectAnyIfExists(selectQuery); - return database.ExecuteScalar(hasValuesQuery); + return Task.FromResult(database.ExecuteScalar(hasValuesQuery)); } - public async Task ContentTypeExistAsync(Guid contentTypeKey) + public Task ContentTypeExistAsync(Guid contentTypeKey) { IUmbracoDatabase? database = _scopeAccessor.AmbientScope?.Database; @@ -88,7 +88,7 @@ internal class PropertyTypeUsageRepository : IPropertyTypeUsageRepository Sql hasValuesQuery = database.SqlContext.Sql() .SelectAnyIfExists(selectQuery); - return database.ExecuteScalar(hasValuesQuery); + return Task.FromResult(database.ExecuteScalar(hasValuesQuery)); } diff --git a/src/Umbraco.Infrastructure/Security/MemberUserStore.cs b/src/Umbraco.Infrastructure/Security/MemberUserStore.cs index 21c4207224..6dddd08756 100644 --- a/src/Umbraco.Infrastructure/Security/MemberUserStore.cs +++ b/src/Umbraco.Infrastructure/Security/MemberUserStore.cs @@ -483,8 +483,7 @@ public class MemberUserStore : UmbracoUserStore - protected override async Task?> FindUserLoginAsync(string userId, string loginProvider, - string providerKey, CancellationToken cancellationToken) + protected override async Task?> FindUserLoginAsync(string userId, string loginProvider, string providerKey, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); @@ -502,15 +501,14 @@ public class MemberUserStore : UmbracoUserStore?>(null); + return null; } IList logins = await GetLoginsAsync(user, cancellationToken); - UserLoginInfo? found = - logins.FirstOrDefault(x => x.ProviderKey == providerKey && x.LoginProvider == loginProvider); + UserLoginInfo? found = logins.FirstOrDefault(x => x.ProviderKey == providerKey && x.LoginProvider == loginProvider); if (found is null) { - return await Task.FromResult?>(null); + return null; } return new IdentityUserLogin @@ -524,8 +522,7 @@ public class MemberUserStore : UmbracoUserStore - protected override Task?> FindUserLoginAsync(string loginProvider, string providerKey, - CancellationToken cancellationToken) + protected override Task?> FindUserLoginAsync(string loginProvider, string providerKey, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); ThrowIfDisposed(); diff --git a/src/Umbraco.Infrastructure/Services/Implement/ContentListViewService.cs b/src/Umbraco.Infrastructure/Services/Implement/ContentListViewService.cs index ecbc6e4003..e9d46ddaa8 100644 --- a/src/Umbraco.Infrastructure/Services/Implement/ContentListViewService.cs +++ b/src/Umbraco.Infrastructure/Services/Implement/ContentListViewService.cs @@ -49,7 +49,7 @@ internal sealed class ContentListViewService : ContentListViewServiceBase> GetPagedChildrenAsync( + protected override Task> GetPagedChildrenAsync( int id, IQuery? filter, Ordering? ordering, @@ -58,13 +58,13 @@ internal sealed class ContentListViewService : ContentListViewServiceBase items = await Task.FromResult(_contentService.GetPagedChildren( + IEnumerable items = _contentService.GetPagedChildren( id, pageNumber, pageSize, out var total, filter, - ordering)); + ordering); var pagedResult = new PagedModel { @@ -72,7 +72,7 @@ internal sealed class ContentListViewService : ContentListViewServiceBase> GetPagedChildrenAsync(int id, IQuery? filter, Ordering? ordering, int skip, int take) + protected override Task> GetPagedChildrenAsync(int id, IQuery? filter, Ordering? ordering, int skip, int take) { PaginationHelper.ConvertSkipTakeToPaging(skip, take, out var pageNumber, out var pageSize); - IEnumerable items = await Task.FromResult(_mediaService.GetPagedChildren( + IEnumerable items = _mediaService.GetPagedChildren( id, pageNumber, pageSize, out var total, filter, - ordering)); + ordering); var pagedResult = new PagedModel { @@ -68,7 +68,7 @@ internal sealed class MediaListViewService : ContentListViewServiceBase - public async Task> GetCreatedPackagesAsync(int skip, int take) + public Task> GetCreatedPackagesAsync(int skip, int take) { using ICoreScope scope = _coreScopeProvider.CreateCoreScope(autoComplete: true); PackageDefinition[] packages = _createdPackages.GetAll().WhereNotNull().ToArray(); var pagedModel = new PagedModel(packages.Length, packages.Skip(skip).Take(take)); - return pagedModel; + return Task.FromResult(pagedModel); } /// diff --git a/src/Umbraco.Infrastructure/Services/MemberEditingService.cs b/src/Umbraco.Infrastructure/Services/MemberEditingService.cs index f7cd7060c3..efae531d3e 100644 --- a/src/Umbraco.Infrastructure/Services/MemberEditingService.cs +++ b/src/Umbraco.Infrastructure/Services/MemberEditingService.cs @@ -70,8 +70,8 @@ internal sealed class MemberEditingService : IMemberEditingService _securitySettings = securitySettings.Value; } - public async Task GetAsync(Guid key) - => await Task.FromResult(_memberService.GetByKey(key)); + public Task GetAsync(Guid key) + => Task.FromResult(_memberService.GetByKey(key)); public async Task> ValidateCreateAsync(MemberCreateModel createModel) => await _memberContentEditingService.ValidateAsync(createModel, createModel.ContentTypeKey); diff --git a/tests/Umbraco.Tests.Integration/ManagementApi/ManagementApiTest.cs b/tests/Umbraco.Tests.Integration/ManagementApi/ManagementApiTest.cs index 9e07d1f64d..259eb92938 100644 --- a/tests/Umbraco.Tests.Integration/ManagementApi/ManagementApiTest.cs +++ b/tests/Umbraco.Tests.Integration/ManagementApi/ManagementApiTest.cs @@ -31,11 +31,12 @@ public abstract class ManagementApiTest : UmbracoTestServerTestBase where T : ManagementApiControllerBase { [SetUp] - public async Task Setup() + public Task Setup() { Client.DefaultRequestHeaders .Accept .Add(new MediaTypeWithQualityHeaderValue(MediaTypeNames.Application.Json)); + return Task.CompletedTask; } protected override void CustomTestAuthSetup(IServiceCollection services) diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/UserIdKeyResolverTests.cs b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/UserIdKeyResolverTests.cs index cfcc52fa8f..e66d4414a4 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/UserIdKeyResolverTests.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Services/UserIdKeyResolverTests.cs @@ -75,14 +75,16 @@ public class UserIdKeyResolverTests : UmbracoIntegrationTest } [Test] - public async Task Unknown_Key_Throws() + public Task Unknown_Key_Throws() { Assert.ThrowsAsync(async () => await UserIdKeyResolver.GetAsync(Guid.NewGuid())); + return Task.CompletedTask; } [Test] - public async Task Unknown_Id_Throws() + public Task Unknown_Id_Throws() { - Assert.ThrowsAsync(async () => await UserIdKeyResolver.GetAsync(1234567890)); + Assert.ThrowsAsync(async () => await UserIdKeyResolver.GetAsync(1234567890)); + return Task.CompletedTask; } } diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Persistence.EFCore/Scoping/EFCoreScopeTest.cs b/tests/Umbraco.Tests.Integration/Umbraco.Persistence.EFCore/Scoping/EFCoreScopeTest.cs index deefb0d99b..0d027fb6e0 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Persistence.EFCore/Scoping/EFCoreScopeTest.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Persistence.EFCore/Scoping/EFCoreScopeTest.cs @@ -81,7 +81,7 @@ public class EFCoreScopeTest : UmbracoIntegrationTest using (IEfCoreScope scope = EfCoreScopeProvider.CreateScope()) { // scopeProvider.Context.Enlist("test", completed => scopeCompleted = completed); - await scope.ExecuteWithContextAsync(async database => + await scope.ExecuteWithContextAsync(database => { scope.ScopeContext!.Enlist("test", completed => scopeCompleted = completed); Assert.IsInstanceOf>(scope); @@ -97,7 +97,7 @@ public class EFCoreScopeTest : UmbracoIntegrationTest throw new Exception("bang!"); } - return true; + return Task.FromResult(true); }); scope.Complete(); diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/BackgroundJobs/Jobs/HealthCheckNotifierJobTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/BackgroundJobs/Jobs/HealthCheckNotifierJobTests.cs index 9eb6862bfc..701f5c1d43 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/BackgroundJobs/Jobs/HealthCheckNotifierJobTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/BackgroundJobs/Jobs/HealthCheckNotifierJobTests.cs @@ -136,6 +136,6 @@ public class HealthCheckNotifierJobTests { public override HealthCheckStatus ExecuteAction(HealthCheckAction action) => new("Check message"); - public override async Task> GetStatusAsync() => Enumerable.Empty(); + public override Task> GetStatusAsync() => Task.FromResult(Enumerable.Empty()); } } diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HealthChecks/HealthCheckResultsTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HealthChecks/HealthCheckResultsTests.cs index 7e98623707..85169ceedb 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HealthChecks/HealthCheckResultsTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/HealthChecks/HealthCheckResultsTests.cs @@ -26,8 +26,8 @@ public class HealthCheckResultsTests public override HealthCheckStatus ExecuteAction(HealthCheckAction action) => throw new NotImplementedException(); - public override async Task> GetStatusAsync() => - new List { new(_message) { ResultType = _resultType } }; + public override Task> GetStatusAsync() => + Task.FromResult>(new List { new(_message) { ResultType = _resultType } }); } [HealthCheck("CFD6FC34-59C9-4402-B55F-C8BC96B628A1", "Stub check 1")] @@ -56,8 +56,8 @@ public class HealthCheckResultsTests { } - public override async Task> GetStatusAsync() => - throw new Exception("Check threw exception"); + public override Task> GetStatusAsync() + => throw new Exception("Check threw exception"); } [Test] diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Security/MemberManagerTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Security/MemberManagerTests.cs index 4de1ce2347..7ee021947f 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Security/MemberManagerTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Security/MemberManagerTests.cs @@ -113,7 +113,7 @@ public class MemberManagerTests } [Test] - public async Task GivenICreateUser_AndTheUserIsNull_ThenIShouldGetAFailedResultAsync() + public Task GivenICreateUser_AndTheUserIsNull_ThenIShouldGetAFailedResultAsync() { // arrange var sut = CreateSut(); @@ -124,6 +124,7 @@ public class MemberManagerTests // act Assert.ThrowsAsync(async () => await sut.CreateAsync(null)); + return Task.CompletedTask; } [Test] diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Security/MemberRoleStoreTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Security/MemberRoleStoreTests.cs index e97b438c05..d5f34f3a65 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Security/MemberRoleStoreTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Infrastructure/Security/MemberRoleStoreTests.cs @@ -201,7 +201,7 @@ public class MemberRoleStoreTests } [Test] - public async Task + public Task GivenIDeleteAMemberRole_AndTheIdCannotBeParsedToAnInt_ThenTheMemberGroupShouldNotBeDeleted_AndIShouldGetAnArgumentException() { // arrange @@ -214,6 +214,7 @@ public class MemberRoleStoreTests // act Assert.ThrowsAsync(async () => await sut.DeleteAsync(fakeRole, fakeCancellationToken)); + return Task.CompletedTask; } [Test] @@ -263,7 +264,7 @@ public class MemberRoleStoreTests } [Test] - public async Task GivenIFindAMemberRoleByRoleId_AndIdCannotBeParsedToAnIntOrGuid_ThenIShouldGetAFailureResultAsync() + public Task GivenIFindAMemberRoleByRoleId_AndIdCannotBeParsedToAnIntOrGuid_ThenIShouldGetAFailureResultAsync() { // arrange var sut = CreateSut(); @@ -276,6 +277,7 @@ public class MemberRoleStoreTests // assert Assert.That(actual, Throws.TypeOf()); _mockMemberGroupService.VerifyNoOtherCalls(); + return Task.CompletedTask; } [Test]