Skip to content

Commit 814b255

Browse files
committed
fix: add missing links
1 parent 6922083 commit 814b255

File tree

2 files changed

+47
-61
lines changed

2 files changed

+47
-61
lines changed

lib/screens/repo.dart

+11-27
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,15 @@ import '../screens/issues.dart';
1616
import '../screens/user.dart';
1717
import '../screens/organization.dart';
1818
import '../widgets/action.dart';
19-
import '../utils/utils.dart';
2019

21-
class RepoScreen extends StatefulWidget {
20+
class RepoScreen extends StatelessWidget {
2221
final String owner;
2322
final String name;
2423

2524
RepoScreen(this.owner, this.name);
26-
27-
@override
28-
_RepoScreenState createState() => _RepoScreenState();
29-
}
30-
31-
class _RepoScreenState extends State<RepoScreen> {
32-
String get owner => widget.owner;
33-
String get name => widget.name;
25+
RepoScreen.fromFullName(String fullName)
26+
: owner = fullName.split('/')[0],
27+
name = fullName.split('/')[1];
3428

3529
Future queryRepo(BuildContext context) async {
3630
var data = await Provider.of<SettingsModel>(context).query('''
@@ -83,8 +77,6 @@ class _RepoScreenState extends State<RepoScreen> {
8377
}
8478

8579
Future fetchReadme(BuildContext context) async {
86-
var owner = widget.owner;
87-
var name = widget.name;
8880
var data = await Provider.of<SettingsModel>(context)
8981
.getWithCredentials('/repos/$owner/$name/readme');
9082

@@ -100,7 +92,7 @@ class _RepoScreenState extends State<RepoScreen> {
10092
@override
10193
Widget build(BuildContext context) {
10294
return RefreshScaffold(
103-
title: Text(widget.owner + '/' + widget.name),
95+
title: Text(owner + '/' + name),
10496
trailingBuilder: (data) {
10597
var payload = data[0];
10698

@@ -180,33 +172,25 @@ class _RepoScreenState extends State<RepoScreen> {
180172
EntryItem(
181173
count: payload['issues']['totalCount'],
182174
text: 'Issues',
183-
screenBuilder: (context) => IssuesScreen(
184-
owner: widget.owner,
185-
name: widget.name,
186-
),
175+
screenBuilder: (context) =>
176+
IssuesScreen(owner: owner, name: name),
187177
),
188178
EntryItem(
189179
count: payload['pullRequests']['totalCount'],
190180
text: 'Pull Requests',
191181
screenBuilder: (context) => IssuesScreen(
192-
owner: widget.owner,
193-
name: widget.name,
194-
isPullRequest: true,
195-
),
182+
owner: owner, name: name, isPullRequest: true),
196183
),
197184
EntryItem(
198185
text: 'Files',
199-
screenBuilder: (context) => ObjectScreen(
200-
owner: widget.owner,
201-
name: widget.name,
202-
),
186+
screenBuilder: (context) =>
187+
ObjectScreen(owner: owner, name: name),
203188
),
204189
EntryItem(
205190
count: payload['defaultBranchRef']['target']['history']
206191
['totalCount'],
207192
text: 'Commits',
208-
screenBuilder: (context) =>
209-
CommitsScreen(widget.owner, widget.name),
193+
screenBuilder: (context) => CommitsScreen(owner, name),
210194
),
211195
],
212196
),

lib/widgets/event_item.dart

+36-34
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter/cupertino.dart';
3-
import 'package:url_launcher/url_launcher.dart';
3+
import 'package:git_touch/screens/repo.dart';
44
import 'package:timeago/timeago.dart' as timeago;
55
import 'package:primer/primer.dart';
66
import '../screens/issue.dart';
@@ -59,6 +59,7 @@ class EventItem extends StatelessWidget {
5959
Widget detailWidget,
6060
IconData iconData = Octicons.octoface,
6161
WidgetBuilder screenBuilder,
62+
String url,
6263
}) {
6364
if (detailWidget == null && detail != null) {
6465
detailWidget =
@@ -67,6 +68,7 @@ class EventItem extends StatelessWidget {
6768

6869
return Link(
6970
screenBuilder: screenBuilder,
71+
url: url,
7072
child: Container(
7173
padding: EdgeInsets.all(10),
7274
child: Column(
@@ -84,7 +86,7 @@ class EventItem extends StatelessWidget {
8486
Expanded(
8587
child: Column(
8688
crossAxisAlignment: CrossAxisAlignment.start,
87-
children: join(SizedBox(height: 6), [
89+
children: join(SizedBox(height: 8), [
8890
RichText(
8991
text: TextSpan(
9092
style: TextStyle(
@@ -170,6 +172,9 @@ class EventItem extends StatelessWidget {
170172
_buildRepo(context),
171173
],
172174
iconData: Octicons.repo_forked,
175+
screenBuilder: (_) => RepoScreen(
176+
event.payload['forkee']['owner']['login'],
177+
event.payload['forkee']['name']),
173178
);
174179
case 'ForkApplyEvent':
175180
case 'GitHubAppAuthorizationEvent':
@@ -298,40 +303,36 @@ class EventItem extends StatelessWidget {
298303
_buildRepo(context)
299304
],
300305
iconData: Octicons.repo_push,
301-
detailWidget: Link(
302-
onTap: () {
303-
launch('https://github.com/' +
304-
event.repoFullName +
305-
'/compare/' +
306-
event.payload['before'] +
307-
'...' +
308-
event.payload['head']);
309-
},
310-
child: Column(
311-
children: commits.map((commit) {
312-
return Row(children: <Widget>[
313-
Text(
314-
(commit['sha'] as String).substring(0, 7),
315-
style: TextStyle(
316-
color: PrimerColors.blue500,
317-
fontSize: 13,
318-
fontFamily: 'Menlo',
319-
fontFamilyFallback: ['Menlo', 'Roboto Mono'],
320-
),
306+
detailWidget: Column(
307+
children: commits.map((commit) {
308+
return Row(children: <Widget>[
309+
Text(
310+
(commit['sha'] as String).substring(0, 7),
311+
style: TextStyle(
312+
color: PrimerColors.blue500,
313+
fontSize: 13,
314+
fontFamily: 'Menlo',
315+
fontFamilyFallback: ['Menlo', 'Roboto Mono'],
321316
),
322-
SizedBox(width: 6),
323-
Expanded(
324-
child: Text(
325-
commit['message'],
326-
style: TextStyle(color: Colors.black54, fontSize: 14),
327-
overflow: TextOverflow.ellipsis,
328-
maxLines: 1,
329-
),
330-
)
331-
]);
332-
}).toList(),
333-
),
317+
),
318+
SizedBox(width: 6),
319+
Expanded(
320+
child: Text(
321+
commit['message'],
322+
style: TextStyle(color: Colors.black54, fontSize: 14),
323+
overflow: TextOverflow.ellipsis,
324+
maxLines: 1,
325+
),
326+
)
327+
]);
328+
}).toList(),
334329
),
330+
url: 'https://github.com/' +
331+
event.repoFullName +
332+
'/compare/' +
333+
event.payload['before'] +
334+
'...' +
335+
event.payload['head'],
335336
);
336337
case 'ReleaseEvent':
337338
case 'RepositoryEvent':
@@ -348,6 +349,7 @@ class EventItem extends StatelessWidget {
348349
context: context,
349350
spans: [TextSpan(text: ' starred '), _buildRepo(context)],
350351
iconData: Octicons.star,
352+
screenBuilder: (_) => RepoScreen.fromFullName(event.repoFullName),
351353
);
352354
default:
353355
return defaultItem;

0 commit comments

Comments
 (0)