added timeline item events (#51)

This commit is contained in:
Shreyas Thirumalai 2020-04-08 18:09:29 +05:30 committed by GitHub
parent 99ef399280
commit cf909b8aba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 214 additions and 10 deletions

View File

@ -172,6 +172,13 @@ __typename
}
milestoneTitle
}
... on DemilestonedEvent {
createdAt
actor {
login
}
milestoneTitle
}
... on LockedEvent {
createdAt
actor {
@ -190,9 +197,14 @@ __typename
actor {
login
}
user {
assignee
}
... on UnassignedEvent {
createdAt
actor {
login
}
assignee
}
... on SubscribedEvent {
createdAt
@ -200,6 +212,12 @@ __typename
login
}
}
... on UnsubscribedEvent {
createdAt
actor {
login
}
}
... on MentionedEvent {
createdAt
actor {
@ -212,6 +230,18 @@ __typename
login
}
}
... on TransferredEvent {
createdAt
actor {
login
}
fromRepository {
owner {
login
}
name
}
}
''';
if (isPullRequest) {
@ -227,6 +257,57 @@ __typename
}
}
}
... on DeployedEvent {
createdAt
actor {
login
}
pullRequest {
headRef {
name
}
}
}
... on DeploymentEnvironmentChangedEvent {
createdAt
actor {
login
}
deploymentStatus {
deployment {
environment
}
description
}
}
... on HeadRefRestoredEvent {
createdAt
actor {
login
}
pullRequest {
headRef {
name
}
}
}
... on BaseRefForcePushedEvent {
createdAt
actor {
login
}
pullRequest {
baseRef {
name
}
}
beforeCommit {
oid
}
afterCommit {
oid
}
}
... on HeadRefForcePushedEvent {
createdAt
actor {
@ -255,6 +336,29 @@ __typename
}
}
}
... on ReviewRequestRemovedEvent {
createdAt
actor {
login
}
requestedReviewer {
... on User {
login
}
}
}
... on ReviewDismissedEvent {
createdAt
actor {
login
}
dismissalMessage
pullRequest {
author {
login
}
}
}
... on PullRequestReview {
createdAt
state
@ -534,4 +638,4 @@ fragment ReactableParts on Reactable {
},
);
}
}
}

View File

@ -134,13 +134,30 @@ class TimelineItem extends StatelessWidget {
p: p,
);
case 'UnsubscribedEvent':
return defaultItem; // TODO:
return TimelineEventItem(
actor: p['actor']['login'],
textSpan: TextSpan(text: ' unsubscribed from this issue '),
p: p,
);
case 'ReferencedEvent':
// TODO: isCrossRepository
if (p['commit'] == null) {
return Container();
}
if(p['isCrossRepository']) {
return TimelineEventItem(
actor: p['actor']['login'],
iconData: Octicons.bookmark,
textSpan: TextSpan(children: [
TextSpan(text: ' referenced this pull request from commit '),
TextSpan(text: p['commit']['oid'].substring(0, 8)),
TextSpan(text: ' from ' + p['commitRepository']['name']),
]),
p: p,
);
}
return TimelineEventItem(
actor: p['actor']['login'],
iconData: Octicons.bookmark,
@ -156,12 +173,22 @@ class TimelineItem extends StatelessWidget {
iconData: Octicons.key,
textSpan: TextSpan(children: [
TextSpan(text: ' assigned this to '),
TextSpan(text: p['user']['login'])
// TextSpan(text: p['user']['login'])
// User field is depracated. Assignee should be used
TextSpan(text: p['assignee']),
]),
p: p,
);
case 'UnassignedEvent':
return defaultItem; // TODO:
return TimelineEventItem(
actor: p['actor']['login'],
iconData: Octicons.key,
textSpan: TextSpan(children: [
TextSpan(text: ' unassigned this from '),
TextSpan(text: p['assignee']),
]),
p: p,
);
case 'LabeledEvent':
return TimelineEventItem(
actor: p['actor']['login'],
@ -197,7 +224,16 @@ class TimelineItem extends StatelessWidget {
p: p,
);
case 'DemilestonedEvent':
return defaultItem; // TODO:
return TimelineEventItem(
actor: p['actor']['login'],
iconData: Octicons.milestone,
textSpan: TextSpan(children: [
TextSpan(text: ' removed this from '),
TextSpan(text: p['milestoneTitle']),
TextSpan(text: ' milestone'),
]),
p: p,
);
case 'RenamedTitleEvent':
return TimelineEventItem(
actor: p['actor']['login'],
@ -234,7 +270,14 @@ class TimelineItem extends StatelessWidget {
// issue only types
case 'TransferredEvent':
return defaultItem; // TODO:
return TimelineEventItem(
actor: p['actor']['login'],
textSpan: TextSpan(
children: [
TextSpan(text: ' transferred this issue from ' + p['fromRepository']['name'])
],
),
);
// pull request only types
case 'CommitCommentThread':
@ -276,8 +319,15 @@ class TimelineItem extends StatelessWidget {
textSpan: TextSpan(text: ' pinned this issue '),
);
case 'DeployedEvent':
return TimelineEventItem(
actor: p['actor']['login'],
textSpan: TextSpan(text: ' deployed the pull request ' + p['pullRequest']['name']),
);
case 'DeploymentEnvironmentChangedEvent':
return defaultItem; // TODO:
return TimelineEventItem(
actor: p['actor']['login'],
textSpan: TextSpan(text: ' changed the deployment environment to ' + p['deploymentStatus']['deployment']['environment']),
);
case 'HeadRefDeletedEvent':
return TimelineEventItem(
actor: p['actor']['login'],
@ -290,6 +340,18 @@ class TimelineItem extends StatelessWidget {
p: p,
);
case 'HeadRefRestoredEvent':
return TimelineEventItem(
actor: p['actor']['login'],
textSpan: TextSpan(
children: [
TextSpan(text: ' restored the '),
WidgetSpan(
child: PrimerBranchName(p['pullRequest']['headRef']['name'])
),
TextSpan(text: ' branch')
]
),
);
case 'HeadRefForcePushedEvent':
return TimelineEventItem(
iconData: Octicons.repo_force_push,
@ -314,7 +376,28 @@ class TimelineItem extends StatelessWidget {
p: p,
);
case 'BaseRefForcePushedEvent':
return defaultItem; // TODO:
return TimelineEventItem(
iconData: Octicons.repo_force_push,
actor: p['actor']['login'],
textSpan: TextSpan(
children: [
TextSpan(text: ' force-pushed the '),
WidgetSpan(
child: PrimerBranchName(p['pullRequest']['baseRef']['name'])),
TextSpan(text: ' branch from '),
TextSpan(
text: (p['beforeCommit']['oid'] as String).substring(0, 7),
style: TextStyle(color: theme.palette.primary),
),
TextSpan(text: ' to '),
TextSpan(
text: (p['afterCommit']['oid'] as String).substring(0, 7),
style: TextStyle(color: theme.palette.primary),
),
],
),
p: p,
);
case 'ReviewRequestedEvent':
return TimelineEventItem(
iconData: Octicons.eye,
@ -326,8 +409,25 @@ class TimelineItem extends StatelessWidget {
p: p,
);
case 'ReviewRequestRemovedEvent':
return TimelineEventItem(
iconData: Octicons.eye,
actor: p['actor']['login'],
textSpan: TextSpan(children: [
TextSpan(text: ' removed '),
createUserSpan(context, p['requestedReviewer']['login']),
TextSpan(text: ' from the review request '),
]),
p: p,
);
case 'ReviewDismissedEvent':
return defaultItem; // TODO:
return TimelineEventItem(
iconData: Octicons.eye,
actor: p['actor']['login'],
textSpan: TextSpan(children: [
TextSpan(text: ' dismissed the pull request review requested by '),
createUserSpan(context, p['pullRequest']['author']['login'])
]),
);
default:
return defaultItem;
}