refactor: user screen types

This commit is contained in:
Rongjian Zhang 2019-12-07 21:12:48 +08:00
parent 0543138f71
commit 6259faf935
4 changed files with 81 additions and 132 deletions

View File

@ -35,11 +35,17 @@ class GithubUserRepositoryOwner with EquatableMixin {
return _$GithubUserRepositoryOwnerFromJson(json);
}
String login;
String avatarUrl;
String url;
@JsonKey(name: '__typename')
String resolveType;
@override
List<Object> get props => [resolveType];
List<Object> get props => [login, avatarUrl, url, resolveType];
Map<String, dynamic> toJson() {
switch (resolveType) {
case 'User':
@ -70,12 +76,8 @@ class GithubUserUser extends GithubUserAuditEntryActor
factory GithubUserUser.fromJson(Map<String, dynamic> json) =>
_$GithubUserUserFromJson(json);
String login;
String name;
String avatarUrl;
String bio;
String company;
@ -100,17 +102,22 @@ class GithubUserUser extends GithubUserAuditEntryActor
bool viewerIsFollowing;
String url;
@override
@JsonKey(name: '__typename')
String resolveType;
@override
String login;
@override
String avatarUrl;
@override
String url;
@override
List<Object> get props => [
login,
name,
avatarUrl,
bio,
company,
location,
@ -123,8 +130,10 @@ class GithubUserUser extends GithubUserAuditEntryActor
pinnedItems,
viewerCanFollow,
viewerIsFollowing,
url,
resolveType
resolveType,
login,
avatarUrl,
url
];
Map<String, dynamic> toJson() => _$GithubUserUserToJson(this);
}
@ -466,17 +475,11 @@ class GithubUserActor with EquatableMixin {
factory GithubUserActor.fromJson(Map<String, dynamic> json) =>
_$GithubUserActorFromJson(json);
String login;
String avatarUrl;
String url;
@JsonKey(name: '__typename')
String resolveType;
@override
List<Object> get props => [login, avatarUrl, url, resolveType];
List<Object> get props => [resolveType];
Map<String, dynamic> toJson() => _$GithubUserActorToJson(this);
}
@ -487,8 +490,6 @@ class GithubUserProfileOwner with EquatableMixin {
factory GithubUserProfileOwner.fromJson(Map<String, dynamic> json) =>
_$GithubUserProfileOwnerFromJson(json);
String login;
String name;
String location;
@ -504,7 +505,7 @@ class GithubUserProfileOwner with EquatableMixin {
@override
List<Object> get props =>
[login, name, location, email, websiteUrl, pinnedItems, resolveType];
[name, location, email, websiteUrl, pinnedItems, resolveType];
Map<String, dynamic> toJson() => _$GithubUserProfileOwnerToJson(this);
}
@ -542,12 +543,8 @@ class GithubUserOrganization extends GithubUserAuditEntryActor
factory GithubUserOrganization.fromJson(Map<String, dynamic> json) =>
_$GithubUserOrganizationFromJson(json);
String login;
String name;
String avatarUrl;
String description;
String location;
@ -556,8 +553,6 @@ class GithubUserOrganization extends GithubUserAuditEntryActor
String websiteUrl;
String url;
GithubUserPinnableItemConnection pinnedItems;
GithubUserPinnableItemConnection pinnableItems;
@ -568,20 +563,29 @@ class GithubUserOrganization extends GithubUserAuditEntryActor
@JsonKey(name: '__typename')
String resolveType;
@override
String login;
@override
String avatarUrl;
@override
String url;
@override
List<Object> get props => [
login,
name,
avatarUrl,
description,
location,
email,
websiteUrl,
url,
pinnedItems,
pinnableItems,
membersWithRole,
resolveType
resolveType,
login,
avatarUrl,
url
];
Map<String, dynamic> toJson() => _$GithubUserOrganizationToJson(this);
}
@ -665,30 +669,36 @@ class GithubUserQuery extends GraphQLQuery<GithubUser, GithubUserArguments> {
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'login'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'avatarUrl'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'url'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
InlineFragmentNode(
typeCondition: TypeConditionNode(
on: NamedTypeNode(
name: NameNode(value: 'User'), isNonNull: false)),
directives: [],
selectionSet: SelectionSetNode(selections: [
FieldNode(
name: NameNode(value: 'login'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'name'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'avatarUrl'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'bio'),
alias: null,
@ -803,12 +813,6 @@ class GithubUserQuery extends GraphQLQuery<GithubUser, GithubUserArguments> {
directives: [],
selectionSet:
SelectionSetNode(selections: [
FieldNode(
name: NameNode(value: '__typename'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'login'),
alias: null,
@ -940,13 +944,6 @@ class GithubUserQuery extends GraphQLQuery<GithubUser, GithubUserArguments> {
directives: [],
selectionSet:
SelectionSetNode(selections: [
FieldNode(
name: NameNode(
value: '__typename'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name:
NameNode(value: 'login'),
@ -1053,12 +1050,6 @@ class GithubUserQuery extends GraphQLQuery<GithubUser, GithubUserArguments> {
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'url'),
alias: null,
arguments: [],
directives: [],
selectionSet: null)
])),
InlineFragmentNode(
@ -1068,24 +1059,12 @@ class GithubUserQuery extends GraphQLQuery<GithubUser, GithubUserArguments> {
isNonNull: false)),
directives: [],
selectionSet: SelectionSetNode(selections: [
FieldNode(
name: NameNode(value: 'login'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'name'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'avatarUrl'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'description'),
alias: null,
@ -1110,12 +1089,6 @@ class GithubUserQuery extends GraphQLQuery<GithubUser, GithubUserArguments> {
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'url'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name: NameNode(value: 'pinnedItems'),
alias: null,
@ -1154,13 +1127,6 @@ class GithubUserQuery extends GraphQLQuery<GithubUser, GithubUserArguments> {
directives: [],
selectionSet:
SelectionSetNode(selections: [
FieldNode(
name: NameNode(
value: '__typename'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name:
NameNode(value: 'login'),
@ -1306,13 +1272,6 @@ class GithubUserQuery extends GraphQLQuery<GithubUser, GithubUserArguments> {
directives: [],
selectionSet:
SelectionSetNode(selections: [
FieldNode(
name: NameNode(
value: '__typename'),
alias: null,
arguments: [],
directives: [],
selectionSet: null),
FieldNode(
name:
NameNode(value: 'login'),

View File

@ -22,20 +22,24 @@ Map<String, dynamic> _$GithubUserToJson(GithubUser instance) =>
GithubUserRepositoryOwner _$GithubUserRepositoryOwnerFromJson(
Map<String, dynamic> json) {
return GithubUserRepositoryOwner()
..login = json['login'] as String
..avatarUrl = json['avatarUrl'] as String
..url = json['url'] as String
..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$GithubUserRepositoryOwnerToJson(
GithubUserRepositoryOwner instance) =>
<String, dynamic>{
'login': instance.login,
'avatarUrl': instance.avatarUrl,
'url': instance.url,
'__typename': instance.resolveType,
};
GithubUserUser _$GithubUserUserFromJson(Map<String, dynamic> json) {
return GithubUserUser()
..login = json['login'] as String
..name = json['name'] as String
..avatarUrl = json['avatarUrl'] as String
..bio = json['bio'] as String
..company = json['company'] as String
..location = json['location'] as String
@ -63,15 +67,15 @@ GithubUserUser _$GithubUserUserFromJson(Map<String, dynamic> json) {
json['pinnedItems'] as Map<String, dynamic>)
..viewerCanFollow = json['viewerCanFollow'] as bool
..viewerIsFollowing = json['viewerIsFollowing'] as bool
..url = json['url'] as String
..resolveType = json['__typename'] as String;
..resolveType = json['__typename'] as String
..login = json['login'] as String
..avatarUrl = json['avatarUrl'] as String
..url = json['url'] as String;
}
Map<String, dynamic> _$GithubUserUserToJson(GithubUserUser instance) =>
<String, dynamic>{
'login': instance.login,
'name': instance.name,
'avatarUrl': instance.avatarUrl,
'bio': instance.bio,
'company': instance.company,
'location': instance.location,
@ -84,8 +88,10 @@ Map<String, dynamic> _$GithubUserUserToJson(GithubUserUser instance) =>
'pinnedItems': instance.pinnedItems?.toJson(),
'viewerCanFollow': instance.viewerCanFollow,
'viewerIsFollowing': instance.viewerIsFollowing,
'url': instance.url,
'__typename': instance.resolveType,
'login': instance.login,
'avatarUrl': instance.avatarUrl,
'url': instance.url,
};
GithubUserStarredRepositoryConnection
@ -351,25 +357,17 @@ Map<String, dynamic> _$GithubUserAuditEntryActorToJson(
<String, dynamic>{};
GithubUserActor _$GithubUserActorFromJson(Map<String, dynamic> json) {
return GithubUserActor()
..login = json['login'] as String
..avatarUrl = json['avatarUrl'] as String
..url = json['url'] as String
..resolveType = json['__typename'] as String;
return GithubUserActor()..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$GithubUserActorToJson(GithubUserActor instance) =>
<String, dynamic>{
'login': instance.login,
'avatarUrl': instance.avatarUrl,
'url': instance.url,
'__typename': instance.resolveType,
};
GithubUserProfileOwner _$GithubUserProfileOwnerFromJson(
Map<String, dynamic> json) {
return GithubUserProfileOwner()
..login = json['login'] as String
..name = json['name'] as String
..location = json['location'] as String
..email = json['email'] as String
@ -384,7 +382,6 @@ GithubUserProfileOwner _$GithubUserProfileOwnerFromJson(
Map<String, dynamic> _$GithubUserProfileOwnerToJson(
GithubUserProfileOwner instance) =>
<String, dynamic>{
'login': instance.login,
'name': instance.name,
'location': instance.location,
'email': instance.email,
@ -407,14 +404,11 @@ Map<String, dynamic> _$GithubUserSponsorableToJson(
GithubUserOrganization _$GithubUserOrganizationFromJson(
Map<String, dynamic> json) {
return GithubUserOrganization()
..login = json['login'] as String
..name = json['name'] as String
..avatarUrl = json['avatarUrl'] as String
..description = json['description'] as String
..location = json['location'] as String
..email = json['email'] as String
..websiteUrl = json['websiteUrl'] as String
..url = json['url'] as String
..pinnedItems = json['pinnedItems'] == null
? null
: GithubUserPinnableItemConnection.fromJson(
@ -427,24 +421,27 @@ GithubUserOrganization _$GithubUserOrganizationFromJson(
? null
: GithubUserOrganizationMemberConnection.fromJson(
json['membersWithRole'] as Map<String, dynamic>)
..resolveType = json['__typename'] as String;
..resolveType = json['__typename'] as String
..login = json['login'] as String
..avatarUrl = json['avatarUrl'] as String
..url = json['url'] as String;
}
Map<String, dynamic> _$GithubUserOrganizationToJson(
GithubUserOrganization instance) =>
<String, dynamic>{
'login': instance.login,
'name': instance.name,
'avatarUrl': instance.avatarUrl,
'description': instance.description,
'location': instance.location,
'email': instance.email,
'websiteUrl': instance.websiteUrl,
'url': instance.url,
'pinnedItems': instance.pinnedItems?.toJson(),
'pinnableItems': instance.pinnableItems?.toJson(),
'membersWithRole': instance.membersWithRole?.toJson(),
'__typename': instance.resolveType,
'login': instance.login,
'avatarUrl': instance.avatarUrl,
'url': instance.url,
};
GithubUserOrganizationMemberConnection

View File

@ -1,10 +1,11 @@
query($login: String!) {
repositoryOwner(login: $login) {
__typename
login
avatarUrl
url
... on User {
login
name
avatarUrl
bio
company
location
@ -27,7 +28,6 @@ query($login: String!) {
totalCount
nodes {
owner {
__typename
login
avatarUrl
}
@ -53,7 +53,6 @@ query($login: String!) {
__typename
... on Repository {
owner {
__typename
login
avatarUrl
}
@ -76,23 +75,18 @@ query($login: String!) {
}
viewerCanFollow
viewerIsFollowing
url
}
... on Organization {
login
name
avatarUrl
description
location
email
websiteUrl
url
pinnedItems(first: 6) {
nodes {
__typename
... on Repository {
owner {
__typename
login
avatarUrl
}
@ -119,7 +113,6 @@ query($login: String!) {
__typename
... on Repository {
owner {
__typename
login
avatarUrl
}

View File

@ -83,8 +83,8 @@ class RepositoryItem extends StatelessWidget {
RepositoryItem.github(GithubUserRepository payload,
{this.inRepoScreen = false})
: this.owner = (payload.owner as GithubUserUser).login,
this.avatarUrl = (payload.owner as GithubUserUser).avatarUrl,
: this.owner = payload.owner.login,
this.avatarUrl = payload.owner.avatarUrl,
this.name = payload.name,
this.description = payload.description,
this.iconData = Octicons.repo, // TODO:
@ -92,8 +92,8 @@ class RepositoryItem extends StatelessWidget {
this.forkCount = payload.forks.totalCount,
this.primaryLanguageName = payload.primaryLanguage?.name,
this.primaryLanguageColor = payload.primaryLanguage?.color,
this.screenBuilder = ((_) => RepositoryScreen(
(payload.owner as GithubUserUser).login, payload.name)),
this.screenBuilder =
((_) => RepositoryScreen(payload.owner.login, payload.name)),
this.topics = []; // TODO:
// this.topics = payload['repositoryTopics'] == null
// ? []