1
0

39 lines
1.2 KiB
C#

using System;
using System.Reactive;
using System.Reactive.Linq;
using System.Reactive.Threading.Tasks;
using System.Threading.Tasks;
using Flawless.Client.Service;
using ReactiveUI;
using ReactiveUI.SourceGenerators;
using Ursa.ReactiveUIExtension;
namespace Flawless.Client.ViewModels;
public partial class ServerConnectViewModel : ViewModelBase, IScreen, IRoutableViewModel
{
public string? UrlPathSegment { get; } = Guid.NewGuid().ToString();
public IScreen HostScreen { get; }
public RoutingState Router { get; } = new();
public ReactiveCommand<Unit, IRoutableViewModel> GoBackCommand => Router.NavigateBack;
[Reactive]
private string _title = String.Empty;
[ReactiveCommand]
private async ValueTask OpenRepoPageAsync()
{
if (Api.C.RequireRefreshToken()) await Router.NavigateAndReset.Execute(new ServerSetupPageViewModel(this)).ToTask();
}
public ServerConnectViewModel(IScreen hostScreen)
{
HostScreen = hostScreen;
Router.CurrentViewModel
.Select(vm => vm?.GetType().Name.Replace("ViewModel", string.Empty) ?? "Hello")
.BindTo(this, vm => vm.Title);
}
}