1
0
mirror of https://github.com/git-touch/git-touch synced 2025-01-31 08:04:51 +01:00

feat: add tips for unimplemented event types

This commit is contained in:
Rongjian Zhang 2019-02-07 17:39:27 +08:00
parent cbd0d9aa60
commit 374a39c420

View File

@ -6,9 +6,6 @@ import '../screens/user.dart';
import '../utils/utils.dart'; import '../utils/utils.dart';
import 'avatar.dart'; import 'avatar.dart';
/// Events types:
///
/// https://developer.github.com/v3/activity/events/types/#event-types--payloads
class EventItem extends StatelessWidget { class EventItem extends StatelessWidget {
final Event event; final Event event;
EventItem(this.event); EventItem(this.event);
@ -62,20 +59,13 @@ class EventItem extends StatelessWidget {
child: RichText( child: RichText(
text: TextSpan( text: TextSpan(
style: TextStyle( style: TextStyle(
color: Colors.black, color: Colors.black, height: 1.3, fontSize: 15),
height: 1.3,
fontSize: 15,
),
children: _spans, children: _spans,
), ),
), ),
), ),
Padding(padding: EdgeInsets.only(left: 8)), Padding(padding: EdgeInsets.only(left: 8)),
Icon( Icon(iconData, color: Colors.black45, size: 22),
iconData,
color: CupertinoColors.inactiveGray,
size: 22,
),
], ],
), ),
detail == null detail == null
@ -101,66 +91,50 @@ class EventItem extends StatelessWidget {
@override @override
build(BuildContext context) { build(BuildContext context) {
var defaultItem = _buildItem(
context: context,
spans: [TextSpan(text: ' This is a ' + event.type)],
iconData: Octicons.octoface,
detail: 'Woops, ${event.type} not implemented yet',
);
// all events types here:
// https://developer.github.com/v3/activity/events/types/#event-types--payloads
switch (event.type) { switch (event.type) {
case 'IssuesEvent': case 'CheckRunEvent':
case 'CheckSuiteEvent':
case 'CommitCommentEvent':
case 'ContentReferenceEvent':
case 'CreateEvent':
case 'DeleteEvent':
case 'DeploymentEvent':
case 'DeploymentStatusEvent':
case 'DownloadEvent':
case 'FollowEvent':
// TODO:
return defaultItem;
case 'ForkEvent':
return _buildItem( return _buildItem(
context: context, context: context,
spans: [ spans: [
TextSpan(text: ' ${event.payload['action']} issue '), TextSpan(text: ' forked '),
_buildIssue(context), createRepoLinkSpan(
TextSpan(text: ' at '), context,
event.payload['forkee']['owner']['login'],
event.payload['forkee']['name']),
TextSpan(text: ' from '),
_buildRepo(context), _buildRepo(context),
], ],
iconData: Octicons.issue_opened, iconData: Octicons.repo_forked,
detail: event.payload['issue']['title'],
);
case 'PushEvent':
return _buildItem(
context: context,
spans: [
TextSpan(text: ' pushed to '),
TextSpan(
text: event.payload['ref'],
style: TextStyle(color: CupertinoColors.activeBlue),
),
TextSpan(text: ' at '),
_buildRepo(context),
TextSpan(text: '')
],
iconData: Octicons.repo_push,
);
case 'PullRequestEvent':
return _buildItem(
context: context,
spans: [
TextSpan(text: ' ${event.payload['action']} pull request '),
_buildPullRequest(context, event.payload['pull_request']['number']),
TextSpan(text: ' at '),
_buildRepo(context),
],
iconData: Octicons.git_pull_request,
detail: event.payload['pull_request']['title'],
);
case 'PullRequestReviewCommentEvent':
return _buildItem(
context: context,
spans: [
TextSpan(text: ' reviewed pull request '),
_buildPullRequest(context, event.payload['pull_request']['number']),
TextSpan(text: ' at '),
_buildRepo(context),
],
detail: event.payload['comment']['body'],
);
case 'WatchEvent':
return _buildItem(
context: context,
spans: [
TextSpan(text: ' ${event.payload['action']} '),
_buildRepo(context)
],
iconData: Octicons.star,
); );
case 'ForkApplyEvent':
case 'GitHubAppAuthorizationEvent':
case 'GistEvent':
case 'GollumEvent':
case 'InstallationEvent':
case 'InstallationRepositoriesEvent':
// TODO:
return defaultItem;
case 'IssueCommentEvent': case 'IssueCommentEvent':
bool isIssue = event.payload['issue']['pull_request'] == null; bool isIssue = event.payload['issue']['pull_request'] == null;
String resource = isIssue ? 'issue' : 'pull request'; String resource = isIssue ? 'issue' : 'pull request';
@ -180,31 +154,94 @@ class EventItem extends StatelessWidget {
detail: event.payload['comment']['body'], detail: event.payload['comment']['body'],
iconData: Octicons.comment_discussion, iconData: Octicons.comment_discussion,
); );
case 'ForkEvent': case 'IssuesEvent':
return _buildItem( return _buildItem(
context: context, context: context,
spans: [ spans: [
TextSpan(text: ' forked '), TextSpan(text: ' ${event.payload['action']} issue '),
createRepoLinkSpan( _buildIssue(context),
context, TextSpan(text: ' at '),
event.payload['forkee']['owner']['login'],
event.payload['forkee']['name']),
TextSpan(text: ' from '),
_buildRepo(context), _buildRepo(context),
], ],
iconData: Octicons.repo_forked, iconData: Octicons.issue_opened,
detail: event.payload['issue']['title'],
); );
default: case 'LabelEvent':
case 'MarketplacePurchaseEvent':
case 'MemberEvent':
case 'MembershipEvent':
case 'MilestoneEvent':
case 'OrganizationEvent':
case 'OrgBlockEvent':
case 'PageBuildEvent':
case 'ProjectCardEvent':
case 'ProjectColumnEvent':
case 'ProjectEvent':
case 'PublicEvent':
// TODO:
return defaultItem;
case 'PullRequestEvent':
return _buildItem( return _buildItem(
context: context, context: context,
spans: [ spans: [
TextSpan( TextSpan(text: ' ${event.payload['action']} pull request '),
text: ' Type ${event.type} Not implement yet', _buildPullRequest(context, event.payload['pull_request']['number']),
style: TextStyle(color: CupertinoColors.destructiveRed), TextSpan(text: ' at '),
), _buildRepo(context),
], ],
iconData: Octicons.octoface, iconData: Octicons.git_pull_request,
detail: event.payload['pull_request']['title'],
); );
case 'PullRequestReviewEvent':
// TODO:
return defaultItem;
case 'PullRequestReviewCommentEvent':
return _buildItem(
context: context,
spans: [
TextSpan(text: ' reviewed pull request '),
_buildPullRequest(context, event.payload['pull_request']['number']),
TextSpan(text: ' at '),
_buildRepo(context),
],
detail: event.payload['comment']['body'],
);
case 'PushEvent':
return _buildItem(
context: context,
spans: [
TextSpan(text: ' pushed to '),
TextSpan(
text: event.payload['ref'],
style: TextStyle(color: CupertinoColors.activeBlue),
),
TextSpan(text: ' at '),
_buildRepo(context),
TextSpan(text: '')
],
iconData: Octicons.repo_push,
);
case 'ReleaseEvent':
case 'RepositoryEvent':
case 'RepositoryImportEvent':
case 'RepositoryVulnerabilityAlertEvent':
case 'SecurityAdvisoryEvent':
case 'StatusEvent':
case 'TeamEvent':
case 'TeamAddEvent':
// TODO:
return defaultItem;
case 'WatchEvent':
return _buildItem(
context: context,
spans: [
TextSpan(text: ' ${event.payload['action']} '),
_buildRepo(context)
],
iconData: Octicons.star,
);
default:
return defaultItem;
} }
} }
} }