feat: organization members
This commit is contained in:
parent
45687a48a6
commit
1c5b62430e
|
@ -1,6 +1,8 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/cupertino.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/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/table_view.dart';
|
||||||
import 'package:git_touch/widgets/user_item.dart';
|
import 'package:git_touch/widgets/user_item.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
@ -58,6 +60,7 @@ class OrganizationScreen extends StatelessWidget {
|
||||||
location
|
location
|
||||||
email
|
email
|
||||||
websiteUrl
|
websiteUrl
|
||||||
|
url
|
||||||
pinnedItems(first: $pageSize) {
|
pinnedItems(first: $pageSize) {
|
||||||
nodes {
|
nodes {
|
||||||
... on Repository {
|
... on Repository {
|
||||||
|
@ -65,7 +68,9 @@ class OrganizationScreen extends StatelessWidget {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
url
|
membersWithRole {
|
||||||
|
totalCount
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
''');
|
''');
|
||||||
|
@ -98,6 +103,15 @@ class OrganizationScreen extends StatelessWidget {
|
||||||
avatarUrl: payload['avatarUrl'],
|
avatarUrl: payload['avatarUrl'],
|
||||||
bio: payload['description'],
|
bio: payload['description'],
|
||||||
),
|
),
|
||||||
|
borderView,
|
||||||
|
Row(children: <Widget>[
|
||||||
|
EntryItem(
|
||||||
|
count: payload['membersWithRole']['totalCount'],
|
||||||
|
text: 'Members',
|
||||||
|
screenBuilder: (context) =>
|
||||||
|
UsersScreen(type: UsersScreenType.orgs, login: login),
|
||||||
|
),
|
||||||
|
]),
|
||||||
borderView1,
|
borderView1,
|
||||||
TableView(
|
TableView(
|
||||||
hasIcon: true,
|
hasIcon: true,
|
||||||
|
|
|
@ -39,7 +39,7 @@ class UsersScreen extends StatelessWidget {
|
||||||
return Tuple3(
|
return Tuple3(
|
||||||
'repository', 'owner: "$login", name: "$name"', 'watchers');
|
'repository', 'owner: "$login", name: "$name"', 'watchers');
|
||||||
case UsersScreenType.orgs:
|
case UsersScreenType.orgs:
|
||||||
return Tuple3('', '', ''); // FIXME:
|
return Tuple3('organization', 'login: "$login"', 'membersWithRole');
|
||||||
default:
|
default:
|
||||||
throw 'Should not be here';
|
throw 'Should not be here';
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,27 +85,6 @@ var createWarning =
|
||||||
var warningSpan =
|
var warningSpan =
|
||||||
TextSpan(text: 'xxx', style: TextStyle(color: Colors.redAccent));
|
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> join<T>(T seperator, List<T> xs) {
|
||||||
List<T> result = [];
|
List<T> result = [];
|
||||||
xs.asMap().forEach((index, x) {
|
xs.asMap().forEach((index, x) {
|
||||||
|
|
|
@ -6,6 +6,27 @@ import '../utils/utils.dart';
|
||||||
import '../screens/repo.dart';
|
import '../screens/repo.dart';
|
||||||
import 'link.dart';
|
import 'link.dart';
|
||||||
|
|
||||||
|
const repoChunk = '''
|
||||||
|
owner {
|
||||||
|
login
|
||||||
|
avatarUrl
|
||||||
|
}
|
||||||
|
name
|
||||||
|
description
|
||||||
|
isPrivate
|
||||||
|
isFork
|
||||||
|
stargazers {
|
||||||
|
totalCount
|
||||||
|
}
|
||||||
|
forks {
|
||||||
|
totalCount
|
||||||
|
}
|
||||||
|
primaryLanguage {
|
||||||
|
color
|
||||||
|
name
|
||||||
|
}
|
||||||
|
''';
|
||||||
|
|
||||||
class RepoItem extends StatelessWidget {
|
class RepoItem extends StatelessWidget {
|
||||||
final Map<String, dynamic> payload;
|
final Map<String, dynamic> payload;
|
||||||
final bool inRepoScreen;
|
final bool inRepoScreen;
|
||||||
|
|
|
@ -4,6 +4,12 @@ import 'package:git_touch/widgets/avatar.dart';
|
||||||
import 'package:git_touch/widgets/link.dart';
|
import 'package:git_touch/widgets/link.dart';
|
||||||
import 'package:primer/primer.dart';
|
import 'package:primer/primer.dart';
|
||||||
|
|
||||||
|
const userGqlChunk = '''
|
||||||
|
name
|
||||||
|
avatarUrl
|
||||||
|
bio
|
||||||
|
''';
|
||||||
|
|
||||||
class UserItem extends StatelessWidget {
|
class UserItem extends StatelessWidget {
|
||||||
final String login;
|
final String login;
|
||||||
final String name;
|
final String name;
|
||||||
|
|
Loading…
Reference in New Issue