Skip to content

Commit 73cd72c

Browse files
authored
Merge pull request #193 from Nfactor26/async-methods-for-wizard-and-stagedsmartscreen
Async methods for Wizard and StagedSmartScreen
2 parents 27017f6 + 0e378f9 commit 73cd72c

File tree

13 files changed

+125
-138
lines changed

13 files changed

+125
-138
lines changed

src/Pixel.Automation.AppExplorer.ViewModels/PrefabBuilder/NewPrefabViewModel.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,17 +60,16 @@ public bool CanTryProcessStage
6060
get => IsValid;
6161
}
6262

63-
public override bool TryProcessStage(out string errorDescription)
64-
{
65-
errorDescription = string.Empty;
63+
public override async Task<bool> TryProcessStage()
64+
{
6665
if(Validate())
6766
{
6867
this.PrefabName = this.PrefabName.Trim();
6968
this.prefabProject.Namespace = $"{Constants.PrefabNameSpacePrefix}.{this.PrefabName.Replace(' ', '.')}";
7069
logger.Information($"Prefab name is : {PrefabName}. Moving to next screen");
71-
return true;
70+
return await Task.FromResult(true);
7271
}
73-
return false;
72+
return await Task.FromResult(false);
7473
}
7574

7675
public override object GetProcessedResult()

src/Pixel.Automation.AppExplorer.ViewModels/PrefabBuilder/PrefabDataModelBuilderViewModel.cs

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,6 @@
1111
using Pixel.Automation.Editor.Core.Interfaces;
1212
using Pixel.Scripting.Editor.Core.Contracts;
1313
using Serilog;
14-
using System;
15-
using System.Collections.Generic;
16-
using System.Linq;
17-
using System.Threading;
18-
using System.Threading.Tasks;
1914
using System.Windows.Controls;
2015

2116
namespace Pixel.Automation.AppExplorer.ViewModels.PrefabBuilder
@@ -62,12 +57,11 @@ public PrefabDataModelBuilderViewModel(PrefabProject prefabProject, ICodeGenerat
6257
currentDataModel = rootEntity.EntityManager.Arguments;
6358
}
6459

65-
public override bool TryProcessStage(out string errorDescription)
60+
public override async Task<bool> TryProcessStage()
6661
{
6762
ClearErrors("");
6863
if(!RequiredProperties.Any(a => a.IsRequired))
6964
{
70-
errorDescription = string.Empty;
7165
logger.Information("None of the properties were marked as required proerties");
7266
}
7367

@@ -101,14 +95,14 @@ public override bool TryProcessStage(out string errorDescription)
10195
classBuilder.AddProperty(property.PropertyName, property.PropertyType);
10296
classBuilder.AddAttribute(property.PropertyName,typeof(ParameterUsage), new List<KeyValuePair<string, object>>() { new KeyValuePair<string, object>("", $"ParameterUsage.{property.Usage}") });
10397
}
104-
if (!classBuilder.HasErrors(out errorDescription))
98+
if (!classBuilder.HasErrors(out string errorDescription))
10599
{
106100
this.generatedCode = classBuilder.GetGeneratedCode();
107101
logger.Information($"Created prefab data model class : {Constants.PrefabDataModelName} with {RequiredProperties.Count()} properties");
108-
return true;
102+
return await Task.FromResult(true);
109103
}
110104
AddOrAppendErrors("", errorDescription);
111-
return false;
105+
return await Task.FromResult(false);
112106
}
113107

114108
private void MirrorTargetType(Type targetType)
@@ -196,12 +190,12 @@ private void MarkRequiredProperties()
196190
}
197191

198192

199-
public override void OnPreviousScreen()
193+
public override async Task OnPreviousScreen()
200194
{
201195
ClearErrors("");
202196
RequiredProperties.Clear();
203197
arguments.Clear();
204-
base.OnPreviousScreen();
198+
await base.OnPreviousScreen();
205199
}
206200

207201
}

src/Pixel.Automation.AppExplorer.ViewModels/PrefabBuilder/PrefabDataModelEditorViewModel.cs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public PrefabDataModelEditorViewModel(PrefabProject prefabProject, IPrefabFileSy
3030
this.prefabFileSystem = projectFileSystem;
3131
}
3232

33-
public override bool TryProcessStage(out string errorDescription)
33+
public override async Task<bool> TryProcessStage()
3434
{
3535
try
3636
{
@@ -40,17 +40,15 @@ public override bool TryProcessStage(out string errorDescription)
4040
compilationResult.SaveAssemblyToDisk(this.prefabFileSystem.TempDirectory);
4141
dataModelAssembly = Assembly.LoadFrom(Path.Combine(this.prefabFileSystem.TempDirectory, compilationResult.OutputAssemblyName));
4242
logger.Information($"Loaded prefab assembly : {compilationResult.OutputAssemblyName}");
43-
errorDescription = string.Empty;
44-
return true;
43+
return await Task.FromResult(true);
4544
}
4645

4746
}
4847
catch (Exception ex)
4948
{
50-
logger.Error(ex, ex.Message);
51-
errorDescription = ex.Message;
52-
AddOrAppendErrors("", errorDescription);
53-
return false;
49+
logger.Error(ex, ex.Message);
50+
AddOrAppendErrors("", ex.Message);
51+
return await Task.FromResult(false);
5452
}
5553

5654
}
@@ -93,16 +91,16 @@ string GetDataModelFileContent()
9391
}
9492
}
9593

96-
public override void OnFinished()
94+
public override async Task OnFinished()
9795
{
9896
CleanUp();
99-
base.OnPreviousScreen();
97+
await base.OnPreviousScreen();
10098
}
10199

102-
public override void OnCancelled()
100+
public override async Task OnCancelled()
103101
{
104102
CleanUp();
105-
base.OnCancelled();
103+
await base.OnCancelled();
106104
}
107105

108106
private void CleanUp()

src/Pixel.Automation.AppExplorer.ViewModels/PrefabBuilder/PrefabScriptsImporterViewModel.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,19 @@ public PrefabScriptsImporterViewModel(PrefabProject prefabToolBoxItem, Entity ro
5050

5151
}
5252

53-
public override bool TryProcessStage(out string errorDescription)
53+
public override async Task<bool> TryProcessStage()
5454
{
5555
try
5656
{
5757
UpdateScriptFilePath();
58-
ClearErrors("");
59-
errorDescription = string.Empty;
60-
return true;
58+
ClearErrors("");
59+
return await Task.FromResult(true);
6160
}
6261
catch (Exception ex)
6362
{
64-
logger.Error(ex, ex.Message);
65-
errorDescription = ex.Message;
63+
logger.Error(ex, ex.Message);
6664
AddOrAppendErrors("", ex.Message);
67-
return false;
65+
return await Task.FromResult(true);
6866
}
6967
}
7068

src/Pixel.Automation.AppExplorer.ViewModels/PrefabDropHandler/PrefabMappingScriptEditorViewModel.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,25 +105,24 @@ public override object GetProcessedResult()
105105
}
106106

107107
/// <inheritdoc/>
108-
public override bool TryProcessStage(out string errorDescription)
108+
public override async Task<bool> TryProcessStage()
109109
{
110110
this.ScriptEditor.Deactivate();
111-
errorDescription = String.Empty;
112-
return true;
111+
return await Task.FromResult(true);
113112
}
114113

115114
/// <inheritdoc/>
116-
public override void OnFinished()
115+
public override async Task OnFinished()
117116
{
118117
DisposeEditor();
119-
base.OnFinished();
118+
await base.OnFinished();
120119
}
121120

122121
/// <inheritdoc/>
123-
public override void OnCancelled()
122+
public override async Task OnCancelled()
124123
{
125124
DisposeEditor();
126-
base.OnCancelled();
125+
await base.OnCancelled();
127126
}
128127

129128
/// <summary>

src/Pixel.Automation.AppExplorer.ViewModels/PrefabDropHandler/PrefabVersionSelectorViewModel.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -140,35 +140,34 @@ public void PickOutputMappingScriptFile()
140140
}
141141

142142
/// <inheritdoc/>
143-
public override bool TryProcessStage(out string errorDescription)
143+
public override async Task<bool> TryProcessStage()
144144
{
145145
//TODO : Can we make this asyc ?
146146
if(this.SelectedVersion != null && !dropTarget.ComponentCollection.Any(a => a.Model.Equals(prefabEntity)))
147147
{
148-
UpdatePrefabReferences();
149-
UpdateControlReferences();
148+
await UpdatePrefabReferencesAsync();
149+
await UpdateControlReferencesAsync();
150150
dropTarget.AddComponent(prefabEntity);
151151
this.CanChangeVersion = false;
152152
logger.Information("Added version {0} of {1} to {2}.", this.SelectedVersion, this.prefabProject, this.dropTarget);
153-
}
154-
errorDescription = String.Empty;
153+
}
155154
return true;
156155
}
157156

158157
/// <summary>
159158
/// When adding a Prefab, make an entry of the Prefab in to the Prefab References file of the automation Process if it doesn't already exist.
160159
/// </summary>
161-
private void UpdatePrefabReferences()
160+
private async Task UpdatePrefabReferencesAsync()
162161
{
163-
_ = this.projectReferenceManager.AddPrefabReferenceAsync(new PrefabReference() { ApplicationId = prefabProject.ApplicationId, PrefabId = prefabProject.PrefabId, Version = this.SelectedVersion });
162+
await this.projectReferenceManager.AddPrefabReferenceAsync(new PrefabReference() { ApplicationId = prefabProject.ApplicationId, PrefabId = prefabProject.PrefabId, Version = this.SelectedVersion });
164163
logger.Debug($"Updated prefab refrences file.");
165164
}
166165

167166
/// <summary>
168167
/// A Prefab might use one or more control. When adding a Prefab to an automation process, we need to update the Control References file
169168
/// of the automation process to include details of controls being used by the Prefab.
170169
/// </summary>
171-
private void UpdateControlReferences()
170+
private async Task UpdateControlReferencesAsync()
172171
{
173172
//Load control references file for prefab project
174173
this.prefabFileSystem.Initialize(this.prefabProject, this.SelectedVersion);
@@ -184,7 +183,7 @@ private void UpdateControlReferences()
184183
{
185184
if (!projectControlReferences.HasReference(controlReference.ControlId))
186185
{
187-
_ = this.projectReferenceManager.AddControlReferenceAsync(controlReference);
186+
await this.projectReferenceManager.AddControlReferenceAsync(controlReference);
188187
}
189188
}
190189
logger.Debug($"Updated control refrences file.");
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using Caliburn.Micro;
2+
using System.Threading.Tasks;
23

34
namespace Pixel.Automation.Editor.Core
45
{
@@ -10,19 +11,19 @@ public interface IStagedScreen : IScreen
1011

1112
bool IsValid { get; }
1213

13-
bool TryProcessStage(out string errorDescription);
14+
Task<bool> TryProcessStage();
1415

1516
object GetProcessedResult();
1617

1718
bool Validate();
1819

19-
void OnNextScreen();
20+
Task OnNextScreen();
2021

21-
void OnPreviousScreen();
22+
Task OnPreviousScreen();
2223

23-
void OnCancelled();
24+
Task OnCancelled();
2425

25-
void OnFinished();
26+
Task OnFinished();
2627

2728
}
2829
}
Lines changed: 43 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,56 @@
1-
namespace Pixel.Automation.Editor.Core
2-
{
3-
public abstract class StagedSmartScreen : SmartScreen, IStagedScreen
4-
{
5-
public IStagedScreen NextScreen
6-
{
7-
get; set;
8-
}
9-
10-
public IStagedScreen PreviousScreen
11-
{
12-
get; set;
13-
}
14-
15-
public virtual bool IsValid
16-
{
17-
get
18-
{
19-
return !HasErrors;
20-
}
21-
}
1+
using System.Threading.Tasks;
222

3+
namespace Pixel.Automation.Editor.Core;
234

24-
public abstract object GetProcessedResult();
5+
public abstract class StagedSmartScreen : SmartScreen, IStagedScreen
6+
{
7+
public IStagedScreen NextScreen
8+
{
9+
get; set;
10+
}
2511

26-
public virtual void OnCancelled()
27-
{
28-
29-
}
12+
public IStagedScreen PreviousScreen
13+
{
14+
get; set;
15+
}
3016

31-
public virtual void OnFinished()
17+
public virtual bool IsValid
18+
{
19+
get
3220
{
33-
21+
return !HasErrors;
3422
}
23+
}
3524

36-
public virtual void OnNextScreen()
37-
{
38-
39-
}
25+
public abstract object GetProcessedResult();
4026

41-
public virtual void OnPreviousScreen()
42-
{
43-
44-
}
27+
public virtual async Task OnCancelled()
28+
{
29+
await Task.CompletedTask;
30+
}
31+
32+
public virtual async Task OnFinished()
33+
{
34+
await Task.CompletedTask;
35+
}
4536

46-
public abstract bool TryProcessStage(out string errorDescription);
47-
48-
public virtual bool Validate()
49-
{
50-
return IsValid;
51-
}
37+
public virtual async Task OnNextScreen()
38+
{
39+
await Task.CompletedTask;
40+
}
5241

42+
public virtual async Task OnPreviousScreen()
43+
{
44+
await Task.CompletedTask;
45+
}
5346

47+
public virtual async Task<bool> TryProcessStage()
48+
{
49+
return await Task.FromResult(true);
50+
}
51+
52+
public virtual bool Validate()
53+
{
54+
return IsValid;
5455
}
5556
}

0 commit comments

Comments
 (0)