using System; using System.Collections.ObjectModel; using Flawless.Client.Remote; using ReactiveUI.SourceGenerators; namespace Flawless.Client.Models; public partial class RepositoryModel : ReactiveModel { public static string GetStandaloneName(string name, string ownerName) { return $"{ownerName}/{name}"; } [Reactive] private string _standaloneName; [Reactive] private string _ownerName; [Reactive] private string _name; [Reactive] private bool _archived; [Reactive] private string _description; [Reactive] private bool _ownByCurrentUser; [Reactive] private bool _isDownloaded; public ObservableCollection Members { get; } = new(); public ObservableCollection Commits { get; } = new(); public ObservableCollection Depots { get; } = new(); public ObservableCollection Locks { get; } = new(); public enum RepositoryRole : byte { Guest = 0, Reporter = 1, Developer = 2, Owner = 3, } public partial class Member : ReactiveModel { [Reactive] private string _username; [Reactive] private RepositoryRole _role; [Reactive] private bool _canEdit; } public partial class Commit : ReactiveModel { [Reactive] private Guid _commitId; [Reactive] private string _author; [Reactive] private DateTime _committedOn; [Reactive] private string _message; [Reactive] private Guid _depotId; } public partial class Lock : ReactiveModel { [Reactive] private string _path; [Reactive] private string _ownerName; } public partial class Depot : ReactiveModel { [Reactive] private Guid _depotId; [Reactive] private long _length; public ObservableCollection Dependencies { get; } = new(); } }