improvement(gitlab): use web url for issue and mr

This commit is contained in:
Rongjian Zhang 2020-02-01 12:35:56 +08:00
parent d1d2e9e0fb
commit 35a27c600e
3 changed files with 26 additions and 13 deletions

View File

@ -8,17 +8,22 @@ import 'package:git_touch/widgets/issue_item.dart';
import 'package:git_touch/widgets/label.dart';
import 'package:provider/provider.dart';
final gitlabIssuesRouter = RouterScreen('/gitlab/projects/:id/issues',
(context, params) => GitlabIssuesScreen(params['id'].first));
final gitlabIssuesRouter = RouterScreen(
'/gitlab/projects/:id/issues',
(context, params) => GitlabIssuesScreen(
params['id'].first,
prefix: params['prefix'].first,
));
class GitlabIssuesScreen extends StatelessWidget {
final String id;
GitlabIssuesScreen(this.id);
final String prefix;
GitlabIssuesScreen(this.id, {this.prefix});
Future<ListPayload<GitlabIssue, int>> _query(BuildContext context,
[int page = 1]) async {
final res = await Provider.of<AuthModel>(context)
final auth = Provider.of<AuthModel>(context);
final res = await auth
.fetchGitlabWithPage('/projects/$id/issues?state=opened&page=$page');
return ListPayload(
cursor: res.cursor,
@ -47,7 +52,8 @@ class GitlabIssuesScreen extends StatelessWidget {
for (var label in p.labels)
MyLabel(name: label, cssColor: '#428BCA')
]),
url: '/gitlab/projects/${p.projectId}/issues/${p.iid}',
// url: '/gitlab/projects/${p.projectId}/issues/${p.iid}',
url: '$prefix/issues/${p.iid}', // TODO:
),
);
}

View File

@ -10,12 +10,15 @@ import 'package:provider/provider.dart';
final gitlabMergeRequestsRouter = RouterScreen(
'/gitlab/projects/:id/merge_requests',
(context, params) => GitlabMergeRequestsScreen(params['id'].first));
(context, params) => GitlabMergeRequestsScreen(
params['id'].first,
prefix: params['prefix'].first,
));
class GitlabMergeRequestsScreen extends StatelessWidget {
final String id;
GitlabMergeRequestsScreen(this.id);
final String prefix;
GitlabMergeRequestsScreen(this.id, {this.prefix});
Future<ListPayload<GitlabIssue, int>> _query(BuildContext context,
[int page = 1]) async {
@ -48,7 +51,8 @@ class GitlabMergeRequestsScreen extends StatelessWidget {
for (var label in p.labels)
MyLabel(name: label, cssColor: '#428BCA')
]),
url: '/gitlab/projects/${p.projectId}/merge_requests/${p.iid}',
// url: '/gitlab/projects/${p.projectId}/merge_requests/${p.iid}',
url: '$prefix/merge_requests/${p.iid}', // TODO:
),
);
}

View File

@ -70,7 +70,10 @@ class GitlabProjectScreen extends StatelessWidget {
final langs = t.item2;
final badges = t.item3;
final theme = Provider.of<ThemeModel>(context);
// final auth = Provider.of<AuthModel>(context);
final auth = Provider.of<AuthModel>(context);
final prefix =
'${auth.activeAccount.domain}/${p.namespace.path}/${p.name}'
.urlencode;
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
@ -123,13 +126,13 @@ class GitlabProjectScreen extends StatelessWidget {
leftIconData: Octicons.issue_opened,
text: Text('Issues'),
rightWidget: Text(numberFormat.format(p.openIssuesCount)),
url: '/gitlab/projects/$id/issues',
url: '/gitlab/projects/$id/issues?prefix=$prefix',
),
if (p.mergeRequestsEnabled)
TableViewItem(
leftIconData: Octicons.git_pull_request,
text: Text('Merge requests'),
url: '/gitlab/projects/$id/merge_requests',
url: '/gitlab/projects/$id/merge_requests?prefix=$prefix',
),
TableViewItem(
leftIconData: Octicons.history,