1
0
mirror of https://github.com/git-touch/git-touch synced 2025-02-19 13:00:41 +01:00

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

View File

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

View File

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

View File

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