fix: add missing links

This commit is contained in:
Rongjian Zhang
2019-09-08 20:33:04 +08:00
parent 692208337f
commit 814b255f3a
2 changed files with 47 additions and 61 deletions

View File

@@ -16,21 +16,15 @@ import '../screens/issues.dart';
import '../screens/user.dart';
import '../screens/organization.dart';
import '../widgets/action.dart';
import '../utils/utils.dart';
class RepoScreen extends StatefulWidget {
class RepoScreen extends StatelessWidget {
final String owner;
final String name;
RepoScreen(this.owner, this.name);
@override
_RepoScreenState createState() => _RepoScreenState();
}
class _RepoScreenState extends State<RepoScreen> {
String get owner => widget.owner;
String get name => widget.name;
RepoScreen.fromFullName(String fullName)
: owner = fullName.split('/')[0],
name = fullName.split('/')[1];
Future queryRepo(BuildContext context) async {
var data = await Provider.of<SettingsModel>(context).query('''
@@ -83,8 +77,6 @@ class _RepoScreenState extends State<RepoScreen> {
}
Future fetchReadme(BuildContext context) async {
var owner = widget.owner;
var name = widget.name;
var data = await Provider.of<SettingsModel>(context)
.getWithCredentials('/repos/$owner/$name/readme');
@@ -100,7 +92,7 @@ class _RepoScreenState extends State<RepoScreen> {
@override
Widget build(BuildContext context) {
return RefreshScaffold(
title: Text(widget.owner + '/' + widget.name),
title: Text(owner + '/' + name),
trailingBuilder: (data) {
var payload = data[0];
@@ -180,33 +172,25 @@ class _RepoScreenState extends State<RepoScreen> {
EntryItem(
count: payload['issues']['totalCount'],
text: 'Issues',
screenBuilder: (context) => IssuesScreen(
owner: widget.owner,
name: widget.name,
),
screenBuilder: (context) =>
IssuesScreen(owner: owner, name: name),
),
EntryItem(
count: payload['pullRequests']['totalCount'],
text: 'Pull Requests',
screenBuilder: (context) => IssuesScreen(
owner: widget.owner,
name: widget.name,
isPullRequest: true,
),
owner: owner, name: name, isPullRequest: true),
),
EntryItem(
text: 'Files',
screenBuilder: (context) => ObjectScreen(
owner: widget.owner,
name: widget.name,
),
screenBuilder: (context) =>
ObjectScreen(owner: owner, name: name),
),
EntryItem(
count: payload['defaultBranchRef']['target']['history']
['totalCount'],
text: 'Commits',
screenBuilder: (context) =>
CommitsScreen(widget.owner, widget.name),
screenBuilder: (context) => CommitsScreen(owner, name),
),
],
),

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:git_touch/screens/repo.dart';
import 'package:timeago/timeago.dart' as timeago;
import 'package:primer/primer.dart';
import '../screens/issue.dart';
@@ -59,6 +59,7 @@ class EventItem extends StatelessWidget {
Widget detailWidget,
IconData iconData = Octicons.octoface,
WidgetBuilder screenBuilder,
String url,
}) {
if (detailWidget == null && detail != null) {
detailWidget =
@@ -67,6 +68,7 @@ class EventItem extends StatelessWidget {
return Link(
screenBuilder: screenBuilder,
url: url,
child: Container(
padding: EdgeInsets.all(10),
child: Column(
@@ -84,7 +86,7 @@ class EventItem extends StatelessWidget {
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: join(SizedBox(height: 6), [
children: join(SizedBox(height: 8), [
RichText(
text: TextSpan(
style: TextStyle(
@@ -170,6 +172,9 @@ class EventItem extends StatelessWidget {
_buildRepo(context),
],
iconData: Octicons.repo_forked,
screenBuilder: (_) => RepoScreen(
event.payload['forkee']['owner']['login'],
event.payload['forkee']['name']),
);
case 'ForkApplyEvent':
case 'GitHubAppAuthorizationEvent':
@@ -298,40 +303,36 @@ class EventItem extends StatelessWidget {
_buildRepo(context)
],
iconData: Octicons.repo_push,
detailWidget: Link(
onTap: () {
launch('https://github.com/' +
event.repoFullName +
'/compare/' +
event.payload['before'] +
'...' +
event.payload['head']);
},
child: Column(
children: commits.map((commit) {
return Row(children: <Widget>[
Text(
(commit['sha'] as String).substring(0, 7),
style: TextStyle(
color: PrimerColors.blue500,
fontSize: 13,
fontFamily: 'Menlo',
fontFamilyFallback: ['Menlo', 'Roboto Mono'],
),
detailWidget: Column(
children: commits.map((commit) {
return Row(children: <Widget>[
Text(
(commit['sha'] as String).substring(0, 7),
style: TextStyle(
color: PrimerColors.blue500,
fontSize: 13,
fontFamily: 'Menlo',
fontFamilyFallback: ['Menlo', 'Roboto Mono'],
),
SizedBox(width: 6),
Expanded(
child: Text(
commit['message'],
style: TextStyle(color: Colors.black54, fontSize: 14),
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
)
]);
}).toList(),
),
),
SizedBox(width: 6),
Expanded(
child: Text(
commit['message'],
style: TextStyle(color: Colors.black54, fontSize: 14),
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
)
]);
}).toList(),
),
url: 'https://github.com/' +
event.repoFullName +
'/compare/' +
event.payload['before'] +
'...' +
event.payload['head'],
);
case 'ReleaseEvent':
case 'RepositoryEvent':
@@ -348,6 +349,7 @@ class EventItem extends StatelessWidget {
context: context,
spans: [TextSpan(text: ' starred '), _buildRepo(context)],
iconData: Octicons.star,
screenBuilder: (_) => RepoScreen.fromFullName(event.repoFullName),
);
default:
return defaultItem;