feat: show pinned items
This commit is contained in:
parent
9fe6639f66
commit
8cd1d9f1a5
|
@ -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),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue