- 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) private async Task RunInstanceAsync(bool ignoreLoginCredentials = false)
{ {
_logger.Log("Running instance..." + RealName);
if (!ignoreLoginCredentials && AccountInfoViewModel.Credentials.Value is null) if (!ignoreLoginCredentials && AccountInfoViewModel.Credentials.Value is null)
{ {
var warningContext = ViewHelperService.GetViewModel<IsLoginCredentialsNullPopupViewModel>() var warningContext = ViewHelperService.GetViewModel<IsLoginCredentialsNullPopupViewModel>()
@@ -182,20 +183,31 @@ public partial class ServerEntryModelView : ViewModelBase, IFilterConsumer, ILis
PopupMessageService.Popup(warningContext); PopupMessageService.Popup(warningContext);
return; return;
} }
using var loadingContext = ViewHelperService.GetViewModel<LoadingContextViewModel>();
loadingContext.LoadingName = "Loading instance...";
((ILoadingHandler)loadingContext).AppendJob();
PopupMessageService.Popup(loadingContext); try
_currentInstance = {
await GameRunnerPreparer.GetGameProcessStartInfoProvider(Address, loadingContext, CancellationService.Token); using var loadingContext = ViewHelperService.GetViewModel<LoadingContextViewModel>();
loadingContext.LoadingName = "Loading instance...";
_currentInstance.RegisterLogger(_currentContentLogConsumer); ((ILoadingHandler)loadingContext).AppendJob();
_currentInstance.RegisterLogger(new DebugLoggerBridge(DebugService.GetLogger($"PROCESS_{Random.Shared.Next(65535)}")));
_currentInstance.OnProcessExited += OnProcessExited; PopupMessageService.Popup(loadingContext);
RunVisible = false; _currentInstance =
_currentInstance.Start(); 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) private void OnProcessExited(ProcessRunHandler<GameProcessStartInfoProvider> obj)

View File

@@ -2,15 +2,18 @@ using Nebula.Runner.Services;
using Nebula.Shared; using Nebula.Shared;
using Nebula.Shared.Models; using Nebula.Shared.Models;
using Nebula.Shared.Services; using Nebula.Shared.Services;
using Nebula.Shared.Services.Logging;
using Nebula.Shared.Utils; using Nebula.Shared.Utils;
using Robust.LoaderApi; using Robust.LoaderApi;
namespace Nebula.Runner; namespace Nebula.Runner;
[ServiceRegister] [ServiceRegister]
public sealed class App(RunnerService runnerService, ContentService contentService) public sealed class App(RunnerService runnerService, ContentService contentService, DebugService debugService)
: IRedialApi : IRedialApi
{ {
public ILogger logger = debugService.GetLogger("Runner");
public void Redial(Uri uri, string text = "") public void Redial(Uri uri, string text = "")
{ {
} }
@@ -21,29 +24,37 @@ public sealed class App(RunnerService runnerService, ContentService contentServi
var urlraw = Environment.GetEnvironmentVariable("GAME_URL") ?? "ss14://localhost"; var urlraw = Environment.GetEnvironmentVariable("GAME_URL") ?? "ss14://localhost";
var url = urlraw.ToRobustUrl(); var url = urlraw.ToRobustUrl();
using var cancelTokenSource = new CancellationTokenSource();
var buildInfo = await contentService.GetBuildInfo(url, cancelTokenSource.Token);
var args = new List<string>
{
"--username", login,
"--cvar", "launch.launcher=true"
};
var connectionString = url.ToString();
if (!string.IsNullOrEmpty(buildInfo.BuildInfo.ConnectAddress))
connectionString = buildInfo.BuildInfo.ConnectAddress;
args.Add("--launcher"); try
{
using var cancelTokenSource = new CancellationTokenSource();
var buildInfo = await contentService.GetBuildInfo(url, cancelTokenSource.Token);
args.Add("--connect-address");
args.Add(connectionString);
args.Add("--ss14-address"); var args = new List<string>
args.Add(url.ToString()); {
"--username", login,
"--cvar", "launch.launcher=true"
};
await runnerService.Run(args.ToArray(), buildInfo, this, new ConsoleLoadingHandler(), cancelTokenSource.Token); var connectionString = url.ToString();
if (!string.IsNullOrEmpty(buildInfo.BuildInfo.ConnectAddress))
connectionString = buildInfo.BuildInfo.ConnectAddress;
args.Add("--launcher");
args.Add("--connect-address");
args.Add(connectionString);
args.Add("--ss14-address");
args.Add(url.ToString());
await runnerService.Run(args.ToArray(), buildInfo, this, new ConsoleLoadingHandler(), cancelTokenSource.Token);
}
catch (Exception e)
{
logger.Error(e);
throw;
}
} }
} }