diff --git a/lib/screens/news.dart b/lib/screens/news.dart index 4a19624..13a5e08 100644 --- a/lib/screens/news.dart +++ b/lib/screens/news.dart @@ -11,13 +11,15 @@ class NewsScreen extends StatefulWidget { } class NewsScreenState extends State { - Future> fetchEvents(int page) async { + Future> fetchEvents(int page) async { var settings = SettingsProvider.of(context); var login = settings.activeLogin; List data = await settings.getWithCredentials( '/users/$login/received_events?page=$page&per_page=$pageSize'); // print(data); - return data.map((item) => Event.fromJSON(item)).toList(); + return data + .map((item) => EventPayload.fromJson(item)) + .toList(); } @override diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index 809d7ac..212d359 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -3,7 +3,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/gestures.dart'; import '../providers/settings.dart'; import '../screens/repo.dart'; -export 'package:github/server.dart'; export 'octicons.dart'; export 'timeago.dart'; diff --git a/lib/widgets/event_item.dart b/lib/widgets/event_item.dart index 310f01c..bd680f8 100644 --- a/lib/widgets/event_item.dart +++ b/lib/widgets/event_item.dart @@ -3,25 +3,43 @@ import 'package:flutter/cupertino.dart'; import '../screens/issue.dart'; import '../screens/pull_request.dart'; import '../screens/user.dart'; -// import 'link.dart'; import 'avatar.dart'; import '../utils/utils.dart'; +class EventPayload { + String actorLogin; + String actorAvatarUrl; + String type; + String repoFullName; + Map payload; + + EventPayload.fromJson(input) { + actorLogin = input['actor']['login']; + actorAvatarUrl = input['actor']['avatar_url']; + type = input['type']; + payload = input['payload']; + repoFullName = input['repo']['name']; + } +} + class EventItem extends StatelessWidget { - final Event event; + final EventPayload event; EventItem(this.event); TextSpan _buildRepo(BuildContext context) { - String name = event.repo.name; + String name = event.repoFullName; var arr = name.split('/'); return createRepoLinkSpan(context, arr[0], arr[1]); } TextSpan _buildIssue(BuildContext context) { int id = event.payload['issue']['number']; - return createLinkSpan(context, '#' + id.toString(), - () => IssueScreen.fromFullName(number: id, fullName: event.repo.name)); + return createLinkSpan( + context, + '#' + id.toString(), + () => + IssueScreen.fromFullName(number: id, fullName: event.repoFullName)); } TextSpan _buildPullRequest(BuildContext context, int number) { @@ -29,7 +47,7 @@ class EventItem extends StatelessWidget { context, '#' + number.toString(), () => PullRequestScreen.fromFullName( - number: number, fullName: event.repo.name), + number: number, fullName: event.repoFullName), ); } @@ -41,7 +59,7 @@ class EventItem extends StatelessWidget { }) { var _spans = [ createLinkSpan( - context, event.actor.login, () => UserScreen(event.actor.login)) + context, event.actorLogin, () => UserScreen(event.actorLogin)) ]; _spans.addAll(spans); @@ -52,7 +70,7 @@ class EventItem extends StatelessWidget { children: [ Row( children: [ - Avatar(login: event.actor.login, url: event.actor.avatarUrl), + Avatar(login: event.actorLogin, url: event.actorAvatarUrl), Padding(padding: EdgeInsets.only(left: 10)), Expanded( child: RichText( @@ -92,7 +110,12 @@ class EventItem extends StatelessWidget { build(BuildContext context) { var defaultItem = _buildItem( context: context, - spans: [TextSpan(text: ' This is a ' + event.type)], + spans: [ + TextSpan( + text: ' ' + event.type, + style: TextStyle(color: Colors.blueAccent), + ) + ], iconData: Octicons.octoface, detail: 'Woops, ${event.type} not implemented yet', ); diff --git a/pubspec.yaml b/pubspec.yaml index 8f860da..a2056bc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -18,7 +18,6 @@ dependencies: http: ^0.11.3 rxdart: ^0.20.0 uri: ^0.11.3 - github: ^4.1.0 intl: ^0.15.7 url_launcher: ^4.2.0 uni_links: ^0.1.4