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 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); } }