Skip to content

Commit

Permalink
feat: add more event type
Browse files Browse the repository at this point in the history
  • Loading branch information
pd4d10 committed Jan 29, 2019
1 parent 7c6c211 commit 9ae00df
Show file tree
Hide file tree
Showing 5 changed files with 142 additions and 28 deletions.
6 changes: 3 additions & 3 deletions lib/main.dart
@@ -1,9 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:git_flux/providers/event.dart';
import 'package:git_flux/providers/notification.dart';
import 'package:git_flux/providers/search.dart';
import 'package:git_flux/providers/providers.dart';
import 'package:git_flux/ios/main.dart';
import 'package:git_flux/screens/screens.dart';

class App extends StatelessWidget {
final isIos = true;
Expand All @@ -25,6 +24,7 @@ class App extends StatelessWidget {
home: DefaultTextStyle(
style: TextStyle(color: Color(0xff24292e)),
child: IosHomePage(title: 'GitFlux'),
// child: IssueScreen(11609, 'flutter', 'flutter'),
),
// theme: ThemeData(
// textTheme: TextTheme(
Expand Down
10 changes: 0 additions & 10 deletions lib/screens/pull_request.dart
Expand Up @@ -41,16 +41,6 @@ Future queryPullRequest(int id, String owner, String name) async {
login
}
}
... on LabeledEvent {
createdAt
label {
name
url
}
actor {
login
}
}
... on MergedEvent {
createdAt
mergeRefName
Expand Down
57 changes: 56 additions & 1 deletion lib/utils/utils.dart
Expand Up @@ -111,8 +111,63 @@ __typename
}
}
}
... on LabeledEvent {
createdAt
actor {
login
}
label {
name
color
}
}
... on UnlabeledEvent {
createdAt
actor {
login
}
label {
name
color
}
}
... on MilestonedEvent {
createdAt
actor {
login
}
milestoneTitle
}
... on LockedEvent {
createdAt
actor {
login
}
lockReason
}
... on UnlockedEvent {
createdAt
actor {
login
}
}
... on AssignedEvent {
createdAt
actor {
login
}
user {
login
}
}
''';

var warning = Text('xxx', style: TextStyle(color: Colors.redAccent));
var createWarning =
(String text) => Text(text, style: TextStyle(color: Colors.redAccent));
var warningSpan =
TextSpan(text: 'xxx', style: TextStyle(color: Colors.redAccent));
2 changes: 1 addition & 1 deletion lib/widgets/issue_pull_request.dart
Expand Up @@ -57,7 +57,7 @@ class _IssuePullRequestScreenState extends State<IssuePullRequestScreen> {
fontWeight: FontWeight.bold,
height: 1.2,
)),
CommentItem(payload),
// CommentItem(payload),
// ListView.builder(
// shrinkWrap: true,
// itemCount: comments.length,
Expand Down
95 changes: 82 additions & 13 deletions lib/widgets/timeline_item.dart
@@ -1,3 +1,4 @@
import 'dart:core';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:git_flux/utils/utils.dart';
Expand Down Expand Up @@ -44,10 +45,28 @@ class TimelineItem extends StatelessWidget {
);
}

TextSpan _buildLabel(item) {
var textColor = item['label']['color'] == 'fbca04' ? null : Colors.white;

return TextSpan(
text: item['label']['name'],
style: TextStyle(
color: textColor,
// https://github.com/flutter/flutter/issues/20430
background: Paint()
..color = Color(int.parse('ff' + item['label']['color'], radix: 16))
// https://stackoverflow.com/a/52592679
// ..strokeWidth = 16.5
// ..style = PaintingStyle.stroke
),
);
}

Widget _buildByType(BuildContext context) {
switch (item['__typename']) {
case 'IssueComment':
return CommentItem(item);
return Text('comment');
// return CommentItem(item);
case 'ReferencedEvent':
// TODO: isCrossRepository
if (item['commit'] == null) {
Expand Down Expand Up @@ -104,6 +123,67 @@ class TimelineItem extends StatelessWidget {
item['source']['number'].toString()),
item: item,
);
case 'LabeledEvent':
return _buildItem(
actor: item['actor']['login'],
iconData: Octicons.tag,
textSpan: TextSpan(children: [
TextSpan(text: ' added '),
_buildLabel(item),
TextSpan(text: ' label'),
]),
item: item,
);
case 'UnlabeledEvent':
return _buildItem(
actor: item['actor']['login'],
iconData: Octicons.tag,
textSpan: TextSpan(children: [
TextSpan(text: ' removed '),
_buildLabel(item),
TextSpan(text: ' label'),
]),
item: item,
);
case 'MilestonedEvent':
return _buildItem(
actor: item['actor']['login'],
iconData: Octicons.milestone,
textSpan: TextSpan(children: [
TextSpan(text: ' added this to '),
TextSpan(text: item['milestoneTitle']),
TextSpan(text: ' milestone'),
]),
item: item,
);
case 'LockedEvent':
return _buildItem(
actor: item['actor']['login'],
iconData: Octicons.lock,
textSpan: TextSpan(children: [
TextSpan(text: ' locked this conversation '),
]),
item: item,
);
case 'UnlockedEvent':
return _buildItem(
actor: item['actor']['login'],
iconData: Octicons.key,
textSpan: TextSpan(children: [
TextSpan(text: ' unlocked this conversation '),
]),
item: item,
);
case 'AssignedEvent':
return _buildItem(
actor: item['actor']['login'],
iconData: Octicons.key,
textSpan: TextSpan(children: [
TextSpan(text: ' assigned this to '),
TextSpan(text: item['user']['login'])
]),
item: item,
);

//
case 'ReviewRequestedEvent':
Expand All @@ -124,17 +204,6 @@ class TimelineItem extends StatelessWidget {
textSpan: _buildReviewText(context, item),
item: item,
);
case 'LabeledEvent':
return _buildItem(
actor: item['actor']['login'],
iconData: Octicons.tag,
textSpan: TextSpan(children: [
TextSpan(text: ' added the '),
TextSpan(text: item['label']['name']),
TextSpan(text: 'label'),
]),
item: item,
);
case 'MergedEvent':
return _buildItem(
actor: item['actor']['login'],
Expand Down Expand Up @@ -170,7 +239,7 @@ class TimelineItem extends StatelessWidget {
item: item,
);
default:
return warning;
return createWarning(item['__typename']);
}
}

Expand Down

0 comments on commit 9ae00df

Please sign in to comment.