feat: organization members

This commit is contained in:
Rongjian Zhang 2019-09-22 01:23:38 +08:00
parent 45687a48a6
commit 1c5b62430e
5 changed files with 43 additions and 23 deletions

View File

@ -1,6 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:git_touch/screens/users.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/entry_item.dart';
import 'package:git_touch/widgets/table_view.dart';
import 'package:git_touch/widgets/user_item.dart';
import 'package:url_launcher/url_launcher.dart';
@ -58,6 +60,7 @@ class OrganizationScreen extends StatelessWidget {
location
email
websiteUrl
url
pinnedItems(first: $pageSize) {
nodes {
... on Repository {
@ -65,7 +68,9 @@ class OrganizationScreen extends StatelessWidget {
}
}
}
url
membersWithRole {
totalCount
}
}
}
''');
@ -98,6 +103,15 @@ class OrganizationScreen extends StatelessWidget {
avatarUrl: payload['avatarUrl'],
bio: payload['description'],
),
borderView,
Row(children: <Widget>[
EntryItem(
count: payload['membersWithRole']['totalCount'],
text: 'Members',
screenBuilder: (context) =>
UsersScreen(type: UsersScreenType.orgs, login: login),
),
]),
borderView1,
TableView(
hasIcon: true,

View File

@ -39,7 +39,7 @@ class UsersScreen extends StatelessWidget {
return Tuple3(
'repository', 'owner: "$login", name: "$name"', 'watchers');
case UsersScreenType.orgs:
return Tuple3('', '', ''); // FIXME:
return Tuple3('organization', 'login: "$login"', 'membersWithRole');
default:
throw 'Should not be here';
}

View File

@ -85,27 +85,6 @@ var createWarning =
var warningSpan =
TextSpan(text: 'xxx', style: TextStyle(color: Colors.redAccent));
var repoChunk = '''
owner {
login
avatarUrl
}
name
description
isPrivate
isFork
stargazers {
totalCount
}
forks {
totalCount
}
primaryLanguage {
color
name
}
''';
List<T> join<T>(T seperator, List<T> xs) {
List<T> result = [];
xs.asMap().forEach((index, x) {

View File

@ -6,6 +6,27 @@ import '../utils/utils.dart';
import '../screens/repo.dart';
import 'link.dart';
const repoChunk = '''
owner {
login
avatarUrl
}
name
description
isPrivate
isFork
stargazers {
totalCount
}
forks {
totalCount
}
primaryLanguage {
color
name
}
''';
class RepoItem extends StatelessWidget {
final Map<String, dynamic> payload;
final bool inRepoScreen;

View File

@ -4,6 +4,12 @@ import 'package:git_touch/widgets/avatar.dart';
import 'package:git_touch/widgets/link.dart';
import 'package:primer/primer.dart';
const userGqlChunk = '''
name
avatarUrl
bio
''';
class UserItem extends StatelessWidget {
final String login;
final String name;