using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using CommunityToolkit.Mvvm.ComponentModel; using StabilityMatrix.Core.Models.Api; namespace StabilityMatrix.Avalonia.ViewModels.Dialogs; public partial class ModelVersionViewModel : ObservableObject { private readonly HashSet installedModelHashes; [ObservableProperty] private CivitModelVersion modelVersion; [ObservableProperty] private ObservableCollection civitFileViewModels; [ObservableProperty] private bool isInstalled; public ModelVersionViewModel(HashSet installedModelHashes, CivitModelVersion modelVersion) { this.installedModelHashes = installedModelHashes; ModelVersion = modelVersion; IsInstalled = ModelVersion.Files?.Any( file => file is { Type: CivitFileType.Model, Hashes.BLAKE3: not null } && installedModelHashes.Contains(file.Hashes.BLAKE3) ) ?? false; CivitFileViewModels = new ObservableCollection( ModelVersion.Files?.Select(file => new CivitFileViewModel(installedModelHashes, file)) ?? new List() ); } public void RefreshInstallStatus() { IsInstalled = ModelVersion.Files?.Any( file => file is { Type: CivitFileType.Model, Hashes.BLAKE3: not null } && installedModelHashes.Contains(file.Hashes.BLAKE3) ) ?? false; } }