feat: custom event payload type
This commit is contained in:
parent
55356315c4
commit
6aa65b857f
|
@ -11,13 +11,15 @@ class NewsScreen extends StatefulWidget {
|
||||||
}
|
}
|
||||||
|
|
||||||
class NewsScreenState extends State<NewsScreen> {
|
class NewsScreenState extends State<NewsScreen> {
|
||||||
Future<List<Event>> fetchEvents(int page) async {
|
Future<List<EventPayload>> fetchEvents(int page) async {
|
||||||
var settings = SettingsProvider.of(context);
|
var settings = SettingsProvider.of(context);
|
||||||
var login = settings.activeLogin;
|
var login = settings.activeLogin;
|
||||||
List data = await settings.getWithCredentials(
|
List data = await settings.getWithCredentials(
|
||||||
'/users/$login/received_events?page=$page&per_page=$pageSize');
|
'/users/$login/received_events?page=$page&per_page=$pageSize');
|
||||||
// print(data);
|
// print(data);
|
||||||
return data.map<Event>((item) => Event.fromJSON(item)).toList();
|
return data
|
||||||
|
.map<EventPayload>((item) => EventPayload.fromJson(item))
|
||||||
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
@ -3,7 +3,6 @@ import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/gestures.dart';
|
import 'package:flutter/gestures.dart';
|
||||||
import '../providers/settings.dart';
|
import '../providers/settings.dart';
|
||||||
import '../screens/repo.dart';
|
import '../screens/repo.dart';
|
||||||
export 'package:github/server.dart';
|
|
||||||
export 'octicons.dart';
|
export 'octicons.dart';
|
||||||
export 'timeago.dart';
|
export 'timeago.dart';
|
||||||
|
|
||||||
|
|
|
@ -3,25 +3,43 @@ import 'package:flutter/cupertino.dart';
|
||||||
import '../screens/issue.dart';
|
import '../screens/issue.dart';
|
||||||
import '../screens/pull_request.dart';
|
import '../screens/pull_request.dart';
|
||||||
import '../screens/user.dart';
|
import '../screens/user.dart';
|
||||||
// import 'link.dart';
|
|
||||||
import 'avatar.dart';
|
import 'avatar.dart';
|
||||||
import '../utils/utils.dart';
|
import '../utils/utils.dart';
|
||||||
|
|
||||||
|
class EventPayload {
|
||||||
|
String actorLogin;
|
||||||
|
String actorAvatarUrl;
|
||||||
|
String type;
|
||||||
|
String repoFullName;
|
||||||
|
Map<String, dynamic> 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 {
|
class EventItem extends StatelessWidget {
|
||||||
final Event event;
|
final EventPayload event;
|
||||||
|
|
||||||
EventItem(this.event);
|
EventItem(this.event);
|
||||||
|
|
||||||
TextSpan _buildRepo(BuildContext context) {
|
TextSpan _buildRepo(BuildContext context) {
|
||||||
String name = event.repo.name;
|
String name = event.repoFullName;
|
||||||
var arr = name.split('/');
|
var arr = name.split('/');
|
||||||
return createRepoLinkSpan(context, arr[0], arr[1]);
|
return createRepoLinkSpan(context, arr[0], arr[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
TextSpan _buildIssue(BuildContext context) {
|
TextSpan _buildIssue(BuildContext context) {
|
||||||
int id = event.payload['issue']['number'];
|
int id = event.payload['issue']['number'];
|
||||||
return createLinkSpan(context, '#' + id.toString(),
|
return createLinkSpan(
|
||||||
() => IssueScreen.fromFullName(number: id, fullName: event.repo.name));
|
context,
|
||||||
|
'#' + id.toString(),
|
||||||
|
() =>
|
||||||
|
IssueScreen.fromFullName(number: id, fullName: event.repoFullName));
|
||||||
}
|
}
|
||||||
|
|
||||||
TextSpan _buildPullRequest(BuildContext context, int number) {
|
TextSpan _buildPullRequest(BuildContext context, int number) {
|
||||||
|
@ -29,7 +47,7 @@ class EventItem extends StatelessWidget {
|
||||||
context,
|
context,
|
||||||
'#' + number.toString(),
|
'#' + number.toString(),
|
||||||
() => PullRequestScreen.fromFullName(
|
() => PullRequestScreen.fromFullName(
|
||||||
number: number, fullName: event.repo.name),
|
number: number, fullName: event.repoFullName),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +59,7 @@ class EventItem extends StatelessWidget {
|
||||||
}) {
|
}) {
|
||||||
var _spans = [
|
var _spans = [
|
||||||
createLinkSpan(
|
createLinkSpan(
|
||||||
context, event.actor.login, () => UserScreen(event.actor.login))
|
context, event.actorLogin, () => UserScreen(event.actorLogin))
|
||||||
];
|
];
|
||||||
_spans.addAll(spans);
|
_spans.addAll(spans);
|
||||||
|
|
||||||
|
@ -52,7 +70,7 @@ class EventItem extends StatelessWidget {
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Row(
|
Row(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Avatar(login: event.actor.login, url: event.actor.avatarUrl),
|
Avatar(login: event.actorLogin, url: event.actorAvatarUrl),
|
||||||
Padding(padding: EdgeInsets.only(left: 10)),
|
Padding(padding: EdgeInsets.only(left: 10)),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: RichText(
|
child: RichText(
|
||||||
|
@ -92,7 +110,12 @@ class EventItem extends StatelessWidget {
|
||||||
build(BuildContext context) {
|
build(BuildContext context) {
|
||||||
var defaultItem = _buildItem(
|
var defaultItem = _buildItem(
|
||||||
context: context,
|
context: context,
|
||||||
spans: [TextSpan(text: ' This is a ' + event.type)],
|
spans: [
|
||||||
|
TextSpan(
|
||||||
|
text: ' ' + event.type,
|
||||||
|
style: TextStyle(color: Colors.blueAccent),
|
||||||
|
)
|
||||||
|
],
|
||||||
iconData: Octicons.octoface,
|
iconData: Octicons.octoface,
|
||||||
detail: 'Woops, ${event.type} not implemented yet',
|
detail: 'Woops, ${event.type} not implemented yet',
|
||||||
);
|
);
|
||||||
|
|
|
@ -18,7 +18,6 @@ dependencies:
|
||||||
http: ^0.11.3
|
http: ^0.11.3
|
||||||
rxdart: ^0.20.0
|
rxdart: ^0.20.0
|
||||||
uri: ^0.11.3
|
uri: ^0.11.3
|
||||||
github: ^4.1.0
|
|
||||||
intl: ^0.15.7
|
intl: ^0.15.7
|
||||||
url_launcher: ^4.2.0
|
url_launcher: ^4.2.0
|
||||||
uni_links: ^0.1.4
|
uni_links: ^0.1.4
|
||||||
|
|
Loading…
Reference in New Issue