refactor: add prefix for graphql types

This commit is contained in:
Rongjian Zhang 2019-12-07 15:28:43 +08:00
parent 991d563b29
commit 88984e7164
7 changed files with 423 additions and 356 deletions

View File

@ -25,9 +25,10 @@ targets:
options:
schema_mapping:
- schema: lib/github.schema.json
output: lib/graphql/gh_user.dart
queries_glob: lib/graphql/user.graphql
output: lib/graphql/github_user.dart
queries_glob: lib/graphql/github_user.graphql
resolve_type_field: __typename
add_query_prefix: true
scalar_mapping:
- graphql_type: URI
dart_type: String

View File

@ -4,34 +4,35 @@ import 'package:artemis/artemis.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:equatable/equatable.dart';
import 'package:gql/ast.dart';
part 'gh_user.g.dart';
part 'github_user.g.dart';
@JsonSerializable(explicitToJson: true)
class GhUser with EquatableMixin {
GhUser();
class GithubUser with EquatableMixin {
GithubUser();
factory GhUser.fromJson(Map<String, dynamic> json) => _$GhUserFromJson(json);
factory GithubUser.fromJson(Map<String, dynamic> json) =>
_$GithubUserFromJson(json);
RepositoryOwner repositoryOwner;
GithubUserRepositoryOwner repositoryOwner;
@override
List<Object> get props => [repositoryOwner];
Map<String, dynamic> toJson() => _$GhUserToJson(this);
Map<String, dynamic> toJson() => _$GithubUserToJson(this);
}
@JsonSerializable(explicitToJson: true)
class RepositoryOwner with EquatableMixin {
RepositoryOwner();
class GithubUserRepositoryOwner with EquatableMixin {
GithubUserRepositoryOwner();
factory RepositoryOwner.fromJson(Map<String, dynamic> json) {
factory GithubUserRepositoryOwner.fromJson(Map<String, dynamic> json) {
switch (json['__typename'].toString()) {
case 'User':
return User.fromJson(json);
return GithubUserUser.fromJson(json);
case 'Organization':
return Organization.fromJson(json);
return GithubUserOrganization.fromJson(json);
default:
}
return _$RepositoryOwnerFromJson(json);
return _$GithubUserRepositoryOwnerFromJson(json);
}
@JsonKey(name: '__typename')
@ -42,31 +43,32 @@ class RepositoryOwner with EquatableMixin {
Map<String, dynamic> toJson() {
switch (resolveType) {
case 'User':
return (this as User).toJson();
return (this as GithubUserUser).toJson();
case 'Organization':
return (this as Organization).toJson();
return (this as GithubUserOrganization).toJson();
default:
}
return _$RepositoryOwnerToJson(this);
return _$GithubUserRepositoryOwnerToJson(this);
}
}
@JsonSerializable(explicitToJson: true)
class User extends AuditEntryActor
class GithubUserUser extends GithubUserAuditEntryActor
with EquatableMixin
implements
Node,
Actor,
RegistryPackageOwner,
RegistryPackageSearch,
ProjectOwner,
RepositoryOwner,
UniformResourceLocatable,
ProfileOwner,
Sponsorable {
User();
GithubUserNode,
GithubUserActor,
GithubUserRegistryPackageOwner,
GithubUserRegistryPackageSearch,
GithubUserProjectOwner,
GithubUserRepositoryOwner,
GithubUserUniformResourceLocatable,
GithubUserProfileOwner,
GithubUserSponsorable {
GithubUserUser();
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
factory GithubUserUser.fromJson(Map<String, dynamic> json) =>
_$GithubUserUserFromJson(json);
String login;
@ -84,15 +86,15 @@ class User extends AuditEntryActor
String websiteUrl;
StarredRepositoryConnection starredRepositories;
GithubUserStarredRepositoryConnection starredRepositories;
FollowerConnection followers;
GithubUserFollowerConnection followers;
FollowingConnection following;
GithubUserFollowingConnection following;
RepositoryConnection repositories;
GithubUserRepositoryConnection repositories;
PinnableItemConnection pinnedItems;
GithubUserPinnableItemConnection pinnedItems;
bool viewerCanFollow;
@ -124,86 +126,88 @@ class User extends AuditEntryActor
url,
resolveType
];
Map<String, dynamic> toJson() => _$UserToJson(this);
Map<String, dynamic> toJson() => _$GithubUserUserToJson(this);
}
@JsonSerializable(explicitToJson: true)
class StarredRepositoryConnection with EquatableMixin {
StarredRepositoryConnection();
class GithubUserStarredRepositoryConnection with EquatableMixin {
GithubUserStarredRepositoryConnection();
factory StarredRepositoryConnection.fromJson(Map<String, dynamic> json) =>
_$StarredRepositoryConnectionFromJson(json);
factory GithubUserStarredRepositoryConnection.fromJson(
Map<String, dynamic> json) =>
_$GithubUserStarredRepositoryConnectionFromJson(json);
int totalCount;
@override
List<Object> get props => [totalCount];
Map<String, dynamic> toJson() => _$StarredRepositoryConnectionToJson(this);
Map<String, dynamic> toJson() =>
_$GithubUserStarredRepositoryConnectionToJson(this);
}
@JsonSerializable(explicitToJson: true)
class FollowerConnection with EquatableMixin {
FollowerConnection();
class GithubUserFollowerConnection with EquatableMixin {
GithubUserFollowerConnection();
factory FollowerConnection.fromJson(Map<String, dynamic> json) =>
_$FollowerConnectionFromJson(json);
factory GithubUserFollowerConnection.fromJson(Map<String, dynamic> json) =>
_$GithubUserFollowerConnectionFromJson(json);
int totalCount;
@override
List<Object> get props => [totalCount];
Map<String, dynamic> toJson() => _$FollowerConnectionToJson(this);
Map<String, dynamic> toJson() => _$GithubUserFollowerConnectionToJson(this);
}
@JsonSerializable(explicitToJson: true)
class FollowingConnection with EquatableMixin {
FollowingConnection();
class GithubUserFollowingConnection with EquatableMixin {
GithubUserFollowingConnection();
factory FollowingConnection.fromJson(Map<String, dynamic> json) =>
_$FollowingConnectionFromJson(json);
factory GithubUserFollowingConnection.fromJson(Map<String, dynamic> json) =>
_$GithubUserFollowingConnectionFromJson(json);
int totalCount;
@override
List<Object> get props => [totalCount];
Map<String, dynamic> toJson() => _$FollowingConnectionToJson(this);
Map<String, dynamic> toJson() => _$GithubUserFollowingConnectionToJson(this);
}
@JsonSerializable(explicitToJson: true)
class RepositoryConnection with EquatableMixin {
RepositoryConnection();
class GithubUserRepositoryConnection with EquatableMixin {
GithubUserRepositoryConnection();
factory RepositoryConnection.fromJson(Map<String, dynamic> json) =>
_$RepositoryConnectionFromJson(json);
factory GithubUserRepositoryConnection.fromJson(Map<String, dynamic> json) =>
_$GithubUserRepositoryConnectionFromJson(json);
int totalCount;
List<Repository> nodes;
List<GithubUserRepository> nodes;
@override
List<Object> get props => [totalCount, nodes];
Map<String, dynamic> toJson() => _$RepositoryConnectionToJson(this);
Map<String, dynamic> toJson() => _$GithubUserRepositoryConnectionToJson(this);
}
@JsonSerializable(explicitToJson: true)
class Repository extends PinnableItem
class GithubUserRepository extends GithubUserPinnableItem
with EquatableMixin
implements
Node,
ProjectOwner,
RegistryPackageOwner,
RegistryPackageSearch,
Subscribable,
Starrable,
UniformResourceLocatable,
RepositoryInfo {
Repository();
GithubUserNode,
GithubUserProjectOwner,
GithubUserRegistryPackageOwner,
GithubUserRegistryPackageSearch,
GithubUserSubscribable,
GithubUserStarrable,
GithubUserUniformResourceLocatable,
GithubUserRepositoryInfo {
GithubUserRepository();
factory Repository.fromJson(Map<String, dynamic> json) =>
_$RepositoryFromJson(json);
factory GithubUserRepository.fromJson(Map<String, dynamic> json) =>
_$GithubUserRepositoryFromJson(json);
@override
RepositoryOwner owner;
GithubUserRepositoryOwner owner;
@override
String name;
@ -218,11 +222,11 @@ class Repository extends PinnableItem
bool isFork;
@override
StargazerConnection stargazers;
GithubUserStargazerConnection stargazers;
RepositoryConnection forks;
GithubUserRepositoryConnection forks;
Language primaryLanguage;
GithubUserLanguage primaryLanguage;
@override
@JsonKey(name: '__typename')
@ -240,29 +244,29 @@ class Repository extends PinnableItem
primaryLanguage,
resolveType
];
Map<String, dynamic> toJson() => _$RepositoryToJson(this);
Map<String, dynamic> toJson() => _$GithubUserRepositoryToJson(this);
}
@JsonSerializable(explicitToJson: true)
class StargazerConnection with EquatableMixin {
StargazerConnection();
class GithubUserStargazerConnection with EquatableMixin {
GithubUserStargazerConnection();
factory StargazerConnection.fromJson(Map<String, dynamic> json) =>
_$StargazerConnectionFromJson(json);
factory GithubUserStargazerConnection.fromJson(Map<String, dynamic> json) =>
_$GithubUserStargazerConnectionFromJson(json);
int totalCount;
@override
List<Object> get props => [totalCount];
Map<String, dynamic> toJson() => _$StargazerConnectionToJson(this);
Map<String, dynamic> toJson() => _$GithubUserStargazerConnectionToJson(this);
}
@JsonSerializable(explicitToJson: true)
class Language with EquatableMixin implements Node {
Language();
class GithubUserLanguage with EquatableMixin implements GithubUserNode {
GithubUserLanguage();
factory Language.fromJson(Map<String, dynamic> json) =>
_$LanguageFromJson(json);
factory GithubUserLanguage.fromJson(Map<String, dynamic> json) =>
_$GithubUserLanguageFromJson(json);
String color;
@ -274,135 +278,139 @@ class Language with EquatableMixin implements Node {
@override
List<Object> get props => [color, name, resolveType];
Map<String, dynamic> toJson() => _$LanguageToJson(this);
Map<String, dynamic> toJson() => _$GithubUserLanguageToJson(this);
}
@JsonSerializable(explicitToJson: true)
class Node with EquatableMixin {
Node();
class GithubUserNode with EquatableMixin {
GithubUserNode();
factory Node.fromJson(Map<String, dynamic> json) => _$NodeFromJson(json);
factory GithubUserNode.fromJson(Map<String, dynamic> json) =>
_$GithubUserNodeFromJson(json);
@JsonKey(name: '__typename')
String resolveType;
@override
List<Object> get props => [resolveType];
Map<String, dynamic> toJson() => _$NodeToJson(this);
Map<String, dynamic> toJson() => _$GithubUserNodeToJson(this);
}
@JsonSerializable(explicitToJson: true)
class PinnableItem with EquatableMixin {
PinnableItem();
class GithubUserPinnableItem with EquatableMixin {
GithubUserPinnableItem();
factory PinnableItem.fromJson(Map<String, dynamic> json) =>
_$PinnableItemFromJson(json);
factory GithubUserPinnableItem.fromJson(Map<String, dynamic> json) =>
_$GithubUserPinnableItemFromJson(json);
@override
List<Object> get props => [];
Map<String, dynamic> toJson() => _$PinnableItemToJson(this);
Map<String, dynamic> toJson() => _$GithubUserPinnableItemToJson(this);
}
@JsonSerializable(explicitToJson: true)
class ProjectOwner with EquatableMixin {
ProjectOwner();
class GithubUserProjectOwner with EquatableMixin {
GithubUserProjectOwner();
factory ProjectOwner.fromJson(Map<String, dynamic> json) =>
_$ProjectOwnerFromJson(json);
factory GithubUserProjectOwner.fromJson(Map<String, dynamic> json) =>
_$GithubUserProjectOwnerFromJson(json);
@JsonKey(name: '__typename')
String resolveType;
@override
List<Object> get props => [resolveType];
Map<String, dynamic> toJson() => _$ProjectOwnerToJson(this);
Map<String, dynamic> toJson() => _$GithubUserProjectOwnerToJson(this);
}
@JsonSerializable(explicitToJson: true)
class RegistryPackageOwner with EquatableMixin {
RegistryPackageOwner();
class GithubUserRegistryPackageOwner with EquatableMixin {
GithubUserRegistryPackageOwner();
factory RegistryPackageOwner.fromJson(Map<String, dynamic> json) =>
_$RegistryPackageOwnerFromJson(json);
factory GithubUserRegistryPackageOwner.fromJson(Map<String, dynamic> json) =>
_$GithubUserRegistryPackageOwnerFromJson(json);
@JsonKey(name: '__typename')
String resolveType;
@override
List<Object> get props => [resolveType];
Map<String, dynamic> toJson() => _$RegistryPackageOwnerToJson(this);
Map<String, dynamic> toJson() => _$GithubUserRegistryPackageOwnerToJson(this);
}
@JsonSerializable(explicitToJson: true)
class RegistryPackageSearch with EquatableMixin {
RegistryPackageSearch();
class GithubUserRegistryPackageSearch with EquatableMixin {
GithubUserRegistryPackageSearch();
factory RegistryPackageSearch.fromJson(Map<String, dynamic> json) =>
_$RegistryPackageSearchFromJson(json);
factory GithubUserRegistryPackageSearch.fromJson(Map<String, dynamic> json) =>
_$GithubUserRegistryPackageSearchFromJson(json);
@JsonKey(name: '__typename')
String resolveType;
@override
List<Object> get props => [resolveType];
Map<String, dynamic> toJson() => _$RegistryPackageSearchToJson(this);
Map<String, dynamic> toJson() =>
_$GithubUserRegistryPackageSearchToJson(this);
}
@JsonSerializable(explicitToJson: true)
class Subscribable with EquatableMixin {
Subscribable();
class GithubUserSubscribable with EquatableMixin {
GithubUserSubscribable();
factory Subscribable.fromJson(Map<String, dynamic> json) =>
_$SubscribableFromJson(json);
factory GithubUserSubscribable.fromJson(Map<String, dynamic> json) =>
_$GithubUserSubscribableFromJson(json);
@JsonKey(name: '__typename')
String resolveType;
@override
List<Object> get props => [resolveType];
Map<String, dynamic> toJson() => _$SubscribableToJson(this);
Map<String, dynamic> toJson() => _$GithubUserSubscribableToJson(this);
}
@JsonSerializable(explicitToJson: true)
class Starrable with EquatableMixin {
Starrable();
class GithubUserStarrable with EquatableMixin {
GithubUserStarrable();
factory Starrable.fromJson(Map<String, dynamic> json) =>
_$StarrableFromJson(json);
factory GithubUserStarrable.fromJson(Map<String, dynamic> json) =>
_$GithubUserStarrableFromJson(json);
StargazerConnection stargazers;
GithubUserStargazerConnection stargazers;
@JsonKey(name: '__typename')
String resolveType;
@override
List<Object> get props => [stargazers, resolveType];
Map<String, dynamic> toJson() => _$StarrableToJson(this);
Map<String, dynamic> toJson() => _$GithubUserStarrableToJson(this);
}
@JsonSerializable(explicitToJson: true)
class UniformResourceLocatable with EquatableMixin {
UniformResourceLocatable();
class GithubUserUniformResourceLocatable with EquatableMixin {
GithubUserUniformResourceLocatable();
factory UniformResourceLocatable.fromJson(Map<String, dynamic> json) =>
_$UniformResourceLocatableFromJson(json);
factory GithubUserUniformResourceLocatable.fromJson(
Map<String, dynamic> json) =>
_$GithubUserUniformResourceLocatableFromJson(json);
@JsonKey(name: '__typename')
String resolveType;
@override
List<Object> get props => [resolveType];
Map<String, dynamic> toJson() => _$UniformResourceLocatableToJson(this);
Map<String, dynamic> toJson() =>
_$GithubUserUniformResourceLocatableToJson(this);
}
@JsonSerializable(explicitToJson: true)
class RepositoryInfo with EquatableMixin {
RepositoryInfo();
class GithubUserRepositoryInfo with EquatableMixin {
GithubUserRepositoryInfo();
factory RepositoryInfo.fromJson(Map<String, dynamic> json) =>
_$RepositoryInfoFromJson(json);
factory GithubUserRepositoryInfo.fromJson(Map<String, dynamic> json) =>
_$GithubUserRepositoryInfoFromJson(json);
RepositoryOwner owner;
GithubUserRepositoryOwner owner;
String name;
@ -418,42 +426,45 @@ class RepositoryInfo with EquatableMixin {
@override
List<Object> get props =>
[owner, name, description, isPrivate, isFork, resolveType];
Map<String, dynamic> toJson() => _$RepositoryInfoToJson(this);
Map<String, dynamic> toJson() => _$GithubUserRepositoryInfoToJson(this);
}
@JsonSerializable(explicitToJson: true)
class PinnableItemConnection with EquatableMixin {
PinnableItemConnection();
class GithubUserPinnableItemConnection with EquatableMixin {
GithubUserPinnableItemConnection();
factory PinnableItemConnection.fromJson(Map<String, dynamic> json) =>
_$PinnableItemConnectionFromJson(json);
factory GithubUserPinnableItemConnection.fromJson(
Map<String, dynamic> json) =>
_$GithubUserPinnableItemConnectionFromJson(json);
int totalCount;
List<PinnableItem> nodes;
List<GithubUserPinnableItem> nodes;
@override
List<Object> get props => [totalCount, nodes];
Map<String, dynamic> toJson() => _$PinnableItemConnectionToJson(this);
Map<String, dynamic> toJson() =>
_$GithubUserPinnableItemConnectionToJson(this);
}
@JsonSerializable(explicitToJson: true)
class AuditEntryActor with EquatableMixin {
AuditEntryActor();
class GithubUserAuditEntryActor with EquatableMixin {
GithubUserAuditEntryActor();
factory AuditEntryActor.fromJson(Map<String, dynamic> json) =>
_$AuditEntryActorFromJson(json);
factory GithubUserAuditEntryActor.fromJson(Map<String, dynamic> json) =>
_$GithubUserAuditEntryActorFromJson(json);
@override
List<Object> get props => [];
Map<String, dynamic> toJson() => _$AuditEntryActorToJson(this);
Map<String, dynamic> toJson() => _$GithubUserAuditEntryActorToJson(this);
}
@JsonSerializable(explicitToJson: true)
class Actor with EquatableMixin {
Actor();
class GithubUserActor with EquatableMixin {
GithubUserActor();
factory Actor.fromJson(Map<String, dynamic> json) => _$ActorFromJson(json);
factory GithubUserActor.fromJson(Map<String, dynamic> json) =>
_$GithubUserActorFromJson(json);
String login;
@ -466,15 +477,15 @@ class Actor with EquatableMixin {
@override
List<Object> get props => [login, avatarUrl, url, resolveType];
Map<String, dynamic> toJson() => _$ActorToJson(this);
Map<String, dynamic> toJson() => _$GithubUserActorToJson(this);
}
@JsonSerializable(explicitToJson: true)
class ProfileOwner with EquatableMixin {
ProfileOwner();
class GithubUserProfileOwner with EquatableMixin {
GithubUserProfileOwner();
factory ProfileOwner.fromJson(Map<String, dynamic> json) =>
_$ProfileOwnerFromJson(json);
factory GithubUserProfileOwner.fromJson(Map<String, dynamic> json) =>
_$GithubUserProfileOwnerFromJson(json);
String login;
@ -486,7 +497,7 @@ class ProfileOwner with EquatableMixin {
String websiteUrl;
PinnableItemConnection pinnedItems;
GithubUserPinnableItemConnection pinnedItems;
@JsonKey(name: '__typename')
String resolveType;
@ -494,42 +505,42 @@ class ProfileOwner with EquatableMixin {
@override
List<Object> get props =>
[login, name, location, email, websiteUrl, pinnedItems, resolveType];
Map<String, dynamic> toJson() => _$ProfileOwnerToJson(this);
Map<String, dynamic> toJson() => _$GithubUserProfileOwnerToJson(this);
}
@JsonSerializable(explicitToJson: true)
class Sponsorable with EquatableMixin {
Sponsorable();
class GithubUserSponsorable with EquatableMixin {
GithubUserSponsorable();
factory Sponsorable.fromJson(Map<String, dynamic> json) =>
_$SponsorableFromJson(json);
factory GithubUserSponsorable.fromJson(Map<String, dynamic> json) =>
_$GithubUserSponsorableFromJson(json);
@JsonKey(name: '__typename')
String resolveType;
@override
List<Object> get props => [resolveType];
Map<String, dynamic> toJson() => _$SponsorableToJson(this);
Map<String, dynamic> toJson() => _$GithubUserSponsorableToJson(this);
}
@JsonSerializable(explicitToJson: true)
class Organization extends AuditEntryActor
class GithubUserOrganization extends GithubUserAuditEntryActor
with EquatableMixin
implements
Node,
Actor,
RegistryPackageOwner,
RegistryPackageSearch,
ProjectOwner,
RepositoryOwner,
UniformResourceLocatable,
MemberStatusable,
ProfileOwner,
Sponsorable {
Organization();
GithubUserNode,
GithubUserActor,
GithubUserRegistryPackageOwner,
GithubUserRegistryPackageSearch,
GithubUserProjectOwner,
GithubUserRepositoryOwner,
GithubUserUniformResourceLocatable,
GithubUserMemberStatusable,
GithubUserProfileOwner,
GithubUserSponsorable {
GithubUserOrganization();
factory Organization.fromJson(Map<String, dynamic> json) =>
_$OrganizationFromJson(json);
factory GithubUserOrganization.fromJson(Map<String, dynamic> json) =>
_$GithubUserOrganizationFromJson(json);
String login;
@ -547,11 +558,11 @@ class Organization extends AuditEntryActor
String url;
PinnableItemConnection pinnedItems;
GithubUserPinnableItemConnection pinnedItems;
PinnableItemConnection pinnableItems;
GithubUserPinnableItemConnection pinnableItems;
OrganizationMemberConnection membersWithRole;
GithubUserOrganizationMemberConnection membersWithRole;
@override
@JsonKey(name: '__typename')
@ -572,54 +583,56 @@ class Organization extends AuditEntryActor
membersWithRole,
resolveType
];
Map<String, dynamic> toJson() => _$OrganizationToJson(this);
Map<String, dynamic> toJson() => _$GithubUserOrganizationToJson(this);
}
@JsonSerializable(explicitToJson: true)
class OrganizationMemberConnection with EquatableMixin {
OrganizationMemberConnection();
class GithubUserOrganizationMemberConnection with EquatableMixin {
GithubUserOrganizationMemberConnection();
factory OrganizationMemberConnection.fromJson(Map<String, dynamic> json) =>
_$OrganizationMemberConnectionFromJson(json);
factory GithubUserOrganizationMemberConnection.fromJson(
Map<String, dynamic> json) =>
_$GithubUserOrganizationMemberConnectionFromJson(json);
int totalCount;
@override
List<Object> get props => [totalCount];
Map<String, dynamic> toJson() => _$OrganizationMemberConnectionToJson(this);
Map<String, dynamic> toJson() =>
_$GithubUserOrganizationMemberConnectionToJson(this);
}
@JsonSerializable(explicitToJson: true)
class MemberStatusable with EquatableMixin {
MemberStatusable();
class GithubUserMemberStatusable with EquatableMixin {
GithubUserMemberStatusable();
factory MemberStatusable.fromJson(Map<String, dynamic> json) =>
_$MemberStatusableFromJson(json);
factory GithubUserMemberStatusable.fromJson(Map<String, dynamic> json) =>
_$GithubUserMemberStatusableFromJson(json);
@JsonKey(name: '__typename')
String resolveType;
@override
List<Object> get props => [resolveType];
Map<String, dynamic> toJson() => _$MemberStatusableToJson(this);
Map<String, dynamic> toJson() => _$GithubUserMemberStatusableToJson(this);
}
@JsonSerializable(explicitToJson: true)
class GhUserArguments extends JsonSerializable with EquatableMixin {
GhUserArguments({this.login});
class GithubUserArguments extends JsonSerializable with EquatableMixin {
GithubUserArguments({this.login});
factory GhUserArguments.fromJson(Map<String, dynamic> json) =>
_$GhUserArgumentsFromJson(json);
factory GithubUserArguments.fromJson(Map<String, dynamic> json) =>
_$GithubUserArgumentsFromJson(json);
final String login;
@override
List<Object> get props => [login];
Map<String, dynamic> toJson() => _$GhUserArgumentsToJson(this);
Map<String, dynamic> toJson() => _$GithubUserArgumentsToJson(this);
}
class GhUserQuery extends GraphQLQuery<GhUser, GhUserArguments> {
GhUserQuery({this.variables});
class GithubUserQuery extends GraphQLQuery<GithubUser, GithubUserArguments> {
GithubUserQuery({this.variables});
@override
final DocumentNode document = DocumentNode(definitions: [
@ -1414,13 +1427,13 @@ class GhUserQuery extends GraphQLQuery<GhUser, GhUserArguments> {
]);
@override
final String operationName = 'gh_user';
final String operationName = 'github_user';
@override
final GhUserArguments variables;
final GithubUserArguments variables;
@override
List<Object> get props => [document, operationName, variables];
@override
GhUser parse(Map<String, dynamic> json) => GhUser.fromJson(json);
GithubUser parse(Map<String, dynamic> json) => GithubUser.fromJson(json);
}

View File

@ -1,34 +1,38 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'gh_user.dart';
part of 'github_user.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
GhUser _$GhUserFromJson(Map<String, dynamic> json) {
return GhUser()
GithubUser _$GithubUserFromJson(Map<String, dynamic> json) {
return GithubUser()
..repositoryOwner = json['repositoryOwner'] == null
? null
: RepositoryOwner.fromJson(
: GithubUserRepositoryOwner.fromJson(
json['repositoryOwner'] as Map<String, dynamic>);
}
Map<String, dynamic> _$GhUserToJson(GhUser instance) => <String, dynamic>{
Map<String, dynamic> _$GithubUserToJson(GithubUser instance) =>
<String, dynamic>{
'repositoryOwner': instance.repositoryOwner?.toJson(),
};
RepositoryOwner _$RepositoryOwnerFromJson(Map<String, dynamic> json) {
return RepositoryOwner()..resolveType = json['__typename'] as String;
GithubUserRepositoryOwner _$GithubUserRepositoryOwnerFromJson(
Map<String, dynamic> json) {
return GithubUserRepositoryOwner()
..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$RepositoryOwnerToJson(RepositoryOwner instance) =>
Map<String, dynamic> _$GithubUserRepositoryOwnerToJson(
GithubUserRepositoryOwner instance) =>
<String, dynamic>{
'__typename': instance.resolveType,
};
User _$UserFromJson(Map<String, dynamic> json) {
return User()
GithubUserUser _$GithubUserUserFromJson(Map<String, dynamic> json) {
return GithubUserUser()
..login = json['login'] as String
..name = json['name'] as String
..avatarUrl = json['avatarUrl'] as String
@ -39,22 +43,23 @@ User _$UserFromJson(Map<String, dynamic> json) {
..websiteUrl = json['websiteUrl'] as String
..starredRepositories = json['starredRepositories'] == null
? null
: StarredRepositoryConnection.fromJson(
: GithubUserStarredRepositoryConnection.fromJson(
json['starredRepositories'] as Map<String, dynamic>)
..followers = json['followers'] == null
? null
: FollowerConnection.fromJson(json['followers'] as Map<String, dynamic>)
: GithubUserFollowerConnection.fromJson(
json['followers'] as Map<String, dynamic>)
..following = json['following'] == null
? null
: FollowingConnection.fromJson(
: GithubUserFollowingConnection.fromJson(
json['following'] as Map<String, dynamic>)
..repositories = json['repositories'] == null
? null
: RepositoryConnection.fromJson(
: GithubUserRepositoryConnection.fromJson(
json['repositories'] as Map<String, dynamic>)
..pinnedItems = json['pinnedItems'] == null
? null
: PinnableItemConnection.fromJson(
: GithubUserPinnableItemConnection.fromJson(
json['pinnedItems'] as Map<String, dynamic>)
..viewerCanFollow = json['viewerCanFollow'] as bool
..viewerIsFollowing = json['viewerIsFollowing'] as bool
@ -62,7 +67,8 @@ User _$UserFromJson(Map<String, dynamic> json) {
..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{
Map<String, dynamic> _$GithubUserUserToJson(GithubUserUser instance) =>
<String, dynamic>{
'login': instance.login,
'name': instance.name,
'avatarUrl': instance.avatarUrl,
@ -82,75 +88,86 @@ Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{
'__typename': instance.resolveType,
};
StarredRepositoryConnection _$StarredRepositoryConnectionFromJson(
GithubUserStarredRepositoryConnection
_$GithubUserStarredRepositoryConnectionFromJson(Map<String, dynamic> json) {
return GithubUserStarredRepositoryConnection()
..totalCount = json['totalCount'] as int;
}
Map<String, dynamic> _$GithubUserStarredRepositoryConnectionToJson(
GithubUserStarredRepositoryConnection instance) =>
<String, dynamic>{
'totalCount': instance.totalCount,
};
GithubUserFollowerConnection _$GithubUserFollowerConnectionFromJson(
Map<String, dynamic> json) {
return StarredRepositoryConnection()..totalCount = json['totalCount'] as int;
return GithubUserFollowerConnection()..totalCount = json['totalCount'] as int;
}
Map<String, dynamic> _$StarredRepositoryConnectionToJson(
StarredRepositoryConnection instance) =>
Map<String, dynamic> _$GithubUserFollowerConnectionToJson(
GithubUserFollowerConnection instance) =>
<String, dynamic>{
'totalCount': instance.totalCount,
};
FollowerConnection _$FollowerConnectionFromJson(Map<String, dynamic> json) {
return FollowerConnection()..totalCount = json['totalCount'] as int;
GithubUserFollowingConnection _$GithubUserFollowingConnectionFromJson(
Map<String, dynamic> json) {
return GithubUserFollowingConnection()
..totalCount = json['totalCount'] as int;
}
Map<String, dynamic> _$FollowerConnectionToJson(FollowerConnection instance) =>
Map<String, dynamic> _$GithubUserFollowingConnectionToJson(
GithubUserFollowingConnection instance) =>
<String, dynamic>{
'totalCount': instance.totalCount,
};
FollowingConnection _$FollowingConnectionFromJson(Map<String, dynamic> json) {
return FollowingConnection()..totalCount = json['totalCount'] as int;
}
Map<String, dynamic> _$FollowingConnectionToJson(
FollowingConnection instance) =>
<String, dynamic>{
'totalCount': instance.totalCount,
};
RepositoryConnection _$RepositoryConnectionFromJson(Map<String, dynamic> json) {
return RepositoryConnection()
GithubUserRepositoryConnection _$GithubUserRepositoryConnectionFromJson(
Map<String, dynamic> json) {
return GithubUserRepositoryConnection()
..totalCount = json['totalCount'] as int
..nodes = (json['nodes'] as List)
?.map((e) =>
e == null ? null : Repository.fromJson(e as Map<String, dynamic>))
?.map((e) => e == null
? null
: GithubUserRepository.fromJson(e as Map<String, dynamic>))
?.toList();
}
Map<String, dynamic> _$RepositoryConnectionToJson(
RepositoryConnection instance) =>
Map<String, dynamic> _$GithubUserRepositoryConnectionToJson(
GithubUserRepositoryConnection instance) =>
<String, dynamic>{
'totalCount': instance.totalCount,
'nodes': instance.nodes?.map((e) => e?.toJson())?.toList(),
};
Repository _$RepositoryFromJson(Map<String, dynamic> json) {
return Repository()
GithubUserRepository _$GithubUserRepositoryFromJson(Map<String, dynamic> json) {
return GithubUserRepository()
..owner = json['owner'] == null
? null
: RepositoryOwner.fromJson(json['owner'] as Map<String, dynamic>)
: GithubUserRepositoryOwner.fromJson(
json['owner'] as Map<String, dynamic>)
..name = json['name'] as String
..description = json['description'] as String
..isPrivate = json['isPrivate'] as bool
..isFork = json['isFork'] as bool
..stargazers = json['stargazers'] == null
? null
: StargazerConnection.fromJson(
: GithubUserStargazerConnection.fromJson(
json['stargazers'] as Map<String, dynamic>)
..forks = json['forks'] == null
? null
: RepositoryConnection.fromJson(json['forks'] as Map<String, dynamic>)
: GithubUserRepositoryConnection.fromJson(
json['forks'] as Map<String, dynamic>)
..primaryLanguage = json['primaryLanguage'] == null
? null
: Language.fromJson(json['primaryLanguage'] as Map<String, dynamic>)
: GithubUserLanguage.fromJson(
json['primaryLanguage'] as Map<String, dynamic>)
..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$RepositoryToJson(Repository instance) =>
Map<String, dynamic> _$GithubUserRepositoryToJson(
GithubUserRepository instance) =>
<String, dynamic>{
'owner': instance.owner?.toJson(),
'name': instance.name,
@ -163,113 +180,131 @@ Map<String, dynamic> _$RepositoryToJson(Repository instance) =>
'__typename': instance.resolveType,
};
StargazerConnection _$StargazerConnectionFromJson(Map<String, dynamic> json) {
return StargazerConnection()..totalCount = json['totalCount'] as int;
GithubUserStargazerConnection _$GithubUserStargazerConnectionFromJson(
Map<String, dynamic> json) {
return GithubUserStargazerConnection()
..totalCount = json['totalCount'] as int;
}
Map<String, dynamic> _$StargazerConnectionToJson(
StargazerConnection instance) =>
Map<String, dynamic> _$GithubUserStargazerConnectionToJson(
GithubUserStargazerConnection instance) =>
<String, dynamic>{
'totalCount': instance.totalCount,
};
Language _$LanguageFromJson(Map<String, dynamic> json) {
return Language()
GithubUserLanguage _$GithubUserLanguageFromJson(Map<String, dynamic> json) {
return GithubUserLanguage()
..color = json['color'] as String
..name = json['name'] as String
..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$LanguageToJson(Language instance) => <String, dynamic>{
Map<String, dynamic> _$GithubUserLanguageToJson(GithubUserLanguage instance) =>
<String, dynamic>{
'color': instance.color,
'name': instance.name,
'__typename': instance.resolveType,
};
Node _$NodeFromJson(Map<String, dynamic> json) {
return Node()..resolveType = json['__typename'] as String;
GithubUserNode _$GithubUserNodeFromJson(Map<String, dynamic> json) {
return GithubUserNode()..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$NodeToJson(Node instance) => <String, dynamic>{
Map<String, dynamic> _$GithubUserNodeToJson(GithubUserNode instance) =>
<String, dynamic>{
'__typename': instance.resolveType,
};
PinnableItem _$PinnableItemFromJson(Map<String, dynamic> json) {
return PinnableItem();
GithubUserPinnableItem _$GithubUserPinnableItemFromJson(
Map<String, dynamic> json) {
return GithubUserPinnableItem();
}
Map<String, dynamic> _$PinnableItemToJson(PinnableItem instance) =>
Map<String, dynamic> _$GithubUserPinnableItemToJson(
GithubUserPinnableItem instance) =>
<String, dynamic>{};
ProjectOwner _$ProjectOwnerFromJson(Map<String, dynamic> json) {
return ProjectOwner()..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$ProjectOwnerToJson(ProjectOwner instance) =>
<String, dynamic>{
'__typename': instance.resolveType,
};
RegistryPackageOwner _$RegistryPackageOwnerFromJson(Map<String, dynamic> json) {
return RegistryPackageOwner()..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$RegistryPackageOwnerToJson(
RegistryPackageOwner instance) =>
<String, dynamic>{
'__typename': instance.resolveType,
};
RegistryPackageSearch _$RegistryPackageSearchFromJson(
GithubUserProjectOwner _$GithubUserProjectOwnerFromJson(
Map<String, dynamic> json) {
return RegistryPackageSearch()..resolveType = json['__typename'] as String;
return GithubUserProjectOwner()..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$RegistryPackageSearchToJson(
RegistryPackageSearch instance) =>
Map<String, dynamic> _$GithubUserProjectOwnerToJson(
GithubUserProjectOwner instance) =>
<String, dynamic>{
'__typename': instance.resolveType,
};
Subscribable _$SubscribableFromJson(Map<String, dynamic> json) {
return Subscribable()..resolveType = json['__typename'] as String;
GithubUserRegistryPackageOwner _$GithubUserRegistryPackageOwnerFromJson(
Map<String, dynamic> json) {
return GithubUserRegistryPackageOwner()
..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$SubscribableToJson(Subscribable instance) =>
Map<String, dynamic> _$GithubUserRegistryPackageOwnerToJson(
GithubUserRegistryPackageOwner instance) =>
<String, dynamic>{
'__typename': instance.resolveType,
};
Starrable _$StarrableFromJson(Map<String, dynamic> json) {
return Starrable()
GithubUserRegistryPackageSearch _$GithubUserRegistryPackageSearchFromJson(
Map<String, dynamic> json) {
return GithubUserRegistryPackageSearch()
..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$GithubUserRegistryPackageSearchToJson(
GithubUserRegistryPackageSearch instance) =>
<String, dynamic>{
'__typename': instance.resolveType,
};
GithubUserSubscribable _$GithubUserSubscribableFromJson(
Map<String, dynamic> json) {
return GithubUserSubscribable()..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$GithubUserSubscribableToJson(
GithubUserSubscribable instance) =>
<String, dynamic>{
'__typename': instance.resolveType,
};
GithubUserStarrable _$GithubUserStarrableFromJson(Map<String, dynamic> json) {
return GithubUserStarrable()
..stargazers = json['stargazers'] == null
? null
: StargazerConnection.fromJson(
: GithubUserStargazerConnection.fromJson(
json['stargazers'] as Map<String, dynamic>)
..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$StarrableToJson(Starrable instance) => <String, dynamic>{
Map<String, dynamic> _$GithubUserStarrableToJson(
GithubUserStarrable instance) =>
<String, dynamic>{
'stargazers': instance.stargazers?.toJson(),
'__typename': instance.resolveType,
};
UniformResourceLocatable _$UniformResourceLocatableFromJson(
GithubUserUniformResourceLocatable _$GithubUserUniformResourceLocatableFromJson(
Map<String, dynamic> json) {
return UniformResourceLocatable()..resolveType = json['__typename'] as String;
return GithubUserUniformResourceLocatable()
..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$UniformResourceLocatableToJson(
UniformResourceLocatable instance) =>
Map<String, dynamic> _$GithubUserUniformResourceLocatableToJson(
GithubUserUniformResourceLocatable instance) =>
<String, dynamic>{
'__typename': instance.resolveType,
};
RepositoryInfo _$RepositoryInfoFromJson(Map<String, dynamic> json) {
return RepositoryInfo()
GithubUserRepositoryInfo _$GithubUserRepositoryInfoFromJson(
Map<String, dynamic> json) {
return GithubUserRepositoryInfo()
..owner = json['owner'] == null
? null
: RepositoryOwner.fromJson(json['owner'] as Map<String, dynamic>)
: GithubUserRepositoryOwner.fromJson(
json['owner'] as Map<String, dynamic>)
..name = json['name'] as String
..description = json['description'] as String
..isPrivate = json['isPrivate'] as bool
@ -277,7 +312,8 @@ RepositoryInfo _$RepositoryInfoFromJson(Map<String, dynamic> json) {
..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$RepositoryInfoToJson(RepositoryInfo instance) =>
Map<String, dynamic> _$GithubUserRepositoryInfoToJson(
GithubUserRepositoryInfo instance) =>
<String, dynamic>{
'owner': instance.owner?.toJson(),
'name': instance.name,
@ -287,47 +323,52 @@ Map<String, dynamic> _$RepositoryInfoToJson(RepositoryInfo instance) =>
'__typename': instance.resolveType,
};
PinnableItemConnection _$PinnableItemConnectionFromJson(
GithubUserPinnableItemConnection _$GithubUserPinnableItemConnectionFromJson(
Map<String, dynamic> json) {
return PinnableItemConnection()
return GithubUserPinnableItemConnection()
..totalCount = json['totalCount'] as int
..nodes = (json['nodes'] as List)
?.map((e) =>
e == null ? null : PinnableItem.fromJson(e as Map<String, dynamic>))
?.map((e) => e == null
? null
: GithubUserPinnableItem.fromJson(e as Map<String, dynamic>))
?.toList();
}
Map<String, dynamic> _$PinnableItemConnectionToJson(
PinnableItemConnection instance) =>
Map<String, dynamic> _$GithubUserPinnableItemConnectionToJson(
GithubUserPinnableItemConnection instance) =>
<String, dynamic>{
'totalCount': instance.totalCount,
'nodes': instance.nodes?.map((e) => e?.toJson())?.toList(),
};
AuditEntryActor _$AuditEntryActorFromJson(Map<String, dynamic> json) {
return AuditEntryActor();
GithubUserAuditEntryActor _$GithubUserAuditEntryActorFromJson(
Map<String, dynamic> json) {
return GithubUserAuditEntryActor();
}
Map<String, dynamic> _$AuditEntryActorToJson(AuditEntryActor instance) =>
Map<String, dynamic> _$GithubUserAuditEntryActorToJson(
GithubUserAuditEntryActor instance) =>
<String, dynamic>{};
Actor _$ActorFromJson(Map<String, dynamic> json) {
return Actor()
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;
}
Map<String, dynamic> _$ActorToJson(Actor instance) => <String, dynamic>{
Map<String, dynamic> _$GithubUserActorToJson(GithubUserActor instance) =>
<String, dynamic>{
'login': instance.login,
'avatarUrl': instance.avatarUrl,
'url': instance.url,
'__typename': instance.resolveType,
};
ProfileOwner _$ProfileOwnerFromJson(Map<String, dynamic> json) {
return ProfileOwner()
GithubUserProfileOwner _$GithubUserProfileOwnerFromJson(
Map<String, dynamic> json) {
return GithubUserProfileOwner()
..login = json['login'] as String
..name = json['name'] as String
..location = json['location'] as String
@ -335,12 +376,13 @@ ProfileOwner _$ProfileOwnerFromJson(Map<String, dynamic> json) {
..websiteUrl = json['websiteUrl'] as String
..pinnedItems = json['pinnedItems'] == null
? null
: PinnableItemConnection.fromJson(
: GithubUserPinnableItemConnection.fromJson(
json['pinnedItems'] as Map<String, dynamic>)
..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$ProfileOwnerToJson(ProfileOwner instance) =>
Map<String, dynamic> _$GithubUserProfileOwnerToJson(
GithubUserProfileOwner instance) =>
<String, dynamic>{
'login': instance.login,
'name': instance.name,
@ -351,17 +393,20 @@ Map<String, dynamic> _$ProfileOwnerToJson(ProfileOwner instance) =>
'__typename': instance.resolveType,
};
Sponsorable _$SponsorableFromJson(Map<String, dynamic> json) {
return Sponsorable()..resolveType = json['__typename'] as String;
GithubUserSponsorable _$GithubUserSponsorableFromJson(
Map<String, dynamic> json) {
return GithubUserSponsorable()..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$SponsorableToJson(Sponsorable instance) =>
Map<String, dynamic> _$GithubUserSponsorableToJson(
GithubUserSponsorable instance) =>
<String, dynamic>{
'__typename': instance.resolveType,
};
Organization _$OrganizationFromJson(Map<String, dynamic> json) {
return Organization()
GithubUserOrganization _$GithubUserOrganizationFromJson(
Map<String, dynamic> json) {
return GithubUserOrganization()
..login = json['login'] as String
..name = json['name'] as String
..avatarUrl = json['avatarUrl'] as String
@ -372,20 +417,21 @@ Organization _$OrganizationFromJson(Map<String, dynamic> json) {
..url = json['url'] as String
..pinnedItems = json['pinnedItems'] == null
? null
: PinnableItemConnection.fromJson(
: GithubUserPinnableItemConnection.fromJson(
json['pinnedItems'] as Map<String, dynamic>)
..pinnableItems = json['pinnableItems'] == null
? null
: PinnableItemConnection.fromJson(
: GithubUserPinnableItemConnection.fromJson(
json['pinnableItems'] as Map<String, dynamic>)
..membersWithRole = json['membersWithRole'] == null
? null
: OrganizationMemberConnection.fromJson(
: GithubUserOrganizationMemberConnection.fromJson(
json['membersWithRole'] as Map<String, dynamic>)
..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$OrganizationToJson(Organization instance) =>
Map<String, dynamic> _$GithubUserOrganizationToJson(
GithubUserOrganization instance) =>
<String, dynamic>{
'login': instance.login,
'name': instance.name,
@ -401,33 +447,39 @@ Map<String, dynamic> _$OrganizationToJson(Organization instance) =>
'__typename': instance.resolveType,
};
OrganizationMemberConnection _$OrganizationMemberConnectionFromJson(
Map<String, dynamic> json) {
return OrganizationMemberConnection()..totalCount = json['totalCount'] as int;
GithubUserOrganizationMemberConnection
_$GithubUserOrganizationMemberConnectionFromJson(
Map<String, dynamic> json) {
return GithubUserOrganizationMemberConnection()
..totalCount = json['totalCount'] as int;
}
Map<String, dynamic> _$OrganizationMemberConnectionToJson(
OrganizationMemberConnection instance) =>
Map<String, dynamic> _$GithubUserOrganizationMemberConnectionToJson(
GithubUserOrganizationMemberConnection instance) =>
<String, dynamic>{
'totalCount': instance.totalCount,
};
MemberStatusable _$MemberStatusableFromJson(Map<String, dynamic> json) {
return MemberStatusable()..resolveType = json['__typename'] as String;
GithubUserMemberStatusable _$GithubUserMemberStatusableFromJson(
Map<String, dynamic> json) {
return GithubUserMemberStatusable()
..resolveType = json['__typename'] as String;
}
Map<String, dynamic> _$MemberStatusableToJson(MemberStatusable instance) =>
Map<String, dynamic> _$GithubUserMemberStatusableToJson(
GithubUserMemberStatusable instance) =>
<String, dynamic>{
'__typename': instance.resolveType,
};
GhUserArguments _$GhUserArgumentsFromJson(Map<String, dynamic> json) {
return GhUserArguments(
GithubUserArguments _$GithubUserArgumentsFromJson(Map<String, dynamic> json) {
return GithubUserArguments(
login: json['login'] as String,
);
}
Map<String, dynamic> _$GhUserArgumentsToJson(GhUserArguments instance) =>
Map<String, dynamic> _$GithubUserArgumentsToJson(
GithubUserArguments instance) =>
<String, dynamic>{
'login': instance.login,
};

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:git_touch/graphql/gh_user.dart';
import 'package:git_touch/graphql/github_user.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/screens/settings.dart';
@ -26,10 +26,10 @@ class UserScreen extends StatelessWidget {
UserScreen(this.login);
Future<RepositoryOwner> _query(BuildContext context) async {
Future<GithubUserRepositoryOwner> _query(BuildContext context) async {
final data = await Provider.of<AuthModel>(context)
.gqlClient
.execute(GhUserQuery(variables: GhUserArguments(login: login)));
.execute(GithubUserQuery(variables: GithubUserArguments(login: login)));
return data.data.repositoryOwner;
}
@ -48,10 +48,10 @@ class UserScreen extends StatelessWidget {
}
}
Iterable<Widget> _buildPinnedItems(
Iterable<Repository> pinnedItems, Iterable<Repository> repositories) {
Iterable<Widget> _buildPinnedItems(Iterable<GithubUserRepository> pinnedItems,
Iterable<GithubUserRepository> repositories) {
String title;
Iterable<Repository> items = [];
Iterable<GithubUserRepository> items = [];
if (pinnedItems.isNotEmpty) {
title = 'pinned repositories';
@ -74,8 +74,8 @@ class UserScreen extends StatelessWidget {
];
}
Widget _buildUser(
BuildContext context, User user, List<ContributionsInfo> contributions) {
Widget _buildUser(BuildContext context, GithubUserUser user,
List<ContributionsInfo> contributions) {
final theme = Provider.of<ThemeModel>(context);
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
@ -158,15 +158,16 @@ class UserScreen extends StatelessWidget {
),
..._buildPinnedItems(
user.pinnedItems.nodes
.where((n) => n is Repository)
.cast<Repository>(),
.where((n) => n is GithubUserRepository)
.cast<GithubUserRepository>(),
user.repositories.nodes),
CommonStyle.verticalGap,
],
);
}
Widget _buildOrganization(BuildContext context, Organization payload) {
Widget _buildOrganization(
BuildContext context, GithubUserOrganization payload) {
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
@ -228,11 +229,11 @@ class UserScreen extends StatelessWidget {
),
..._buildPinnedItems(
payload.pinnedItems.nodes
.where((n) => n is Repository)
.cast<Repository>(),
.where((n) => n is GithubUserRepository)
.cast<GithubUserRepository>(),
payload.pinnableItems.nodes
.where((n) => n is Repository)
.cast<Repository>(),
.where((n) => n is GithubUserRepository)
.cast<GithubUserRepository>(),
),
CommonStyle.verticalGap,
],
@ -242,14 +243,14 @@ class UserScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return RefreshStatefulScaffold<
Tuple2<RepositoryOwner, List<ContributionsInfo>>>(
Tuple2<GithubUserRepositoryOwner, List<ContributionsInfo>>>(
fetchData: () async {
final vs = await Future.wait([
_query(context),
_fetchContributions(context),
]);
return Tuple2(
vs[0] as RepositoryOwner, vs[1] as List<ContributionsInfo>);
return Tuple2(vs[0] as GithubUserRepositoryOwner,
vs[1] as List<ContributionsInfo>);
},
title: AppBarTitle('User'), // TODO:
actionBuilder: (data, _) {
@ -262,7 +263,7 @@ class UserScreen extends StatelessWidget {
final payload = data.item1;
switch (payload.resolveType) {
case 'User':
final user = payload as User;
final user = payload as GithubUserUser;
if (login == null) {
return ActionEntry(
iconData: Icons.settings,
@ -300,7 +301,7 @@ class UserScreen extends StatelessWidget {
}
break;
case 'Organization':
final organization = payload as Organization;
final organization = payload as GithubUserOrganization;
return ActionButton(
title: 'Organization Actions',
items: [
@ -318,9 +319,10 @@ class UserScreen extends StatelessWidget {
final payload = data.item1;
switch (payload.resolveType) {
case 'User':
return _buildUser(context, payload as User, data.item2);
return _buildUser(context, payload as GithubUserUser, data.item2);
case 'Organization':
return _buildOrganization(context, payload as Organization);
return _buildOrganization(
context, payload as GithubUserOrganization);
default:
return null;
}

View File

@ -5,8 +5,6 @@ import 'package:flutter/gestures.dart';
import 'package:git_touch/models/theme.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';

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:git_touch/graphql/gh_user.dart';
import 'package:git_touch/graphql/github_user.dart';
import 'package:git_touch/models/gitea.dart';
import 'package:git_touch/models/gitlab.dart';
import 'package:git_touch/models/theme.dart';
@ -82,9 +82,10 @@ class RepositoryItem extends StatelessWidget {
? []
: payload['repositoryTopics']['nodes'];
RepositoryItem.github(Repository payload, {this.inRepoScreen = false})
: this.owner = (payload.owner as User).login,
this.avatarUrl = (payload.owner as User).avatarUrl,
RepositoryItem.github(GithubUserRepository payload,
{this.inRepoScreen = false})
: this.owner = (payload.owner as GithubUserUser).login,
this.avatarUrl = (payload.owner as GithubUserUser).avatarUrl,
this.name = payload.name,
this.description = payload.description,
this.iconData = Octicons.repo, // TODO:
@ -92,8 +93,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 User).login, payload.name)),
this.screenBuilder = ((_) => RepositoryScreen(
(payload.owner as GithubUserUser).login, payload.name)),
this.topics = []; // TODO:
// this.topics = payload['repositoryTopics'] == null
// ? []