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> {
|
||||
Future<List<Event>> fetchEvents(int page) async {
|
||||
Future<List<EventPayload>> 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<Event>((item) => Event.fromJSON(item)).toList();
|
||||
return data
|
||||
.map<EventPayload>((item) => EventPayload.fromJson(item))
|
||||
.toList();
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
@ -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';
|
||||
|
||||
|
|
|
@ -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<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 {
|
||||
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: <Widget>[
|
||||
Row(
|
||||
children: <Widget>[
|
||||
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',
|
||||
);
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue