mirror of
https://github.com/git-touch/git-touch
synced 2025-02-07 23:28:54 +01:00
feat(gh): add events screen
This commit is contained in:
parent
15ccf72a27
commit
5101b2554f
@ -8,6 +8,7 @@ import 'package:git_touch/screens/bb_user.dart';
|
||||
import 'package:git_touch/screens/code_theme.dart';
|
||||
import 'package:git_touch/screens/gh_commits.dart';
|
||||
import 'package:git_touch/screens/gh_contributors.dart';
|
||||
import 'package:git_touch/screens/gh_events.dart';
|
||||
import 'package:git_touch/screens/gh_files.dart';
|
||||
import 'package:git_touch/screens/gh_gists_files.dart';
|
||||
import 'package:git_touch/screens/gh_org_repos.dart';
|
||||
@ -106,6 +107,8 @@ class GithubRouter {
|
||||
return GhUserOrganizationScreen(login);
|
||||
case 'gists':
|
||||
return GhGistsScreen(login);
|
||||
case 'events':
|
||||
return GhEventsScreen(login);
|
||||
default:
|
||||
return GhUserScreen(login);
|
||||
}
|
||||
|
36
lib/screens/gh_events.dart
Normal file
36
lib/screens/gh_events.dart
Normal file
@ -0,0 +1,36 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:git_touch/models/github.dart';
|
||||
import 'package:git_touch/scaffolds/list_stateful.dart';
|
||||
import 'package:git_touch/utils/utils.dart';
|
||||
import 'package:git_touch/widgets/app_bar_title.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:git_touch/widgets/event_item.dart';
|
||||
import 'package:git_touch/models/auth.dart';
|
||||
|
||||
class GhEventsScreen extends StatelessWidget {
|
||||
final String login;
|
||||
GhEventsScreen(this.login);
|
||||
|
||||
Future<ListPayload<GithubEvent, int>> fetchEvents(BuildContext context,
|
||||
[int page = 1]) async {
|
||||
final events = await context.read<AuthModel>().ghClient.getJSON(
|
||||
'/users/$login/events?page=$page&per_page=$pageSize',
|
||||
convert: (vs) => [for (var v in vs) GithubEvent.fromJson(v)]);
|
||||
return ListPayload(
|
||||
cursor: page + 1,
|
||||
hasMore: events.length == pageSize,
|
||||
items: events,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(context) {
|
||||
return ListStatefulScaffold<GithubEvent, int>(
|
||||
title: AppBarTitle('Events'),
|
||||
itemBuilder: (payload) => EventItem(payload),
|
||||
onRefresh: () => fetchEvents(context),
|
||||
onLoadMore: (page) => fetchEvents(context, page),
|
||||
);
|
||||
}
|
||||
}
|
@ -149,9 +149,15 @@ class GhUserScreen extends StatelessWidget {
|
||||
hasIcon: true,
|
||||
items: [
|
||||
TableViewItem(
|
||||
leftIconData: Octicons.book,
|
||||
text: Text('Gists'),
|
||||
url: '/github/$login?tab=gists'),
|
||||
leftIconData: Icons.rss_feed,
|
||||
text: Text('Events'),
|
||||
url: '/github/$login?tab=events',
|
||||
),
|
||||
TableViewItem(
|
||||
leftIconData: Octicons.book,
|
||||
text: Text('Gists'),
|
||||
url: '/github/$login?tab=gists',
|
||||
),
|
||||
TableViewItem(
|
||||
leftIconData: Octicons.home,
|
||||
text: Text('Organizations'),
|
||||
@ -252,6 +258,11 @@ class GhUserScreen extends StatelessWidget {
|
||||
TableView(
|
||||
hasIcon: true,
|
||||
items: [
|
||||
TableViewItem(
|
||||
leftIconData: Icons.rss_feed,
|
||||
text: Text('Events'),
|
||||
url: '/github/$login?tab=events',
|
||||
),
|
||||
if (isNotNullOrEmpty(p.location))
|
||||
TableViewItem(
|
||||
leftIconData: Octicons.location,
|
||||
|
Loading…
x
Reference in New Issue
Block a user