From c694b99bc7628308643dddefb804deb42ae9afc3 Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Thu, 12 Dec 2019 00:07:12 +0800 Subject: [PATCH] fix(gitlab): full path --- lib/models/gitlab.dart | 1 + lib/models/gitlab.g.dart | 4 +++- lib/screens/gitlab_tree.dart | 24 ++++++++++-------------- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/lib/models/gitlab.dart b/lib/models/gitlab.dart index 930b9ec..4293388 100644 --- a/lib/models/gitlab.dart +++ b/lib/models/gitlab.dart @@ -126,6 +126,7 @@ class GitlabProjectNamespace { class GitlabTreeItem { String type; String path; + String name; GitlabTreeItem(); diff --git a/lib/models/gitlab.g.dart b/lib/models/gitlab.g.dart index d9fc58a..a4320f4 100644 --- a/lib/models/gitlab.g.dart +++ b/lib/models/gitlab.g.dart @@ -170,13 +170,15 @@ Map _$GitlabProjectNamespaceToJson( GitlabTreeItem _$GitlabTreeItemFromJson(Map json) { return GitlabTreeItem() ..type = json['type'] as String - ..path = json['path'] as String; + ..path = json['path'] as String + ..name = json['name'] as String; } Map _$GitlabTreeItemToJson(GitlabTreeItem instance) => { 'type': instance.type, 'path': instance.path, + 'name': instance.name, }; GitlabBlob _$GitlabBlobFromJson(Map json) { diff --git a/lib/screens/gitlab_tree.dart b/lib/screens/gitlab_tree.dart index 6e36359..b7bd817 100644 --- a/lib/screens/gitlab_tree.dart +++ b/lib/screens/gitlab_tree.dart @@ -13,11 +13,9 @@ import 'package:seti/seti.dart'; class GitlabTreeScreen extends StatelessWidget { final int id; - final List paths; + final String path; - GitlabTreeScreen(this.id, {this.paths = const []}); - - String get _path => paths.join('/'); + GitlabTreeScreen(this.id, {this.path}); static const _iconDefaultColor = PrimerColors.blue300; @@ -42,11 +40,11 @@ class GitlabTreeScreen extends StatelessWidget { @override Widget build(BuildContext context) { return RefreshStatefulScaffold>( - title: AppBarTitle(_path.isEmpty ? 'Files' : _path), + title: AppBarTitle(path == null ? 'Files' : path), fetchData: () async { var url = '/projects/$id/repository/tree'; - if (paths.isNotEmpty) { - url += '?path=' + paths.join('/'); + if (path != null) { + url += '?path=' + path; } final res = await Provider.of(context).fetchGitlab(url); return (res as List).map((v) => GitlabTreeItem.fromJson(v)); @@ -57,17 +55,15 @@ class GitlabTreeScreen extends StatelessWidget { items: data.map((item) { return TableViewItem( leftWidget: _buildIcon(item), - text: Text(item.path), + text: Text(item.name), screenBuilder: (_) { switch (item.type) { case 'tree': - return GitlabTreeScreen( - id, - paths: [...paths, item.path], - ); + return GitlabTreeScreen(id, path: item.path); case 'blob': - return GitlabBlobScreen( - id, [...paths, item.path].join('/')); + return GitlabBlobScreen(id, item.path); + default: + return null; } }, );