using System; using System.Collections.ObjectModel; using System.Reactive; using System.Reactive.Linq; using System.Threading.Tasks; using Avalonia.ReactiveUI; using Flawless.Client.Models; using Flawless.Client.Service; using Flawless.Communication.Response; using Flawless.Communication.Shared; using ReactiveUI; using ReactiveUI.SourceGenerators; namespace Flawless.Client.ViewModels; public partial class HomeViewModel : ViewModelBase, IRoutableViewModel { public string? UrlPathSegment { get; } = Guid.NewGuid().ToString(); public IScreen HostScreen { get; } public ObservableCollection Repositories { get; } = new(new[] { new RepositoryHomePageModel( "cardidi", "test1", "Abc", false, true, ""), }); [Reactive] private RepositoryHomePageModel? _selectedRepository; [Reactive] private string _serverFriendlyName; public HomeViewModel(IScreen hostScreen) { HostScreen = hostScreen; Api.Current.ServerUrl.SubscribeOn(AvaloniaScheduler.Instance) .Subscribe(v => ServerFriendlyName = v ?? "Unknown Server"); } [ReactiveCommand] private async Task RefreshRepositoriesAsync() { } [ReactiveCommand] private async Task CreateRepositoryAsync() { } [ReactiveCommand] private async Task OpenRepositoryAsync() { } [ReactiveCommand] private async Task DeleteRepositoryAsync() { } }