@using LANCommander.Server.Services.Enums
@inject SteamCMDService SteamCmdService
@inject IMessageService MessageService
@code {
[Parameter] public string Username { get; set; }
[Parameter] public EventCallback UsernameChanged { get; set; }
[Parameter] public string InstallDirectory { get; set; }
[Parameter] public EventCallback InstallDirectoryChanged { get; set; }
[Parameter] public EventCallback OnAuthenticated { get; set; }
string _rootPath = Path.GetPathRoot(Directory.GetCurrentDirectory());
SteamCmdConnectionStatus _connectionStatus = SteamCmdConnectionStatus.Unknown;
bool _processingLogin = false;
string _password = String.Empty;
MessageConfig _loginMessage = new MessageConfig();
protected override async Task OnInitializedAsync()
{
if (!String.IsNullOrWhiteSpace(Username))
_connectionStatus = await SteamCmdService.GetConnectionStatusAsync(Username);
else
_connectionStatus = SteamCmdConnectionStatus.Unauthenticated;
}
async Task Authenticate()
{
_processingLogin = true;
await InvokeAsync(StateHasChanged);
_loginMessage.Content = "Logging into Steam...";
_loginMessage.Key = Guid.NewGuid().ToString();
_loginMessage.Duration = 0;
MessageService.Loading(_loginMessage);
MessageService.Info("Check the Steam mobile app to confirm this login", 10);
var success = await SteamCmdService.LoginToSteamAsync(Username, _password);
_connectionStatus = await SteamCmdService.GetConnectionStatusAsync(Username);
_processingLogin = false;
await InvokeAsync(StateHasChanged);
if (success)
{
_loginMessage.Content = "Successfully authenticated to Steam!";
_loginMessage.Duration = 3;
MessageService.Success(_loginMessage);
_password = String.Empty;
if (UsernameChanged.HasDelegate)
await UsernameChanged.InvokeAsync(Username);
if (InstallDirectoryChanged.HasDelegate)
await InstallDirectoryChanged.InvokeAsync(InstallDirectory);
if (OnAuthenticated.HasDelegate)
await OnAuthenticated.InvokeAsync();
}
else
{
_loginMessage.Content = "Could not authenticate to Steam!";
_loginMessage.Duration = 5;
MessageService.Error(_loginMessage);
}
}
}