122 lines
2.8 KiB
C#
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;
|
|
}
|
|
}
|