feat: show pinned items

This commit is contained in:
Rongjian Zhang 2019-09-14 18:26:32 +08:00
parent 9fe6639f66
commit 8cd1d9f1a5
1 changed files with 25 additions and 21 deletions

View File

@ -10,7 +10,6 @@ import 'package:github_contributions/github_contributions.dart';
import 'package:git_touch/models/settings.dart'; import 'package:git_touch/models/settings.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../scaffolds/refresh.dart'; import '../scaffolds/refresh.dart';
import '../widgets/avatar.dart';
import '../widgets/entry_item.dart'; import '../widgets/entry_item.dart';
import '../widgets/list_group.dart'; import '../widgets/list_group.dart';
import '../widgets/repo_item.dart'; import '../widgets/repo_item.dart';
@ -47,13 +46,13 @@ class UserScreen extends StatelessWidget {
following { following {
totalCount totalCount
} }
repositories(first: $pageSize, ownerAffiliations: OWNER, orderBy: {field: STARGAZERS, direction: DESC}) { repositories(first: 6, ownerAffiliations: OWNER, orderBy: {field: STARGAZERS, direction: DESC}) {
totalCount totalCount
nodes { nodes {
$repoChunk $repoChunk
} }
} }
pinnedItems(first: $pageSize) { pinnedItems(first: 6) {
nodes { nodes {
... on Repository { ... on Repository {
$repoChunk $repoChunk
@ -69,27 +68,32 @@ class UserScreen extends StatelessWidget {
return data['user']; return data['user'];
} }
Widget _buildRepos(payload) { Iterable<Widget> _buildRepos(payload) {
String title;
List items; List items;
if (payload['pinnedItems']['nodes'].length == 0) {
title = 'Popular repositories'; if ((payload['pinnedItems']['nodes'] as List).isNotEmpty) {
items = payload['repositories']['nodes']; items = payload['pinnedItems']['nodes'] as List;
} else if ((payload['repositories']['nodes'] as List).isNotEmpty) {
items = payload['repositories']['nodes'] as List;
} else { } else {
title = 'Pinned repositories'; items = [];
items = payload['pinnedItems']['nodes'];
} }
return ListGroup( items = items
title: Text( .where((x) => x != null)
title, .toList(); // TODO: Pinned items may include somethings other than repo
style: TextStyle(fontSize: 16), if (items.isEmpty) return [];
),
items: items, return [
itemBuilder: (item, _) { BorderView(height: 10),
return RepoItem(item); // Text('Pinned repositories'),
}, ...join(
); BorderView(),
items.map((item) {
return RepoItem(item);
}).toList(),
)
];
} }
TableViewItem _buildTableViewItem({ TableViewItem _buildTableViewItem({
@ -287,7 +291,7 @@ class UserScreen extends StatelessWidget {
}, },
), ),
]), ]),
// _buildRepos(payload), ..._buildRepos(payload),
], ],
); );
}, },