diff --git a/lib/screens/organization.dart b/lib/screens/organization.dart index 5385161..a3040fd 100644 --- a/lib/screens/organization.dart +++ b/lib/screens/organization.dart @@ -18,38 +18,6 @@ class OrganizationScreen extends StatelessWidget { OrganizationScreen(this.login); - Iterable _buildRepos(payload) { - String title; - List items = []; - - var pinnedItems = payload['pinnedItems']['nodes'] as List; - var repositories = payload['pinnableItems']['nodes'] as List; - - if (pinnedItems.isNotEmpty) { - title = 'pinned repositories'; - items = pinnedItems; - } else if (repositories.isNotEmpty) { - title = 'popular repositories'; - items = repositories; - } - - items = items - .where((x) => x != null) - .toList(); // TODO: Pinned items may include somethings other than repo - if (items.isEmpty) return []; - - return [ - CommonStyle.verticalGap, - if (title != null) TableViewHeader(title), - ...join( - CommonStyle.border, - items.map((item) { - return RepositoryItem(item); - }).toList(), - ) - ]; - } - @override Widget build(BuildContext context) { return RefreshStatefulScaffold( @@ -162,7 +130,8 @@ class OrganizationScreen extends StatelessWidget { ), ], ), - ..._buildRepos(data), + ...buildPinnedItems( + data['pinnedItems']['nodes'], data['pinnableItems']['nodes']), ], ); }, diff --git a/lib/screens/user.dart b/lib/screens/user.dart index eedeb47..aa7e6ea 100644 --- a/lib/screens/user.dart +++ b/lib/screens/user.dart @@ -65,38 +65,6 @@ class UserScreen extends StatelessWidget { return data['user']; } - Iterable _buildRepos(payload) { - String title; - List items = []; - - var pinnedItems = payload['pinnedItems']['nodes'] as List; - var repositories = payload['repositories']['nodes'] as List; - - if (pinnedItems.isNotEmpty) { - title = 'pinned repositories'; - items = pinnedItems; - } else if (repositories.isNotEmpty) { - title = 'popular repositories'; - items = repositories; - } - - items = items - .where((x) => x != null) - .toList(); // TODO: Pinned items may include somethings other than repo - if (items.isEmpty) return []; - - return [ - CommonStyle.verticalGap, - if (title != null) TableViewHeader(title), - ...join( - CommonStyle.border, - items.map((item) { - return RepositoryItem(item); - }).toList(), - ), - ]; - } - Widget _buildContributions(List contributions) { final row = Row( children: [], @@ -260,7 +228,8 @@ class UserScreen extends StatelessWidget { ), ], ), - ..._buildRepos(data), + ...buildPinnedItems( + data['pinnedItems']['nodes'], data['repositories']['nodes']), CommonStyle.verticalGap, ], ); diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index a2b5ccc..647e513 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -6,6 +6,8 @@ import 'package:git_touch/models/theme.dart'; import 'package:git_touch/screens/repository.dart'; import 'package:git_touch/screens/user.dart'; import 'package:git_touch/widgets/border_view.dart'; +import 'package:git_touch/widgets/repository_item.dart'; +import 'package:git_touch/widgets/table_view.dart'; import 'package:intl/intl.dart'; import 'package:primer/primer.dart'; import 'package:provider/provider.dart'; @@ -173,3 +175,32 @@ launchUrl(String url) async { // TODO: fallback } } + +Iterable buildPinnedItems(List pinnedItems, List repositories) { + String title; + List items = []; + + if (pinnedItems.isNotEmpty) { + title = 'pinned repositories'; + items = pinnedItems; + } else if (repositories.isNotEmpty) { + title = 'popular repositories'; + items = repositories; + } + + items = items + .where((x) => x.isNotEmpty) + .toList(); // TODO: Pinned items may include Gist + if (items.isEmpty) return []; + + return [ + CommonStyle.verticalGap, + if (title != null) TableViewHeader(title), + ...join( + CommonStyle.border, + items.map((item) { + return RepositoryItem(item); + }).toList(), + ), + ]; +}