- fix: Message on error

This commit is contained in:
2025-08-17 21:40:31 +03:00
parent b86b65fd66
commit fa68b4bcd5
2 changed files with 57 additions and 34 deletions

View File

@@ -174,6 +174,7 @@ public partial class ServerEntryModelView : ViewModelBase, IFilterConsumer, ILis
private async Task RunInstanceAsync(bool ignoreLoginCredentials = false)
{
_logger.Log("Running instance..." + RealName);
if (!ignoreLoginCredentials && AccountInfoViewModel.Credentials.Value is null)
{
var warningContext = ViewHelperService.GetViewModel<IsLoginCredentialsNullPopupViewModel>()
@@ -183,6 +184,8 @@ public partial class ServerEntryModelView : ViewModelBase, IFilterConsumer, ILis
return;
}
try
{
using var loadingContext = ViewHelperService.GetViewModel<LoadingContextViewModel>();
loadingContext.LoadingName = "Loading instance...";
((ILoadingHandler)loadingContext).AppendJob();
@@ -190,12 +193,21 @@ public partial class ServerEntryModelView : ViewModelBase, IFilterConsumer, ILis
PopupMessageService.Popup(loadingContext);
_currentInstance =
await GameRunnerPreparer.GetGameProcessStartInfoProvider(Address, loadingContext, CancellationService.Token);
_logger.Log("Preparing instance...");
_currentInstance.RegisterLogger(_currentContentLogConsumer);
_currentInstance.RegisterLogger(new DebugLoggerBridge(DebugService.GetLogger($"PROCESS_{Random.Shared.Next(65535)}")));
_currentInstance.OnProcessExited += OnProcessExited;
RunVisible = false;
_currentInstance.Start();
_logger.Log("Starting instance..." + RealName);
}
catch (Exception e)
{
var error = new Exception("Error while attempt run instance", e);
_logger.Error(error);
PopupMessageService.Popup(error);
RunVisible = true;
}
}
private void OnProcessExited(ProcessRunHandler<GameProcessStartInfoProvider> obj)

View File

@@ -2,15 +2,18 @@ using Nebula.Runner.Services;
using Nebula.Shared;
using Nebula.Shared.Models;
using Nebula.Shared.Services;
using Nebula.Shared.Services.Logging;
using Nebula.Shared.Utils;
using Robust.LoaderApi;
namespace Nebula.Runner;
[ServiceRegister]
public sealed class App(RunnerService runnerService, ContentService contentService)
public sealed class App(RunnerService runnerService, ContentService contentService, DebugService debugService)
: IRedialApi
{
public ILogger logger = debugService.GetLogger("Runner");
public void Redial(Uri uri, string text = "")
{
}
@@ -22,6 +25,8 @@ public sealed class App(RunnerService runnerService, ContentService contentServi
var url = urlraw.ToRobustUrl();
try
{
using var cancelTokenSource = new CancellationTokenSource();
var buildInfo = await contentService.GetBuildInfo(url, cancelTokenSource.Token);
@@ -46,4 +51,10 @@ public sealed class App(RunnerService runnerService, ContentService contentServi
await runnerService.Run(args.ToArray(), buildInfo, this, new ConsoleLoadingHandler(), cancelTokenSource.Token);
}
catch (Exception e)
{
logger.Error(e);
throw;
}
}
}