Skip to content

Commit 637fdca

Browse files
committed
convert installation pipeline task to async
1 parent a421504 commit 637fdca

16 files changed

+140
-3623
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,3 +481,5 @@ $RECYCLE.BIN/
481481
##
482482
/src/Umbraco.Commerce.Checkout/wwwroot/
483483
.vscode
484+
/src/Umbraco.Commerce.Checkout/packages.lock.json
485+
/src/Umbraco.Commerce.Checkout/packages.lock.json

Directory.Packages.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
<GlobalPackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" />
77
<GlobalPackageReference Include="Nerdbank.GitVersioning" Version="3.6.133" />
88
<GlobalPackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.507" />
9-
<GlobalPackageReference Include="Umbraco.Code" Version="2.1.0" />
9+
<GlobalPackageReference Include="Umbraco.Code" Version="[2.2.0, 3)" />
1010
<GlobalPackageReference Include="Umbraco.GitVersioning.Extensions" Version="0.2.0" />
1111
</ItemGroup>
1212
<ItemGroup>
13-
<PackageVersion Include="Umbraco.Commerce.Cms.Startup" Version="[14.0.0--alpha4.preview.480.ga3ab916, 15)" />
13+
<PackageVersion Include="Umbraco.Commerce.Cms.Startup" Version="[14.0.0--beta2.preview.552.gf22f570, 15)" />
1414
<PackageVersion Include="Umbraco.Cms.Web.Website" Version="[14.0.0, 15)" />
1515
</ItemGroup>
1616
</Project>

src/Umbraco.Commerce.Checkout/Client/src/backoffice/dashboards/manifest.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const dashboardManifests: Array<ManifestDashboard | ManifestModal> = [
66
type: 'dashboard',
77
alias: 'Umbraco.Commerce.Checkout.InstallerDashboard',
88
weight: -100,
9-
name: 'Umbraco Commerce Checkout v14',
9+
name: 'Umbraco Commerce Checkout',
1010
meta: {
1111
},
1212
element: () => import('./installer-dashboard.element'),
@@ -27,4 +27,4 @@ const dashboardManifests: Array<ManifestDashboard | ManifestModal> = [
2727
element: () => import('../modals/installer-modal.element'),
2828
},
2929
];
30-
export const manifests = [...dashboardManifests];
30+
export const manifests = [...dashboardManifests];

src/Umbraco.Commerce.Checkout/Composing/UmbracoCommerceCheckoutComposer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ public class UmbracoCommerceCheckoutComposer : IComposer
99
{
1010
public void Compose(IBuilder builder)
1111
{
12-
// If Umbraco Commerce Checkout hasn't been added manually by now,
12+
// If Umbraco Commerce Checkout hasn't been added manually by now,
1313
// add it automatically with the default configuration.
14-
// If Umbraco Commerce Checkout has already been added manully, then
14+
// If Umbraco Commerce Checkout has already been added manully, then
1515
// the AddUmbracoCommerceCheckout() call will just exit early.
1616
builder.AddUmbracoCommerceCheckout();
1717
}

src/Umbraco.Commerce.Checkout/Extensions/CompositionExtensions.cs

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Umbraco.Commerce.Checkout.Events;
22
using Umbraco.Commerce.Checkout.Pipeline;
33
using Umbraco.Commerce.Checkout.Pipeline.Tasks;
4+
using Umbraco.Commerce.Core;
45
using Umbraco.Commerce.Core.Events.Notification;
56
using Umbraco.Commerce.Extensions;
67

@@ -12,44 +13,40 @@ internal static class CompositionExtensions
1213
{
1314
public static IBuilder AddUmbracoCommerceEventHandlers(this IBuilder builder)
1415
{
16+
IUmbracoCommerceBuilder commerceBuilder = builder.WithUmbracoCommerceBuilder();
17+
1518
// Reset shipping / payment methods when certain elements of
1619
// an order change
17-
#pragma warning disable CS0618 // Type or member is obsolete
18-
builder.WithNotificationEvent<OrderProductAddingNotification>()
20+
commerceBuilder.WithNotificationEvent<OrderProductAddingNotification>()
1921
.RegisterHandler<OrderProductAddingHandler>();
2022

21-
builder.WithNotificationEvent<OrderLineChangingNotification>()
23+
commerceBuilder.WithNotificationEvent<OrderLineChangingNotification>()
2224
.RegisterHandler<OrderLineChangingHandler>();
2325

24-
builder.WithNotificationEvent<OrderLineRemovingNotification>()
26+
commerceBuilder.WithNotificationEvent<OrderLineRemovingNotification>()
2527
.RegisterHandler<OrderLineRemovingHandler>();
2628

27-
builder.WithNotificationEvent<OrderPaymentCountryRegionChangingNotification>()
29+
commerceBuilder.WithNotificationEvent<OrderPaymentCountryRegionChangingNotification>()
2830
.RegisterHandler<OrderPaymentCountryRegionChangingHandler>();
2931

30-
builder.WithNotificationEvent<OrderShippingCountryRegionChangingNotification>()
32+
commerceBuilder.WithNotificationEvent<OrderShippingCountryRegionChangingNotification>()
3133
.RegisterHandler<OrderShippingCountryRegionChangingHandler>();
3234

33-
builder.WithNotificationEvent<OrderShippingMethodChangingNotification>()
35+
commerceBuilder.WithNotificationEvent<OrderShippingMethodChangingNotification>()
3436
.RegisterHandler<OrderShippingMethodChangingHandler>();
3537

36-
// Toggle order editor shipping address enabled flag based on
37-
// whether there umbraco commerce checkout is configured to collect a shipping address
38-
#pragma warning restore CS0618 // Type or member is obsolete
39-
4038
return builder;
4139
}
4240

4341
public static IBuilder AddUmbracoCommerceInstallPipeline(this IBuilder builder)
4442
{
45-
#pragma warning disable CS0618 // Type or member is obsolete
46-
builder.WithPipeline<InstallPipeline, InstallPipelineContext>()
47-
.Append<CreateUmbracoCommerceCheckoutDataTypesTask>()
48-
.Append<CreateUmbracoCommerceCheckoutDocumentTypesTask>()
49-
.Append<CreateUmbracoCommerceCheckoutNodesTask>()
50-
.Append<ConfigureUmbracoCommerceStoreTask>()
51-
.Append<CreateUmbracoCommerceCheckoutZeroValuePaymentMethodTask>();
52-
#pragma warning restore CS0618 // Type or member is obsolete
43+
IUmbracoCommerceBuilder commerceBuilder = builder.WithUmbracoCommerceBuilder();
44+
commerceBuilder.WithAsyncPipeline<InstallAsyncPipelineTask, InstallPipelineContext>()
45+
.Add<CreateUmbracoCommerceCheckoutDataTypesTask>()
46+
.Add<CreateUmbracoCommerceCheckoutDocumentTypesTask>()
47+
.Add<CreateUmbracoCommerceCheckoutNodesTask>()
48+
.Add<ConfigureUmbracoCommerceStoreTask>()
49+
.Add<CreateUmbracoCommerceCheckoutZeroValuePaymentMethodTask>();
5350

5451
return builder;
5552
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using Umbraco.Commerce.Common.Pipelines;
4+
5+
namespace Umbraco.Commerce.Checkout.Pipeline
6+
{
7+
public class InstallAsyncPipelineTask : AsyncPipelineTaskCollection<InstallPipelineContext>
8+
{
9+
public InstallAsyncPipelineTask(Func<IEnumerable<IAsyncPipelineTask<InstallPipelineContext>>> items)
10+
: base(items)
11+
{
12+
}
13+
}
14+
}

src/Umbraco.Commerce.Checkout/Pipeline/InstallPipeline.cs

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
1+
using System;
2+
using System.Threading;
3+
using System.Threading.Tasks;
14
using Umbraco.Commerce.Common.Pipelines;
25
using Umbraco.Commerce.Common.Pipelines.Tasks;
36
using Umbraco.Commerce.Core.Api;
7+
using Umbraco.Commerce.Core.Models;
48

59
namespace Umbraco.Commerce.Checkout.Pipeline.Tasks
610
{
7-
public class ConfigureUmbracoCommerceStoreTask : PipelineTaskBase<InstallPipelineContext>
11+
public class ConfigureUmbracoCommerceStoreTask : AsyncPipelineTaskBase<InstallPipelineContext>
812
{
913
private readonly IUmbracoCommerceApi _commerceApi;
1014

@@ -13,37 +17,37 @@ public ConfigureUmbracoCommerceStoreTask(IUmbracoCommerceApi commerceApi)
1317
_commerceApi = commerceApi;
1418
}
1519

16-
public override PipelineResult<InstallPipelineContext> Execute(PipelineArgs<InstallPipelineContext> args)
20+
public override Task<PipelineResult<InstallPipelineContext>> ExecuteAsync(PipelineArgs<InstallPipelineContext> args, CancellationToken cancellationToken = default)
1721
{
1822
_commerceApi.Uow.Execute(uow =>
1923
{
2024
// Update order confirmation email
21-
var orderConfirmationEmailId = args.Model.Store.ConfirmationEmailTemplateId;
25+
Guid? orderConfirmationEmailId = args.Model.Store.ConfirmationEmailTemplateId;
2226
if (orderConfirmationEmailId.HasValue)
2327
{
24-
var orderConfirmationEmail = _commerceApi.GetEmailTemplate(orderConfirmationEmailId.Value)
28+
EmailTemplate orderConfirmationEmail = _commerceApi.GetEmailTemplate(orderConfirmationEmailId.Value)
2529
.AsWritable(uow)
2630
.SetTemplateView("~/Views/UmbracoCommerceCheckout/Templates/Email/UmbracoCommerceCheckoutOrderConfirmationEmail.cshtml");
2731

2832
_commerceApi.SaveEmailTemplate(orderConfirmationEmail);
2933
}
3034

3135
// Update order confirmation email
32-
var orderErrorEmailId = args.Model.Store.ErrorEmailTemplateId;
36+
Guid? orderErrorEmailId = args.Model.Store.ErrorEmailTemplateId;
3337
if (orderErrorEmailId.HasValue)
3438
{
35-
var orderErrorEmail = _commerceApi.GetEmailTemplate(orderErrorEmailId.Value)
39+
EmailTemplate orderErrorEmail = _commerceApi.GetEmailTemplate(orderErrorEmailId.Value)
3640
.AsWritable(uow)
3741
.SetTemplateView("~/Views/UmbracoCommerceCheckout/Templates/Email/UmbracoCommerceCheckoutOrderErrorEmail.cshtml");
3842

3943
_commerceApi.SaveEmailTemplate(orderErrorEmail);
4044
}
4145

4246
// Update gift card email
43-
var giftCardEmailId = args.Model.Store.DefaultGiftCardEmailTemplateId;
47+
Guid? giftCardEmailId = args.Model.Store.DefaultGiftCardEmailTemplateId;
4448
if (giftCardEmailId.HasValue)
4549
{
46-
var giftCardEmail = _commerceApi.GetEmailTemplate(giftCardEmailId.Value)
50+
EmailTemplate giftCardEmail = _commerceApi.GetEmailTemplate(giftCardEmailId.Value)
4751
.AsWritable(uow)
4852
.SetTemplateView("~/Views/UmbracoCommerceCheckout/Templates/Email/UmbracoCommerceCheckoutGiftCardEmail.cshtml");
4953

@@ -54,7 +58,7 @@ public override PipelineResult<InstallPipelineContext> Execute(PipelineArgs<Inst
5458
});
5559

5660
// Continue the pipeline
57-
return Ok();
61+
return Task.FromResult(Ok());
5862
}
5963
}
6064
}

src/Umbraco.Commerce.Checkout/Pipeline/Tasks/CreateUmbracoCommerceCheckoutDataTypesTask.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4+
using System.Threading;
5+
using System.Threading.Tasks;
46
using Umbraco.Cms.Core;
57
using Umbraco.Cms.Core.Models;
68
using Umbraco.Cms.Core.PropertyEditors;
@@ -11,7 +13,7 @@
1113

1214
namespace Umbraco.Commerce.Checkout.Pipeline.Tasks
1315
{
14-
public class CreateUmbracoCommerceCheckoutDataTypesTask : PipelineTaskBase<InstallPipelineContext>
16+
public class CreateUmbracoCommerceCheckoutDataTypesTask : AsyncPipelineTaskBase<InstallPipelineContext>
1517
{
1618
private readonly IDataTypeService _dataTypeService;
1719
private readonly PropertyEditorCollection _propertyEditors;
@@ -28,12 +30,12 @@ public CreateUmbracoCommerceCheckoutDataTypesTask(
2830
_configurationEditorJsonSerializer = configurationEditorJsonSerializer;
2931
}
3032

31-
public override PipelineResult<InstallPipelineContext> Execute(PipelineArgs<InstallPipelineContext> args)
33+
public override async Task<PipelineResult<InstallPipelineContext>> ExecuteAsync(PipelineArgs<InstallPipelineContext> args, CancellationToken cancellationToken = default)
3234
{
3335
// Theme Color Picker
3436
if (_propertyEditors.TryGet(Constants.PropertyEditors.Aliases.ColorPicker, out IDataEditor? colorPickerDataEditor))
3537
{
36-
IDataType? currentColorPicker = _dataTypeService.GetAsync(UmbracoCommerceCheckoutConstants.DataTypes.Guids.ThemeColorPickerGuid).GetAwaiter().GetResult();
38+
IDataType? currentColorPicker = await _dataTypeService.GetAsync(UmbracoCommerceCheckoutConstants.DataTypes.Guids.ThemeColorPickerGuid);
3739
if (currentColorPicker == null)
3840
{
3941
DataType dataType = CreateDataType(colorPickerDataEditor, x =>
@@ -57,7 +59,7 @@ public override PipelineResult<InstallPipelineContext> Execute(PipelineArgs<Inst
5759
_configurationEditorJsonSerializer);
5860
});
5961

60-
_dataTypeService.CreateAsync(dataType, Constants.Security.SuperUserKey).GetAwaiter().GetResult();
62+
await _dataTypeService.CreateAsync(dataType, Constants.Security.SuperUserKey);
6163
}
6264
else
6365
{
@@ -76,7 +78,7 @@ public override PipelineResult<InstallPipelineContext> Execute(PipelineArgs<Inst
7678
},
7779
_configurationEditorJsonSerializer);
7880

79-
_dataTypeService.UpdateAsync(currentColorPicker, Constants.Security.SuperUserKey).GetAwaiter().GetResult();
81+
await _dataTypeService.UpdateAsync(currentColorPicker, Constants.Security.SuperUserKey);
8082
}
8183
}
8284

@@ -90,7 +92,7 @@ public override PipelineResult<InstallPipelineContext> Execute(PipelineArgs<Inst
9092
"Confirmation",
9193
];
9294

93-
IDataType? currentStepPicker = _dataTypeService.GetAsync(UmbracoCommerceCheckoutConstants.DataTypes.Guids.StepPickerGuid).GetAwaiter().GetResult();
95+
IDataType? currentStepPicker = await _dataTypeService.GetAsync(UmbracoCommerceCheckoutConstants.DataTypes.Guids.StepPickerGuid);
9496
if (_propertyEditors.TryGet(Constants.PropertyEditors.Aliases.DropDownListFlexible, out IDataEditor? ddlDataEditor))
9597
{
9698
if (currentStepPicker == null)
@@ -112,7 +114,7 @@ public override PipelineResult<InstallPipelineContext> Execute(PipelineArgs<Inst
112114
_configurationEditorJsonSerializer);
113115
});
114116

115-
_dataTypeService.CreateAsync(dataType, Constants.Security.SuperUserKey).GetAwaiter().GetResult();
117+
await _dataTypeService.CreateAsync(dataType, Constants.Security.SuperUserKey);
116118
}
117119
else
118120
{
@@ -127,7 +129,7 @@ public override PipelineResult<InstallPipelineContext> Execute(PipelineArgs<Inst
127129
},
128130
_configurationEditorJsonSerializer);
129131

130-
_dataTypeService.UpdateAsync(currentStepPicker, Constants.Security.SuperUserKey).GetAwaiter().GetResult();
132+
await _dataTypeService.UpdateAsync(currentStepPicker, Constants.Security.SuperUserKey);
131133
}
132134
}
133135

0 commit comments

Comments
 (0)