Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 40b81dc

Browse files
committed
Convert to returing async Task rather than IObservable<Unit>
1 parent 4997e02 commit 40b81dc

File tree

3 files changed

+18
-25
lines changed

3 files changed

+18
-25
lines changed

src/GitHub.App/Services/PullRequestService.cs

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -187,28 +187,21 @@ public IObservable<Unit> Push(ILocalRepositoryModel repository)
187187
}
188188

189189
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2201", Justification = "Prototype")]
190-
public IObservable<Unit> SyncSubmodules(ILocalRepositoryModel repository)
190+
public async Task SyncSubmodules(ILocalRepositoryModel repository)
191191
{
192-
return Observable.Defer(async () =>
192+
var exitCode = Where("git");
193+
if (exitCode != 0)
193194
{
194-
var exitCode = Where("git");
195-
if (exitCode != 0)
196-
{
197-
var ex = new ApplicationException(App.Resources.CouldntFindGitOnPath);
198-
return Observable.Throw<Unit>(ex);
199-
}
200-
201-
var output = new StringWriter(CultureInfo.InvariantCulture);
202-
exitCode = await SyncSubmodules(repository.LocalPath, line => output.WriteLine(line));
203-
if (exitCode != 0)
204-
{
205-
var message = output.ToString();
206-
var ex = new ApplicationException(message);
207-
return Observable.Throw<Unit>(ex);
208-
}
195+
throw new ApplicationException(App.Resources.CouldntFindGitOnPath);
196+
}
209197

210-
return Observable.Return(Unit.Default);
211-
});
198+
var output = new StringWriter(CultureInfo.InvariantCulture);
199+
exitCode = await SyncSubmodules(repository.LocalPath, line => output.WriteLine(line));
200+
if (exitCode != 0)
201+
{
202+
var message = output.ToString();
203+
throw new ApplicationException(message);
204+
}
212205
}
213206

214207
// LibGit2Sharp has limited submodule support so shelling out Git.exe for submodule commands.
@@ -228,8 +221,8 @@ async Task<int> SyncSubmodules(string workingDir, Action<string> progress = null
228221
{
229222
await Task.WhenAll(
230223
ReadLinesAsync(process.StandardOutput, progress),
231-
ReadLinesAsync(process.StandardError, progress));
232-
process.WaitForExit();
224+
ReadLinesAsync(process.StandardError, progress),
225+
Task.Run(() => process.WaitForExit()));
233226
return process.ExitCode;
234227
}
235228
}

src/GitHub.App/ViewModels/GitHubPane/PullRequestDetailViewModel.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public PullRequestDetailViewModel(
103103
DoPush);
104104
SubscribeOperationError(Push);
105105

106-
SyncSubmodules = ReactiveCommand.CreateAsyncObservable(
106+
SyncSubmodules = ReactiveCommand.CreateAsyncTask(
107107
this.WhenAnyValue(x => x.UpdateState)
108108
.Cast<UpdateCommandState>()
109109
.Select(x => x != null && x.SyncSubmodulesEnabled),
@@ -676,9 +676,9 @@ IObservable<Unit> DoPush(object unused)
676676
});
677677
}
678678

679-
IObservable<Unit> DoSyncSubmodules(object unused)
679+
Task DoSyncSubmodules(object unused)
680680
{
681-
return pullRequestsService.SyncSubmodules(LocalRepository).Do(_ => usageTracker.IncrementCounter(x => x.NumberOfSyncSubmodules).Forget());
681+
return pullRequestsService.SyncSubmodules(LocalRepository).ContinueWith(_ => usageTracker.IncrementCounter(x => x.NumberOfSyncSubmodules).Forget());
682682
}
683683

684684
class CheckoutCommandState : IPullRequestCheckoutState

src/GitHub.Exports.Reactive/Services/IPullRequestService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ IObservable<IPullRequestModel> CreatePullRequest(IModelService modelService,
5656
/// Sync submodules on the current branch.
5757
/// </summary>
5858
/// <param name="repository">The repository.</param>
59-
IObservable<Unit> SyncSubmodules(ILocalRepositoryModel repository);
59+
Task SyncSubmodules(ILocalRepositoryModel repository);
6060

6161
/// <summary>
6262
/// Calculates the name of a local branch for a pull request avoiding clashes with existing branches.

0 commit comments

Comments
 (0)