1
0
2025-05-21 12:56:52 +08:00

122 lines
2.8 KiB
C#

using System;
using System.Collections.ObjectModel;
using DynamicData.Binding;
using Flawless.Client.Remote;
using ReactiveUI.SourceGenerators;
namespace Flawless.Client.Models;
public enum WebhookEventType
{
Push,
IssueCreated,
IssueUpdate
}
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<Member> Members { get; } = new();
public ObservableCollection<Commit> Commits { get; } = new();
public ObservableCollection<Webhook> Webhooks { get; } = new();
public ObservableCollection<Issue> Issues { get; } = new();
public enum RepositoryRole : byte
{
Guest = 0,
Reporter = 1,
Developer = 2,
Owner = 3,
}
public partial class Webhook : ReactiveModel
{
[Reactive] private int _id;
[Reactive] private string _targetUrl;
[Reactive] private bool _active;
[Reactive] private DateTime _createdAt;
[Reactive] private WebhookEventType _eventType;
}
public partial class Issue : ReactiveModel
{
[Reactive] private int _id;
[Reactive] private string _title;
[Reactive] private string? _description;
[Reactive] private string _author;
[Reactive] private DateTime _createdAt;
[Reactive] private DateTime? _lastUpdatedAt;
[Reactive] private bool _closed;
public ObservableCollection<string> Tags { get; } = new();
public ObservableCollection<Comment> Comments { get; } = new();
}
public partial class Comment : ReactiveModel
{
[Reactive] private int _id;
[Reactive] private string _content;
[Reactive] private string _author;
[Reactive] private DateTime _createdAt;
[Reactive] private int? _replyTo;
}
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;
}
}