git-touch-android-ios-app/lib/models/github.dart

379 lines
9.5 KiB
Dart
Raw Normal View History

2019-12-08 07:21:14 +01:00
import 'package:git_touch/utils/utils.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:tuple/tuple.dart';
2019-12-12 07:02:48 +01:00
part 'github.g.dart';
2019-12-08 07:21:14 +01:00
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubEvent {
2022-09-21 18:28:21 +02:00
GithubEvent();
factory GithubEvent.fromJson(Map<String, dynamic> json) =>
_$GithubEventFromJson(json);
2021-05-16 09:16:35 +02:00
GithubEventUser? actor;
String? type;
GithubEventRepo? repo;
DateTime? createdAt;
GithubEventPayload? payload;
2019-12-08 07:21:14 +01:00
2021-05-16 09:16:35 +02:00
Tuple2<String, String>? _repo;
2019-12-08 07:21:14 +01:00
String get repoOwner {
2022-09-06 18:28:12 +02:00
_repo ??= parseRepositoryFullName(repo!.name!);
2021-05-16 09:16:35 +02:00
return _repo!.item1;
2019-12-08 07:21:14 +01:00
}
String get repoName {
2022-09-06 18:28:12 +02:00
_repo ??= parseRepositoryFullName(repo!.name!);
2021-05-16 09:16:35 +02:00
return _repo!.item2;
2019-12-08 07:21:14 +01:00
}
}
@JsonSerializable(fieldRename: FieldRename.snake)
2019-12-20 13:52:49 +01:00
class GithubEventUser {
GithubEventUser();
2019-12-08 07:21:14 +01:00
2019-12-20 13:52:49 +01:00
factory GithubEventUser.fromJson(Map<String, dynamic> json) =>
_$GithubEventUserFromJson(json);
2022-09-21 18:28:21 +02:00
String? login;
String? avatarUrl;
2019-12-08 07:21:14 +01:00
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubEventRepo {
GithubEventRepo();
factory GithubEventRepo.fromJson(Map<String, dynamic> json) =>
_$GithubEventRepoFromJson(json);
2022-09-21 18:28:21 +02:00
String? name;
2019-12-08 07:21:14 +01:00
}
2019-12-12 07:02:48 +01:00
2019-12-20 13:52:49 +01:00
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubEventPayload {
2022-09-21 18:28:21 +02:00
GithubEventPayload();
factory GithubEventPayload.fromJson(Map<String, dynamic> json) =>
_$GithubEventPayloadFromJson(json);
2021-05-16 09:16:35 +02:00
GithubEventIssue? issue;
GithubEventIssue? pullRequest;
GithubEventComment? comment;
GithubEventRelease? release;
String? action;
String? ref;
String? refType;
String? before;
String? head;
List<GithubEventCommit>? commits;
Map<String, dynamic>? forkee;
List<GithubPagesItem>? pages;
GithubSecurityItem? securityAdvisory;
GithubAlertItem? alert;
GithubProjectItem? project;
GithubProjectColumnItem? projectColumn;
GithubInstallationRepositoriesItem? installation;
GithubCheckrunItem? checkRun;
GithubCheckSuiteItem? checkSuite;
GithubContentReferenceItem? contentReference;
2019-12-20 13:52:49 +01:00
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubEventIssue {
2022-09-21 18:28:21 +02:00
GithubEventIssue();
factory GithubEventIssue.fromJson(Map<String, dynamic> json) =>
_$GithubEventIssueFromJson(json);
2021-05-16 09:16:35 +02:00
String? title;
GithubEventUser? user;
int? number;
String? body;
2019-12-20 13:52:49 +01:00
dynamic pullRequest;
2021-05-16 09:16:35 +02:00
String? state;
int? comments;
bool? merged;
DateTime? createdAt;
2019-12-20 15:41:38 +01:00
bool get isPullRequestComment => pullRequest != null;
2019-12-20 13:52:49 +01:00
}
2019-12-25 03:46:56 +01:00
@JsonSerializable(fieldRename: FieldRename.snake)
2019-12-20 13:52:49 +01:00
class GithubEventComment {
GithubEventComment();
factory GithubEventComment.fromJson(Map<String, dynamic> json) =>
_$GithubEventCommentFromJson(json);
2022-09-21 18:28:21 +02:00
String? body;
GithubEventUser? user;
String? commitId;
String? htmlUrl;
2019-12-20 13:52:49 +01:00
}
2019-12-25 03:46:56 +01:00
@JsonSerializable(fieldRename: FieldRename.snake)
2019-12-20 13:52:49 +01:00
class GithubEventCommit {
GithubEventCommit();
factory GithubEventCommit.fromJson(Map<String, dynamic> json) =>
_$GithubEventCommitFromJson(json);
2022-09-21 18:28:21 +02:00
String? sha;
String? message;
2019-12-20 13:52:49 +01:00
}
2019-12-25 03:46:56 +01:00
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubEventRelease {
GithubEventRelease();
factory GithubEventRelease.fromJson(Map<String, dynamic> json) =>
_$GithubEventReleaseFromJson(json);
2022-09-21 18:28:21 +02:00
String? htmlUrl;
String? tagName;
2019-12-25 03:46:56 +01:00
}
2019-12-26 11:00:36 +01:00
// Notification
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubNotificationItem {
2022-09-21 18:28:21 +02:00
GithubNotificationItem();
factory GithubNotificationItem.fromJson(Map<String, dynamic> json) =>
_$GithubNotificationItemFromJson(json);
2021-05-16 09:16:35 +02:00
String? id;
GithubNotificationItemSubject? subject;
DateTime? updatedAt;
GithubNotificationItemRepo? repository;
bool? unread;
2019-12-26 11:00:36 +01:00
@JsonKey(ignore: true)
2021-05-16 09:16:35 +02:00
String? state;
2019-12-26 11:00:36 +01:00
String get key => '_$hashCode';
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubNotificationItemSubject {
2022-09-21 18:28:21 +02:00
GithubNotificationItemSubject();
factory GithubNotificationItemSubject.fromJson(Map<String, dynamic> json) =>
_$GithubNotificationItemSubjectFromJson(json);
2021-05-16 09:16:35 +02:00
String? title;
String? type;
String? url;
2019-12-26 11:00:36 +01:00
2021-05-16 09:16:35 +02:00
int? _number;
int? get number {
2022-09-06 18:28:12 +02:00
_number ??= int.parse(url?.split('/').last ?? '0');
2019-12-26 11:00:36 +01:00
return _number;
}
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubNotificationItemRepo {
2022-09-21 18:28:21 +02:00
GithubNotificationItemRepo();
factory GithubNotificationItemRepo.fromJson(Map<String, dynamic> json) =>
_$GithubNotificationItemRepoFromJson(json);
2021-05-16 09:16:35 +02:00
String? fullName;
2019-12-26 11:00:36 +01:00
2021-05-16 09:16:35 +02:00
Tuple2<String, String>? _repo;
2019-12-26 11:00:36 +01:00
String get owner {
2022-09-06 18:28:12 +02:00
_repo ??= parseRepositoryFullName(fullName!);
2021-05-16 09:16:35 +02:00
return _repo!.item1;
2019-12-26 11:00:36 +01:00
}
String get name {
2022-09-06 18:28:12 +02:00
_repo ??= parseRepositoryFullName(fullName!);
2021-05-16 09:16:35 +02:00
return _repo!.item2;
2019-12-26 11:00:36 +01:00
}
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubTreeItem {
2022-09-21 18:28:21 +02:00
GithubTreeItem();
factory GithubTreeItem.fromJson(Map<String, dynamic> json) =>
_$GithubTreeItemFromJson(json);
2021-05-16 09:16:35 +02:00
String? name;
String? path;
int? size;
String? type;
String? downloadUrl;
String? content;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubPagesItem {
GithubPagesItem();
2020-04-16 05:36:48 +02:00
factory GithubPagesItem.fromJson(Map<String, dynamic> json) =>
_$GithubPagesItemFromJson(json);
2022-09-21 18:28:21 +02:00
String? pageName;
String? title;
String? action;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubSecurityItem {
GithubSecurityItem();
2020-04-16 05:36:48 +02:00
factory GithubSecurityItem.fromJson(Map<String, dynamic> json) =>
_$GithubSecurityItemFromJson(json);
2022-09-21 18:28:21 +02:00
String? summary;
String? description;
String? severity;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubAlertItem {
GithubAlertItem();
factory GithubAlertItem.fromJson(Map<String, dynamic> json) =>
_$GithubAlertItemFromJson(json);
2022-09-21 18:28:21 +02:00
String? affectedPackageName;
String? affectedRange;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubProjectItem {
2022-09-21 18:28:21 +02:00
GithubProjectItem();
factory GithubProjectItem.fromJson(Map<String, dynamic> json) =>
_$GithubProjectItemFromJson(json);
2021-05-16 09:16:35 +02:00
String? name;
String? state;
String? body;
String? htmlUrl;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubProjectColumnItem {
GithubProjectColumnItem();
factory GithubProjectColumnItem.fromJson(Map<String, dynamic> json) =>
2020-04-16 05:36:48 +02:00
_$GithubProjectColumnItemFromJson(json);
2022-09-21 18:28:21 +02:00
String? htmlUrl;
String? columnsUrl;
String? name;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubInstallationRepositoriesItem {
GithubInstallationRepositoriesItem();
2020-04-16 05:36:48 +02:00
factory GithubInstallationRepositoriesItem.fromJson(
Map<String, dynamic> json) =>
_$GithubInstallationRepositoriesItemFromJson(json);
2022-09-21 18:28:21 +02:00
List<GithubNotificationItemRepo>? repositoriesAdded, repositoriesRemoved;
String? repositoriesSelection;
int? id;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubCheckrunItem {
GithubCheckrunItem();
factory GithubCheckrunItem.fromJson(Map<String, dynamic> json) =>
_$GithubCheckrunItemFromJson(json);
2022-09-21 18:28:21 +02:00
String? status;
String? name;
int? id;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubCheckSuiteItem {
GithubCheckSuiteItem();
2020-04-16 05:36:48 +02:00
factory GithubCheckSuiteItem.fromJson(Map<String, dynamic> json) =>
_$GithubCheckSuiteItemFromJson(json);
2022-09-21 18:28:21 +02:00
String? status;
String? conclusion;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubContentReferenceItem {
GithubContentReferenceItem();
factory GithubContentReferenceItem.fromJson(Map<String, dynamic> json) =>
_$GithubContentReferenceItemFromJson(json);
2022-09-21 18:28:21 +02:00
int? id;
String? reference;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubContributorItem {
2022-09-21 18:28:21 +02:00
GithubContributorItem();
factory GithubContributorItem.fromJson(Map<String, dynamic> json) =>
_$GithubContributorItemFromJson(json);
2021-05-16 09:16:35 +02:00
int? id;
String? login;
String? avatarUrl;
String? htmlUrl;
int? contributions;
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubUserOrganizationItem {
2022-09-21 18:28:21 +02:00
GithubUserOrganizationItem();
factory GithubUserOrganizationItem.fromJson(Map<String, dynamic> json) =>
_$GithubUserOrganizationItemFromJson(json);
2021-05-16 09:16:35 +02:00
int? id;
String? login;
String? avatarUrl;
String? description;
String? url;
}
2020-04-30 18:04:24 +02:00
@JsonSerializable(fieldRename: FieldRename.snake)
class GistFiles {
GistFiles({
this.filename,
this.size,
this.rawUrl,
this.type,
this.language,
this.truncated,
this.content,
});
2022-09-21 18:28:21 +02:00
factory GistFiles.fromJson(Map<String, dynamic> json) =>
_$GistFilesFromJson(json);
2021-05-16 09:16:35 +02:00
String? filename;
int? size;
String? rawUrl;
String? type;
String? language;
bool? truncated;
String? content;
}
2020-04-30 18:04:24 +02:00
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubGistsItem {
2022-09-21 18:28:21 +02:00
GithubGistsItem();
factory GithubGistsItem.fromJson(Map<String, dynamic> json) =>
_$GithubGistsItemFromJson(json);
2021-05-16 09:16:35 +02:00
String? id;
String? description;
bool? public;
Map<String, GistFiles>? files;
GithubEventUser? owner;
List<GistFiles> get fileNames {
2022-09-24 07:41:46 +02:00
final filenames = <GistFiles>[];
files!.forEach((key, value) {
filenames.add(value);
});
return filenames;
}
2021-05-16 09:16:35 +02:00
DateTime? createdAt;
DateTime? updatedAt;
2020-04-30 18:04:24 +02:00
}
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubFilesItem {
2022-09-21 18:28:21 +02:00
GithubFilesItem();
factory GithubFilesItem.fromJson(Map<String, dynamic> json) =>
_$GithubFilesItemFromJson(json);
2021-05-16 09:16:35 +02:00
String? filename;
String? status;
int? additions;
int? deletions;
int? changes;
String? patch;
2020-04-30 18:04:24 +02:00
}
2020-05-12 15:03:13 +02:00
@JsonSerializable(fieldRename: FieldRename.snake)
class GithubComparisonItem {
2022-09-21 18:28:21 +02:00
GithubComparisonItem();
factory GithubComparisonItem.fromJson(Map<String, dynamic> json) =>
_$GithubComparisonItemFromJson(json);
2021-05-16 09:16:35 +02:00
List<GithubFilesItem>? files;
String? status;
int? aheadBy;
int? behindBy;
2020-05-12 15:03:13 +02:00
}