in src/dotnet/RiderPlugin.UnrealLink/PluginInstaller/UnrealProjectsRefresher.cs [30:65]
public static void RefreshProjects(Lifetime parentLifetime,
[NotNull] ISolution solution,
[CanBeNull] UnrealPluginInstallInfo.InstallDescription installDescription,
[CanBeNull] VirtualFileSystemPath engineRoot)
{
parentLifetime.UsingNestedAsync(async lt =>
{
var lifetimeDefinition = lt.CreateNested();
var lifetime = lifetimeDefinition.Lifetime;
var unrealHost = solution.GetComponent<UnrealHost>();
lifetime.Bracket(
() => unrealHost.myModel.RefreshInProgress.Value = true,
() => unrealHost.myModel.RefreshInProgress.Value = false
);
var task = BackgroundProgressBuilder.Create()
.AsCancelable(() =>
{
unrealHost.myModel.RiderLinkInstallMessage(
new InstallMessage(Strings.RefreshingProjectsFilesHasBeenCancelled_Text, ContentType.Error));
lifetimeDefinition.Terminate();
})
.WithHeader(Strings.RefreshingProjectFiles_Text);
solution.GetComponent<BackgroundProgressManager>().AddNewTask(lifetime, task);
var uprojectFile = installDescription?.UprojectPath;
if (uprojectFile.IsNullOrEmpty())
{
var cppUe4SolutionDetector = solution.GetComponent<ICppUE4SolutionDetector>();
uprojectFile = cppUe4SolutionDetector.GetUProjectPath();
}
await lifetime.StartBackground(() => RegenerateProjectFiles(lifetime, solution, unrealHost, engineRoot, uprojectFile));
});
}