- add: Foolproof
This commit is contained in:
@@ -41,7 +41,17 @@ public partial class MainViewModel : ViewModelBase
|
||||
[ObservableProperty] private bool _popup;
|
||||
[ObservableProperty] private ListItemTemplate? _selectedListItem;
|
||||
|
||||
public bool IsLoggedIn => AuthService.SelectedAuth is not null;
|
||||
public string LoginName => AuthService.SelectedAuth?.Login ?? string.Empty;
|
||||
|
||||
public string LoginText => Services.LocalisationService.GetString("auth-current-login-name",
|
||||
new Dictionary<string, object>
|
||||
{
|
||||
{ "login", LoginName }
|
||||
});
|
||||
|
||||
[GenerateProperty] private LocalisationService LocalisationService { get; }
|
||||
[GenerateProperty] private AuthService AuthService { get; }
|
||||
[GenerateProperty] private DebugService DebugService { get; } = default!;
|
||||
[GenerateProperty] private PopupMessageService PopupMessageService { get; } = default!;
|
||||
[GenerateProperty] private ContentService ContentService { get; } = default!;
|
||||
@@ -136,6 +146,12 @@ public partial class MainViewModel : ViewModelBase
|
||||
CurrentPage = obj;
|
||||
}
|
||||
|
||||
public void InvokeChangeAuth()
|
||||
{
|
||||
OnPropertyChanged(nameof(IsLoggedIn));
|
||||
OnPropertyChanged(nameof(LoginText));
|
||||
}
|
||||
|
||||
public void PopupMessage(PopupViewModelBase viewModelBase)
|
||||
{
|
||||
if (CurrentPopup == null)
|
||||
@@ -163,6 +179,11 @@ public partial class MainViewModel : ViewModelBase
|
||||
Popup = true;
|
||||
}
|
||||
|
||||
public void OpenAuthPage()
|
||||
{
|
||||
RequirePage<AccountInfoViewModel>();
|
||||
}
|
||||
|
||||
public void OpenLink()
|
||||
{
|
||||
Helper.OpenBrowser("https://durenko.tatar/nebula");
|
||||
|
||||
@@ -142,6 +142,7 @@ public partial class AccountInfoViewModel : ViewModelBase
|
||||
try
|
||||
{
|
||||
await a();
|
||||
ViewHelperService.GetViewModel<MainViewModel>().InvokeChangeAuth();
|
||||
}
|
||||
catch (AuthException e)
|
||||
{
|
||||
@@ -200,6 +201,7 @@ public partial class AccountInfoViewModel : ViewModelBase
|
||||
{
|
||||
IsLogged = false;
|
||||
AuthService.ClearAuth();
|
||||
ViewHelperService.GetViewModel<MainViewModel>().InvokeChangeAuth();
|
||||
}
|
||||
|
||||
private void UpdateAuthMenu()
|
||||
|
||||
@@ -42,6 +42,9 @@ public partial class AddFavoriteViewModel : PopupViewModelBase
|
||||
{
|
||||
try
|
||||
{
|
||||
if(string.IsNullOrWhiteSpace(IpInput))
|
||||
throw new Exception(LocalisationService.GetString("popup-add-favorite-invalid-ip"));
|
||||
|
||||
var uri = IpInput.ToRobustUrl();
|
||||
FavoriteServerListProvider.AddFavorite(uri);
|
||||
Dispose();
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
using Nebula.Launcher.Services;
|
||||
using Nebula.Launcher.ViewModels.Pages;
|
||||
using Nebula.Launcher.Views.Popup;
|
||||
using Nebula.Shared.Services;
|
||||
using Nebula.Shared.ViewHelper;
|
||||
|
||||
namespace Nebula.Launcher.ViewModels.Popup;
|
||||
|
||||
[ConstructGenerator, ViewModelRegister(typeof(IsLoginCredentialsNullPopupView))]
|
||||
public partial class IsLoginCredentialsNullPopupViewModel : PopupViewModelBase
|
||||
{
|
||||
private ServerEntryModelView _entry;
|
||||
|
||||
[GenerateProperty] public override PopupMessageService PopupMessageService { get; }
|
||||
[GenerateProperty, DesignConstruct] private ViewHelperService ViewHelperService { get; }
|
||||
|
||||
protected override void InitialiseInDesignMode()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void Initialise()
|
||||
{
|
||||
}
|
||||
|
||||
public IsLoginCredentialsNullPopupViewModel WithServerEntry(ServerEntryModelView entryModelView)
|
||||
{
|
||||
_entry = entryModelView;
|
||||
return this;
|
||||
}
|
||||
|
||||
public void Proceed()
|
||||
{
|
||||
_entry.RunInstanceIgnoreAuth();
|
||||
Dispose();
|
||||
}
|
||||
|
||||
public void Cancel()
|
||||
{
|
||||
Dispose();
|
||||
}
|
||||
|
||||
public void GotoAuthPage()
|
||||
{
|
||||
ViewHelperService.GetViewModel<MainViewModel>().RequirePage<AccountInfoViewModel>();
|
||||
Dispose();
|
||||
}
|
||||
|
||||
public override string Title => LocalisationService.GetString("popup-login-credentials-warning");
|
||||
public override bool IsClosable => true;
|
||||
}
|
||||
@@ -47,7 +47,7 @@ public partial class ServerEntryModelView : ViewModelBase, IFilterConsumer, ILis
|
||||
|
||||
public LogPopupModelView CurrLog;
|
||||
public RobustUrl Address { get; private set; }
|
||||
[GenerateProperty] private ConfigurationService ConfigurationService { get; } = default!;
|
||||
[GenerateProperty] private AuthService AuthService { get; }
|
||||
[GenerateProperty] private CancellationService CancellationService { get; } = default!;
|
||||
[GenerateProperty] private DebugService DebugService { get; } = default!;
|
||||
[GenerateProperty] private PopupMessageService PopupMessageService { get; } = default!;
|
||||
@@ -163,11 +163,26 @@ public partial class ServerEntryModelView : ViewModelBase, IFilterConsumer, ILis
|
||||
public void RunInstance()
|
||||
{
|
||||
CurrLog.Clear();
|
||||
Task.Run(RunInstanceAsync);
|
||||
Task.Run(async ()=> await RunInstanceAsync());
|
||||
}
|
||||
|
||||
private async void RunInstanceAsync()
|
||||
public void RunInstanceIgnoreAuth()
|
||||
{
|
||||
CurrLog.Clear();
|
||||
Task.Run(async ()=> await RunInstanceAsync(true));
|
||||
}
|
||||
|
||||
private async Task RunInstanceAsync(bool ignoreLoginCredentials = false)
|
||||
{
|
||||
if (!ignoreLoginCredentials && AuthService.SelectedAuth is null)
|
||||
{
|
||||
var warningContext = ViewHelperService.GetViewModel<IsLoginCredentialsNullPopupViewModel>()
|
||||
.WithServerEntry(this);
|
||||
|
||||
PopupMessageService.Popup(warningContext);
|
||||
return;
|
||||
}
|
||||
|
||||
using var loadingContext = ViewHelperService.GetViewModel<LoadingContextViewModel>();
|
||||
loadingContext.LoadingName = "Loading instance...";
|
||||
((ILoadingHandler)loadingContext).AppendJob();
|
||||
|
||||
Reference in New Issue
Block a user