From dd6fe2b96148aa25afced4b28da555289b70867c Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Sun, 31 Jan 2021 19:27:45 +0800 Subject: [PATCH] fix(github): comment emoji reaction --- lib/graphql/github.ast.gql.dart | 141 ++++++----------- lib/graphql/github.data.gql.dart | 233 ++++++++++++++++++++--------- lib/graphql/github.data.gql.g.dart | 184 +++++++++++++++++++++++ lib/graphql/github.graphql | 28 ++-- lib/graphql/github.req.gql.dart | 30 ++++ lib/graphql/github.req.gql.g.dart | 226 ++++++++++++++++++++++++++++ lib/graphql/github.var.gql.dart | 19 +++ lib/graphql/github.var.gql.g.dart | 91 +++++++++++ lib/graphql/serializers.gql.dart | 6 + lib/graphql/serializers.gql.g.dart | 3 + lib/screens/gh_issue.dart | 62 +++++++- lib/widgets/comment_item.dart | 197 ++++++++++++++---------- lib/widgets/timeline_item.dart | 6 +- 13 files changed, 958 insertions(+), 268 deletions(-) diff --git a/lib/graphql/github.ast.gql.dart b/lib/graphql/github.ast.gql.dart index d6916ab..fd5417c 100644 --- a/lib/graphql/github.ast.gql.dart +++ b/lib/graphql/github.ast.gql.dart @@ -2207,6 +2207,26 @@ const CommentParts = _i1.FragmentDefinitionNode( selectionSet: null) ])) ])); +const ReactionConnectionParts = _i1.FragmentDefinitionNode( + name: _i1.NameNode(value: 'ReactionConnectionParts'), + typeCondition: _i1.TypeConditionNode( + on: _i1.NamedTypeNode( + name: _i1.NameNode(value: 'ReactionConnection'), isNonNull: false)), + directives: [], + selectionSet: _i1.SelectionSetNode(selections: [ + _i1.FieldNode( + name: _i1.NameNode(value: 'totalCount'), + alias: null, + arguments: [], + directives: [], + selectionSet: null), + _i1.FieldNode( + name: _i1.NameNode(value: 'viewerHasReacted'), + alias: null, + arguments: [], + directives: [], + selectionSet: null) + ])); const ReactableParts = _i1.FragmentDefinitionNode( name: _i1.NameNode(value: 'ReactableParts'), typeCondition: _i1.TypeConditionNode( @@ -2225,18 +2245,9 @@ const ReactableParts = _i1.FragmentDefinitionNode( ], directives: [], selectionSet: _i1.SelectionSetNode(selections: [ - _i1.FieldNode( - name: _i1.NameNode(value: 'totalCount'), - alias: null, - arguments: [], - directives: [], - selectionSet: null), - _i1.FieldNode( - name: _i1.NameNode(value: 'viewerHasReacted'), - alias: null, - arguments: [], - directives: [], - selectionSet: null) + _i1.FragmentSpreadNode( + name: _i1.NameNode(value: 'ReactionConnectionParts'), + directives: []) ])), _i1.FieldNode( name: _i1.NameNode(value: 'reactions'), @@ -2249,18 +2260,9 @@ const ReactableParts = _i1.FragmentDefinitionNode( ], directives: [], selectionSet: _i1.SelectionSetNode(selections: [ - _i1.FieldNode( - name: _i1.NameNode(value: 'totalCount'), - alias: null, - arguments: [], - directives: [], - selectionSet: null), - _i1.FieldNode( - name: _i1.NameNode(value: 'viewerHasReacted'), - alias: null, - arguments: [], - directives: [], - selectionSet: null) + _i1.FragmentSpreadNode( + name: _i1.NameNode(value: 'ReactionConnectionParts'), + directives: []) ])), _i1.FieldNode( name: _i1.NameNode(value: 'reactions'), @@ -2272,18 +2274,9 @@ const ReactableParts = _i1.FragmentDefinitionNode( ], directives: [], selectionSet: _i1.SelectionSetNode(selections: [ - _i1.FieldNode( - name: _i1.NameNode(value: 'totalCount'), - alias: null, - arguments: [], - directives: [], - selectionSet: null), - _i1.FieldNode( - name: _i1.NameNode(value: 'viewerHasReacted'), - alias: null, - arguments: [], - directives: [], - selectionSet: null) + _i1.FragmentSpreadNode( + name: _i1.NameNode(value: 'ReactionConnectionParts'), + directives: []) ])), _i1.FieldNode( name: _i1.NameNode(value: 'reactions'), @@ -2295,18 +2288,9 @@ const ReactableParts = _i1.FragmentDefinitionNode( ], directives: [], selectionSet: _i1.SelectionSetNode(selections: [ - _i1.FieldNode( - name: _i1.NameNode(value: 'totalCount'), - alias: null, - arguments: [], - directives: [], - selectionSet: null), - _i1.FieldNode( - name: _i1.NameNode(value: 'viewerHasReacted'), - alias: null, - arguments: [], - directives: [], - selectionSet: null) + _i1.FragmentSpreadNode( + name: _i1.NameNode(value: 'ReactionConnectionParts'), + directives: []) ])), _i1.FieldNode( name: _i1.NameNode(value: 'reactions'), @@ -2318,18 +2302,9 @@ const ReactableParts = _i1.FragmentDefinitionNode( ], directives: [], selectionSet: _i1.SelectionSetNode(selections: [ - _i1.FieldNode( - name: _i1.NameNode(value: 'totalCount'), - alias: null, - arguments: [], - directives: [], - selectionSet: null), - _i1.FieldNode( - name: _i1.NameNode(value: 'viewerHasReacted'), - alias: null, - arguments: [], - directives: [], - selectionSet: null) + _i1.FragmentSpreadNode( + name: _i1.NameNode(value: 'ReactionConnectionParts'), + directives: []) ])), _i1.FieldNode( name: _i1.NameNode(value: 'reactions'), @@ -2341,18 +2316,9 @@ const ReactableParts = _i1.FragmentDefinitionNode( ], directives: [], selectionSet: _i1.SelectionSetNode(selections: [ - _i1.FieldNode( - name: _i1.NameNode(value: 'totalCount'), - alias: null, - arguments: [], - directives: [], - selectionSet: null), - _i1.FieldNode( - name: _i1.NameNode(value: 'viewerHasReacted'), - alias: null, - arguments: [], - directives: [], - selectionSet: null) + _i1.FragmentSpreadNode( + name: _i1.NameNode(value: 'ReactionConnectionParts'), + directives: []) ])), _i1.FieldNode( name: _i1.NameNode(value: 'reactions'), @@ -2364,18 +2330,9 @@ const ReactableParts = _i1.FragmentDefinitionNode( ], directives: [], selectionSet: _i1.SelectionSetNode(selections: [ - _i1.FieldNode( - name: _i1.NameNode(value: 'totalCount'), - alias: null, - arguments: [], - directives: [], - selectionSet: null), - _i1.FieldNode( - name: _i1.NameNode(value: 'viewerHasReacted'), - alias: null, - arguments: [], - directives: [], - selectionSet: null) + _i1.FragmentSpreadNode( + name: _i1.NameNode(value: 'ReactionConnectionParts'), + directives: []) ])), _i1.FieldNode( name: _i1.NameNode(value: 'reactions'), @@ -2387,18 +2344,9 @@ const ReactableParts = _i1.FragmentDefinitionNode( ], directives: [], selectionSet: _i1.SelectionSetNode(selections: [ - _i1.FieldNode( - name: _i1.NameNode(value: 'totalCount'), - alias: null, - arguments: [], - directives: [], - selectionSet: null), - _i1.FieldNode( - name: _i1.NameNode(value: 'viewerHasReacted'), - alias: null, - arguments: [], - directives: [], - selectionSet: null) + _i1.FragmentSpreadNode( + name: _i1.NameNode(value: 'ReactionConnectionParts'), + directives: []) ])) ])); const ReferencedEventParts = _i1.FragmentDefinitionNode( @@ -4948,6 +4896,7 @@ const document = _i1.DocumentNode(definitions: [ Issues, Pulls, CommentParts, + ReactionConnectionParts, ReactableParts, ReferencedEventParts, RenamedTitleEventParts, diff --git a/lib/graphql/github.data.gql.dart b/lib/graphql/github.data.gql.dart index e88a775..5e6a0da 100644 --- a/lib/graphql/github.data.gql.dart +++ b/lib/graphql/github.data.gql.dart @@ -5537,7 +5537,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_THUMBS_UP implements Built, - GReactableParts_THUMBS_UP { + GReactableParts_THUMBS_UP, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_THUMBS_UP._(); factory GIssueData_repository_issueOrPullRequest__asIssue_THUMBS_UP( @@ -5572,7 +5573,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_THUMBS_DOWN implements Built, - GReactableParts_THUMBS_DOWN { + GReactableParts_THUMBS_DOWN, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_THUMBS_DOWN._(); factory GIssueData_repository_issueOrPullRequest__asIssue_THUMBS_DOWN( @@ -5609,7 +5611,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_LAUGH implements Built, - GReactableParts_LAUGH { + GReactableParts_LAUGH, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_LAUGH._(); factory GIssueData_repository_issueOrPullRequest__asIssue_LAUGH( @@ -5640,7 +5643,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_HOORAY implements Built, - GReactableParts_HOORAY { + GReactableParts_HOORAY, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_HOORAY._(); factory GIssueData_repository_issueOrPullRequest__asIssue_HOORAY( @@ -5672,7 +5676,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_CONFUSED implements Built, - GReactableParts_CONFUSED { + GReactableParts_CONFUSED, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_CONFUSED._(); factory GIssueData_repository_issueOrPullRequest__asIssue_CONFUSED( @@ -5706,7 +5711,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_HEART implements Built, - GReactableParts_HEART { + GReactableParts_HEART, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_HEART._(); factory GIssueData_repository_issueOrPullRequest__asIssue_HEART( @@ -5737,7 +5743,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_ROCKET implements Built, - GReactableParts_ROCKET { + GReactableParts_ROCKET, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_ROCKET._(); factory GIssueData_repository_issueOrPullRequest__asIssue_ROCKET( @@ -5769,7 +5776,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_EYES implements Built, - GReactableParts_EYES { + GReactableParts_EYES, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_EYES._(); factory GIssueData_repository_issueOrPullRequest__asIssue_EYES( @@ -6054,7 +6062,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_n Built< GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_THUMBS_UP, GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_THUMBS_UPBuilder>, - GReactableParts_THUMBS_UP { + GReactableParts_THUMBS_UP, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_THUMBS_UP._(); factory GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_THUMBS_UP( @@ -6092,7 +6101,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_n Built< GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_THUMBS_DOWN, GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_THUMBS_DOWNBuilder>, - GReactableParts_THUMBS_DOWN { + GReactableParts_THUMBS_DOWN, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_THUMBS_DOWN._(); factory GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_THUMBS_DOWN( @@ -6130,7 +6140,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_n Built< GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_LAUGH, GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_LAUGHBuilder>, - GReactableParts_LAUGH { + GReactableParts_LAUGH, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_LAUGH._(); factory GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_LAUGH( @@ -6168,7 +6179,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_n Built< GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_HOORAY, GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_HOORAYBuilder>, - GReactableParts_HOORAY { + GReactableParts_HOORAY, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_HOORAY._(); factory GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_HOORAY( @@ -6206,7 +6218,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_n Built< GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_CONFUSED, GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_CONFUSEDBuilder>, - GReactableParts_CONFUSED { + GReactableParts_CONFUSED, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_CONFUSED._(); factory GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_CONFUSED( @@ -6244,7 +6257,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_n Built< GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_HEART, GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_HEARTBuilder>, - GReactableParts_HEART { + GReactableParts_HEART, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_HEART._(); factory GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_HEART( @@ -6282,7 +6296,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_n Built< GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_ROCKET, GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_ROCKETBuilder>, - GReactableParts_ROCKET { + GReactableParts_ROCKET, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_ROCKET._(); factory GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_ROCKET( @@ -6320,7 +6335,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_n Built< GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_EYES, GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_EYESBuilder>, - GReactableParts_EYES { + GReactableParts_EYES, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_EYES._(); factory GIssueData_repository_issueOrPullRequest__asIssue_timelineItems_nodes__asIssueComment_EYES( @@ -8857,7 +8873,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_THUMBS_UP implements Built, - GReactableParts_THUMBS_UP { + GReactableParts_THUMBS_UP, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_THUMBS_UP._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_THUMBS_UP( @@ -8895,7 +8912,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_THUMBS_DO Built< GIssueData_repository_issueOrPullRequest__asPullRequest_THUMBS_DOWN, GIssueData_repository_issueOrPullRequest__asPullRequest_THUMBS_DOWNBuilder>, - GReactableParts_THUMBS_DOWN { + GReactableParts_THUMBS_DOWN, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_THUMBS_DOWN._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_THUMBS_DOWN( @@ -8932,7 +8950,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_LAUGH implements Built, - GReactableParts_LAUGH { + GReactableParts_LAUGH, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_LAUGH._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_LAUGH( @@ -8969,7 +8988,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_HOORAY implements Built, - GReactableParts_HOORAY { + GReactableParts_HOORAY, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_HOORAY._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_HOORAY( @@ -9005,7 +9025,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_CONFUSED implements Built, - GReactableParts_CONFUSED { + GReactableParts_CONFUSED, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_CONFUSED._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_CONFUSED( @@ -9042,7 +9063,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_HEART implements Built, - GReactableParts_HEART { + GReactableParts_HEART, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_HEART._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_HEART( @@ -9079,7 +9101,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_ROCKET implements Built, - GReactableParts_ROCKET { + GReactableParts_ROCKET, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_ROCKET._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_ROCKET( @@ -9115,7 +9138,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_EYES implements Built, - GReactableParts_EYES { + GReactableParts_EYES, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_EYES._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_EYES( @@ -9455,7 +9479,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI Built< GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_THUMBS_UP, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_THUMBS_UPBuilder>, - GReactableParts_THUMBS_UP { + GReactableParts_THUMBS_UP, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_THUMBS_UP._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_THUMBS_UP( @@ -9493,7 +9518,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI Built< GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_THUMBS_DOWN, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_THUMBS_DOWNBuilder>, - GReactableParts_THUMBS_DOWN { + GReactableParts_THUMBS_DOWN, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_THUMBS_DOWN._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_THUMBS_DOWN( @@ -9531,7 +9557,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI Built< GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_LAUGH, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_LAUGHBuilder>, - GReactableParts_LAUGH { + GReactableParts_LAUGH, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_LAUGH._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_LAUGH( @@ -9569,7 +9596,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI Built< GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_HOORAY, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_HOORAYBuilder>, - GReactableParts_HOORAY { + GReactableParts_HOORAY, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_HOORAY._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_HOORAY( @@ -9607,7 +9635,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI Built< GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_CONFUSED, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_CONFUSEDBuilder>, - GReactableParts_CONFUSED { + GReactableParts_CONFUSED, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_CONFUSED._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_CONFUSED( @@ -9645,7 +9674,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI Built< GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_HEART, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_HEARTBuilder>, - GReactableParts_HEART { + GReactableParts_HEART, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_HEART._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_HEART( @@ -9683,7 +9713,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI Built< GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_ROCKET, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_ROCKETBuilder>, - GReactableParts_ROCKET { + GReactableParts_ROCKET, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_ROCKET._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_ROCKET( @@ -9721,7 +9752,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI Built< GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_EYES, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_EYESBuilder>, - GReactableParts_EYES { + GReactableParts_EYES, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_EYES._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asIssueComment_EYES( @@ -13920,7 +13952,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_THUMBS_UP, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_THUMBS_UPBuilder>, GPullRequestReviewParts_comments_nodes_THUMBS_UP, - GReactableParts_THUMBS_UP { + GReactableParts_THUMBS_UP, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_THUMBS_UP._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_THUMBS_UP( @@ -13959,7 +13992,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_THUMBS_DOWN, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_THUMBS_DOWNBuilder>, GPullRequestReviewParts_comments_nodes_THUMBS_DOWN, - GReactableParts_THUMBS_DOWN { + GReactableParts_THUMBS_DOWN, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_THUMBS_DOWN._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_THUMBS_DOWN( @@ -13998,7 +14032,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_LAUGH, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_LAUGHBuilder>, GPullRequestReviewParts_comments_nodes_LAUGH, - GReactableParts_LAUGH { + GReactableParts_LAUGH, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_LAUGH._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_LAUGH( @@ -14037,7 +14072,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_HOORAY, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_HOORAYBuilder>, GPullRequestReviewParts_comments_nodes_HOORAY, - GReactableParts_HOORAY { + GReactableParts_HOORAY, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_HOORAY._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_HOORAY( @@ -14076,7 +14112,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_CONFUSED, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_CONFUSEDBuilder>, GPullRequestReviewParts_comments_nodes_CONFUSED, - GReactableParts_CONFUSED { + GReactableParts_CONFUSED, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_CONFUSED._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_CONFUSED( @@ -14115,7 +14152,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_HEART, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_HEARTBuilder>, GPullRequestReviewParts_comments_nodes_HEART, - GReactableParts_HEART { + GReactableParts_HEART, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_HEART._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_HEART( @@ -14154,7 +14192,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_ROCKET, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_ROCKETBuilder>, GPullRequestReviewParts_comments_nodes_ROCKET, - GReactableParts_ROCKET { + GReactableParts_ROCKET, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_ROCKET._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_ROCKET( @@ -14193,7 +14232,8 @@ abstract class GIssueData_repository_issueOrPullRequest__asPullRequest_timelineI GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_EYES, GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_EYESBuilder>, GPullRequestReviewParts_comments_nodes_EYES, - GReactableParts_EYES { + GReactableParts_EYES, + GReactionConnectionParts { GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_EYES._(); factory GIssueData_repository_issueOrPullRequest__asPullRequest_timelineItems_nodes__asPullRequestReview_comments_nodes_EYES( @@ -16532,6 +16572,39 @@ abstract class GCommentPartsData_author .deserializeWith(GCommentPartsData_author.serializer, json); } +abstract class GReactionConnectionParts { + String get G__typename; + int get totalCount; + bool get viewerHasReacted; + Map toJson(); +} + +abstract class GReactionConnectionPartsData + implements + Built, + GReactionConnectionParts { + GReactionConnectionPartsData._(); + + factory GReactionConnectionPartsData( + [Function(GReactionConnectionPartsDataBuilder b) updates]) = + _$GReactionConnectionPartsData; + + static void _initializeBuilder(GReactionConnectionPartsDataBuilder b) => + b..G__typename = 'ReactionConnection'; + @BuiltValueField(wireName: '__typename') + String get G__typename; + int get totalCount; + bool get viewerHasReacted; + static Serializer get serializer => + _$gReactionConnectionPartsDataSerializer; + Map toJson() => _i1.serializers + .serializeWith(GReactionConnectionPartsData.serializer, this); + static GReactionConnectionPartsData fromJson(Map json) => + _i1.serializers + .deserializeWith(GReactionConnectionPartsData.serializer, json); +} + abstract class GReactableParts { String get G__typename; GReactableParts_THUMBS_UP get THUMBS_UP; @@ -16545,56 +16618,56 @@ abstract class GReactableParts { Map toJson(); } -abstract class GReactableParts_THUMBS_UP { +abstract class GReactableParts_THUMBS_UP implements GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; Map toJson(); } -abstract class GReactableParts_THUMBS_DOWN { +abstract class GReactableParts_THUMBS_DOWN implements GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; Map toJson(); } -abstract class GReactableParts_LAUGH { +abstract class GReactableParts_LAUGH implements GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; Map toJson(); } -abstract class GReactableParts_HOORAY { +abstract class GReactableParts_HOORAY implements GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; Map toJson(); } -abstract class GReactableParts_CONFUSED { +abstract class GReactableParts_CONFUSED implements GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; Map toJson(); } -abstract class GReactableParts_HEART { +abstract class GReactableParts_HEART implements GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; Map toJson(); } -abstract class GReactableParts_ROCKET { +abstract class GReactableParts_ROCKET implements GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; Map toJson(); } -abstract class GReactableParts_EYES { +abstract class GReactableParts_EYES implements GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; @@ -16634,7 +16707,8 @@ abstract class GReactablePartsData_THUMBS_UP implements Built, - GReactableParts_THUMBS_UP { + GReactableParts_THUMBS_UP, + GReactionConnectionParts { GReactablePartsData_THUMBS_UP._(); factory GReactablePartsData_THUMBS_UP( @@ -16660,7 +16734,8 @@ abstract class GReactablePartsData_THUMBS_DOWN implements Built, - GReactableParts_THUMBS_DOWN { + GReactableParts_THUMBS_DOWN, + GReactionConnectionParts { GReactablePartsData_THUMBS_DOWN._(); factory GReactablePartsData_THUMBS_DOWN( @@ -16685,7 +16760,8 @@ abstract class GReactablePartsData_THUMBS_DOWN abstract class GReactablePartsData_LAUGH implements Built, - GReactableParts_LAUGH { + GReactableParts_LAUGH, + GReactionConnectionParts { GReactablePartsData_LAUGH._(); factory GReactablePartsData_LAUGH( @@ -16710,7 +16786,8 @@ abstract class GReactablePartsData_LAUGH abstract class GReactablePartsData_HOORAY implements Built, - GReactableParts_HOORAY { + GReactableParts_HOORAY, + GReactionConnectionParts { GReactablePartsData_HOORAY._(); factory GReactablePartsData_HOORAY( @@ -16736,7 +16813,8 @@ abstract class GReactablePartsData_CONFUSED implements Built, - GReactableParts_CONFUSED { + GReactableParts_CONFUSED, + GReactionConnectionParts { GReactablePartsData_CONFUSED._(); factory GReactablePartsData_CONFUSED( @@ -16761,7 +16839,8 @@ abstract class GReactablePartsData_CONFUSED abstract class GReactablePartsData_HEART implements Built, - GReactableParts_HEART { + GReactableParts_HEART, + GReactionConnectionParts { GReactablePartsData_HEART._(); factory GReactablePartsData_HEART( @@ -16786,7 +16865,8 @@ abstract class GReactablePartsData_HEART abstract class GReactablePartsData_ROCKET implements Built, - GReactableParts_ROCKET { + GReactableParts_ROCKET, + GReactionConnectionParts { GReactablePartsData_ROCKET._(); factory GReactablePartsData_ROCKET( @@ -16811,7 +16891,8 @@ abstract class GReactablePartsData_ROCKET abstract class GReactablePartsData_EYES implements Built, - GReactableParts_EYES { + GReactableParts_EYES, + GReactionConnectionParts { GReactablePartsData_EYES._(); factory GReactablePartsData_EYES( @@ -20388,7 +20469,7 @@ abstract class GPullRequestReviewParts_comments_nodes_author } abstract class GPullRequestReviewParts_comments_nodes_THUMBS_UP - implements GReactableParts_THUMBS_UP { + implements GReactableParts_THUMBS_UP, GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; @@ -20396,7 +20477,7 @@ abstract class GPullRequestReviewParts_comments_nodes_THUMBS_UP } abstract class GPullRequestReviewParts_comments_nodes_THUMBS_DOWN - implements GReactableParts_THUMBS_DOWN { + implements GReactableParts_THUMBS_DOWN, GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; @@ -20404,7 +20485,7 @@ abstract class GPullRequestReviewParts_comments_nodes_THUMBS_DOWN } abstract class GPullRequestReviewParts_comments_nodes_LAUGH - implements GReactableParts_LAUGH { + implements GReactableParts_LAUGH, GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; @@ -20412,7 +20493,7 @@ abstract class GPullRequestReviewParts_comments_nodes_LAUGH } abstract class GPullRequestReviewParts_comments_nodes_HOORAY - implements GReactableParts_HOORAY { + implements GReactableParts_HOORAY, GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; @@ -20420,7 +20501,7 @@ abstract class GPullRequestReviewParts_comments_nodes_HOORAY } abstract class GPullRequestReviewParts_comments_nodes_CONFUSED - implements GReactableParts_CONFUSED { + implements GReactableParts_CONFUSED, GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; @@ -20428,7 +20509,7 @@ abstract class GPullRequestReviewParts_comments_nodes_CONFUSED } abstract class GPullRequestReviewParts_comments_nodes_HEART - implements GReactableParts_HEART { + implements GReactableParts_HEART, GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; @@ -20436,7 +20517,7 @@ abstract class GPullRequestReviewParts_comments_nodes_HEART } abstract class GPullRequestReviewParts_comments_nodes_ROCKET - implements GReactableParts_ROCKET { + implements GReactableParts_ROCKET, GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; @@ -20444,7 +20525,7 @@ abstract class GPullRequestReviewParts_comments_nodes_ROCKET } abstract class GPullRequestReviewParts_comments_nodes_EYES - implements GReactableParts_EYES { + implements GReactableParts_EYES, GReactionConnectionParts { String get G__typename; int get totalCount; bool get viewerHasReacted; @@ -20609,7 +20690,8 @@ abstract class GPullRequestReviewPartsData_comments_nodes_THUMBS_UP Built, GPullRequestReviewParts_comments_nodes_THUMBS_UP, - GReactableParts_THUMBS_UP { + GReactableParts_THUMBS_UP, + GReactionConnectionParts { GPullRequestReviewPartsData_comments_nodes_THUMBS_UP._(); factory GPullRequestReviewPartsData_comments_nodes_THUMBS_UP( @@ -20640,7 +20722,8 @@ abstract class GPullRequestReviewPartsData_comments_nodes_THUMBS_DOWN Built, GPullRequestReviewParts_comments_nodes_THUMBS_DOWN, - GReactableParts_THUMBS_DOWN { + GReactableParts_THUMBS_DOWN, + GReactionConnectionParts { GPullRequestReviewPartsData_comments_nodes_THUMBS_DOWN._(); factory GPullRequestReviewPartsData_comments_nodes_THUMBS_DOWN( @@ -20671,7 +20754,8 @@ abstract class GPullRequestReviewPartsData_comments_nodes_LAUGH Built, GPullRequestReviewParts_comments_nodes_LAUGH, - GReactableParts_LAUGH { + GReactableParts_LAUGH, + GReactionConnectionParts { GPullRequestReviewPartsData_comments_nodes_LAUGH._(); factory GPullRequestReviewPartsData_comments_nodes_LAUGH( @@ -20701,7 +20785,8 @@ abstract class GPullRequestReviewPartsData_comments_nodes_HOORAY Built, GPullRequestReviewParts_comments_nodes_HOORAY, - GReactableParts_HOORAY { + GReactableParts_HOORAY, + GReactionConnectionParts { GPullRequestReviewPartsData_comments_nodes_HOORAY._(); factory GPullRequestReviewPartsData_comments_nodes_HOORAY( @@ -20731,7 +20816,8 @@ abstract class GPullRequestReviewPartsData_comments_nodes_CONFUSED Built, GPullRequestReviewParts_comments_nodes_CONFUSED, - GReactableParts_CONFUSED { + GReactableParts_CONFUSED, + GReactionConnectionParts { GPullRequestReviewPartsData_comments_nodes_CONFUSED._(); factory GPullRequestReviewPartsData_comments_nodes_CONFUSED( @@ -20761,7 +20847,8 @@ abstract class GPullRequestReviewPartsData_comments_nodes_HEART Built, GPullRequestReviewParts_comments_nodes_HEART, - GReactableParts_HEART { + GReactableParts_HEART, + GReactionConnectionParts { GPullRequestReviewPartsData_comments_nodes_HEART._(); factory GPullRequestReviewPartsData_comments_nodes_HEART( @@ -20791,7 +20878,8 @@ abstract class GPullRequestReviewPartsData_comments_nodes_ROCKET Built, GPullRequestReviewParts_comments_nodes_ROCKET, - GReactableParts_ROCKET { + GReactableParts_ROCKET, + GReactionConnectionParts { GPullRequestReviewPartsData_comments_nodes_ROCKET._(); factory GPullRequestReviewPartsData_comments_nodes_ROCKET( @@ -20821,7 +20909,8 @@ abstract class GPullRequestReviewPartsData_comments_nodes_EYES Built, GPullRequestReviewParts_comments_nodes_EYES, - GReactableParts_EYES { + GReactableParts_EYES, + GReactionConnectionParts { GPullRequestReviewPartsData_comments_nodes_EYES._(); factory GPullRequestReviewPartsData_comments_nodes_EYES( diff --git a/lib/graphql/github.data.gql.g.dart b/lib/graphql/github.data.gql.g.dart index 26dbbec..153deb7 100644 --- a/lib/graphql/github.data.gql.g.dart +++ b/lib/graphql/github.data.gql.g.dart @@ -1530,6 +1530,9 @@ Serializer _$gCommentPartsDataSerializer = new _$GCommentPartsDataSerializer(); Serializer _$gCommentPartsDataAuthorSerializer = new _$GCommentPartsData_authorSerializer(); +Serializer + _$gReactionConnectionPartsDataSerializer = + new _$GReactionConnectionPartsDataSerializer(); Serializer _$gReactablePartsDataSerializer = new _$GReactablePartsDataSerializer(); Serializer @@ -32655,6 +32658,66 @@ class _$GCommentPartsData_authorSerializer } } +class _$GReactionConnectionPartsDataSerializer + implements StructuredSerializer { + @override + final Iterable types = const [ + GReactionConnectionPartsData, + _$GReactionConnectionPartsData + ]; + @override + final String wireName = 'GReactionConnectionPartsData'; + + @override + Iterable serialize( + Serializers serializers, GReactionConnectionPartsData object, + {FullType specifiedType = FullType.unspecified}) { + final result = [ + '__typename', + serializers.serialize(object.G__typename, + specifiedType: const FullType(String)), + 'totalCount', + serializers.serialize(object.totalCount, + specifiedType: const FullType(int)), + 'viewerHasReacted', + serializers.serialize(object.viewerHasReacted, + specifiedType: const FullType(bool)), + ]; + + return result; + } + + @override + GReactionConnectionPartsData deserialize( + Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = new GReactionConnectionPartsDataBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case '__typename': + result.G__typename = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case 'totalCount': + result.totalCount = serializers.deserialize(value, + specifiedType: const FullType(int)) as int; + break; + case 'viewerHasReacted': + result.viewerHasReacted = serializers.deserialize(value, + specifiedType: const FullType(bool)) as bool; + break; + } + } + + return result.build(); + } +} + class _$GReactablePartsDataSerializer implements StructuredSerializer { @override @@ -107387,6 +107450,127 @@ class GCommentPartsData_authorBuilder } } +class _$GReactionConnectionPartsData extends GReactionConnectionPartsData { + @override + final String G__typename; + @override + final int totalCount; + @override + final bool viewerHasReacted; + + factory _$GReactionConnectionPartsData( + [void Function(GReactionConnectionPartsDataBuilder) updates]) => + (new GReactionConnectionPartsDataBuilder()..update(updates)).build(); + + _$GReactionConnectionPartsData._( + {this.G__typename, this.totalCount, this.viewerHasReacted}) + : super._() { + if (G__typename == null) { + throw new BuiltValueNullFieldError( + 'GReactionConnectionPartsData', 'G__typename'); + } + if (totalCount == null) { + throw new BuiltValueNullFieldError( + 'GReactionConnectionPartsData', 'totalCount'); + } + if (viewerHasReacted == null) { + throw new BuiltValueNullFieldError( + 'GReactionConnectionPartsData', 'viewerHasReacted'); + } + } + + @override + GReactionConnectionPartsData rebuild( + void Function(GReactionConnectionPartsDataBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + GReactionConnectionPartsDataBuilder toBuilder() => + new GReactionConnectionPartsDataBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is GReactionConnectionPartsData && + G__typename == other.G__typename && + totalCount == other.totalCount && + viewerHasReacted == other.viewerHasReacted; + } + + @override + int get hashCode { + return $jf($jc($jc($jc(0, G__typename.hashCode), totalCount.hashCode), + viewerHasReacted.hashCode)); + } + + @override + String toString() { + return (newBuiltValueToStringHelper('GReactionConnectionPartsData') + ..add('G__typename', G__typename) + ..add('totalCount', totalCount) + ..add('viewerHasReacted', viewerHasReacted)) + .toString(); + } +} + +class GReactionConnectionPartsDataBuilder + implements + Builder { + _$GReactionConnectionPartsData _$v; + + String _G__typename; + String get G__typename => _$this._G__typename; + set G__typename(String G__typename) => _$this._G__typename = G__typename; + + int _totalCount; + int get totalCount => _$this._totalCount; + set totalCount(int totalCount) => _$this._totalCount = totalCount; + + bool _viewerHasReacted; + bool get viewerHasReacted => _$this._viewerHasReacted; + set viewerHasReacted(bool viewerHasReacted) => + _$this._viewerHasReacted = viewerHasReacted; + + GReactionConnectionPartsDataBuilder() { + GReactionConnectionPartsData._initializeBuilder(this); + } + + GReactionConnectionPartsDataBuilder get _$this { + if (_$v != null) { + _G__typename = _$v.G__typename; + _totalCount = _$v.totalCount; + _viewerHasReacted = _$v.viewerHasReacted; + _$v = null; + } + return this; + } + + @override + void replace(GReactionConnectionPartsData other) { + if (other == null) { + throw new ArgumentError.notNull('other'); + } + _$v = other as _$GReactionConnectionPartsData; + } + + @override + void update(void Function(GReactionConnectionPartsDataBuilder) updates) { + if (updates != null) updates(this); + } + + @override + _$GReactionConnectionPartsData build() { + final _$result = _$v ?? + new _$GReactionConnectionPartsData._( + G__typename: G__typename, + totalCount: totalCount, + viewerHasReacted: viewerHasReacted); + replace(_$result); + return _$result; + } +} + class _$GReactablePartsData extends GReactablePartsData { @override final String G__typename; diff --git a/lib/graphql/github.graphql b/lib/graphql/github.graphql index 7808b99..2da0fd3 100644 --- a/lib/graphql/github.graphql +++ b/lib/graphql/github.graphql @@ -450,38 +450,34 @@ fragment CommentParts on Comment { avatarUrl } } +fragment ReactionConnectionParts on ReactionConnection { + totalCount + viewerHasReacted +} fragment ReactableParts on Reactable { THUMBS_UP: reactions(content: THUMBS_UP) { - totalCount - viewerHasReacted + ...ReactionConnectionParts } THUMBS_DOWN: reactions(content: THUMBS_DOWN) { - totalCount - viewerHasReacted + ...ReactionConnectionParts } LAUGH: reactions(content: LAUGH) { - totalCount - viewerHasReacted + ...ReactionConnectionParts } HOORAY: reactions(content: HOORAY) { - totalCount - viewerHasReacted + ...ReactionConnectionParts } CONFUSED: reactions(content: CONFUSED) { - totalCount - viewerHasReacted + ...ReactionConnectionParts } HEART: reactions(content: HEART) { - totalCount - viewerHasReacted + ...ReactionConnectionParts } ROCKET: reactions(content: ROCKET) { - totalCount - viewerHasReacted + ...ReactionConnectionParts } EYES: reactions(content: EYES) { - totalCount - viewerHasReacted + ...ReactionConnectionParts } } fragment ReferencedEventParts on ReferencedEvent { diff --git a/lib/graphql/github.req.gql.dart b/lib/graphql/github.req.gql.dart index d4c4f1e..b53431f 100644 --- a/lib/graphql/github.req.gql.dart +++ b/lib/graphql/github.req.gql.dart @@ -856,6 +856,36 @@ abstract class GCommentPartsReq _i6.serializers.deserializeWith(GCommentPartsReq.serializer, json); } +abstract class GReactionConnectionPartsReq + implements + Built, + _i1.FragmentRequest<_i2.GReactionConnectionPartsData, + _i3.GReactionConnectionPartsVars> { + GReactionConnectionPartsReq._(); + + factory GReactionConnectionPartsReq( + [Function(GReactionConnectionPartsReqBuilder b) updates]) = + _$GReactionConnectionPartsReq; + + static void _initializeBuilder(GReactionConnectionPartsReqBuilder b) => b + ..document = _i5.document + ..fragmentName = 'ReactionConnectionParts'; + _i3.GReactionConnectionPartsVars get vars; + _i7.DocumentNode get document; + String get fragmentName; + Map get idFields; + @override + _i2.GReactionConnectionPartsData parseData(Map json) => + _i2.GReactionConnectionPartsData.fromJson(json); + static Serializer get serializer => + _$gReactionConnectionPartsReqSerializer; + Map toJson() => _i6.serializers + .serializeWith(GReactionConnectionPartsReq.serializer, this); + static GReactionConnectionPartsReq fromJson(Map json) => + _i6.serializers + .deserializeWith(GReactionConnectionPartsReq.serializer, json); +} + abstract class GReactablePartsReq implements Built, diff --git a/lib/graphql/github.req.gql.g.dart b/lib/graphql/github.req.gql.g.dart index dc1986e..a48ca7d 100644 --- a/lib/graphql/github.req.gql.g.dart +++ b/lib/graphql/github.req.gql.g.dart @@ -43,6 +43,9 @@ Serializer _$gCommitsRefReqSerializer = new _$GCommitsRefReqSerializer(); Serializer _$gCommentPartsReqSerializer = new _$GCommentPartsReqSerializer(); +Serializer + _$gReactionConnectionPartsReqSerializer = + new _$GReactionConnectionPartsReqSerializer(); Serializer _$gReactablePartsReqSerializer = new _$GReactablePartsReqSerializer(); Serializer _$gReferencedEventPartsReqSerializer = @@ -2376,6 +2379,80 @@ class _$GCommentPartsReqSerializer } } +class _$GReactionConnectionPartsReqSerializer + implements StructuredSerializer { + @override + final Iterable types = const [ + GReactionConnectionPartsReq, + _$GReactionConnectionPartsReq + ]; + @override + final String wireName = 'GReactionConnectionPartsReq'; + + @override + Iterable serialize( + Serializers serializers, GReactionConnectionPartsReq object, + {FullType specifiedType = FullType.unspecified}) { + final result = [ + 'vars', + serializers.serialize(object.vars, + specifiedType: const FullType(_i3.GReactionConnectionPartsVars)), + 'document', + serializers.serialize(object.document, + specifiedType: const FullType(_i7.DocumentNode)), + 'fragmentName', + serializers.serialize(object.fragmentName, + specifiedType: const FullType(String)), + 'idFields', + serializers.serialize(object.idFields, + specifiedType: const FullType( + Map, const [const FullType(String), const FullType(dynamic)])), + ]; + + return result; + } + + @override + GReactionConnectionPartsReq deserialize( + Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + final result = new GReactionConnectionPartsReqBuilder(); + + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final dynamic value = iterator.current; + switch (key) { + case 'vars': + result.vars.replace(serializers.deserialize(value, + specifiedType: + const FullType(_i3.GReactionConnectionPartsVars)) + as _i3.GReactionConnectionPartsVars); + break; + case 'document': + result.document = serializers.deserialize(value, + specifiedType: const FullType(_i7.DocumentNode)) + as _i7.DocumentNode; + break; + case 'fragmentName': + result.fragmentName = serializers.deserialize(value, + specifiedType: const FullType(String)) as String; + break; + case 'idFields': + result.idFields = serializers.deserialize(value, + specifiedType: const FullType(Map, const [ + const FullType(String), + const FullType(dynamic) + ])) as Map; + break; + } + } + + return result.build(); + } +} + class _$GReactablePartsReqSerializer implements StructuredSerializer { @override @@ -9133,6 +9210,155 @@ class GCommentPartsReqBuilder } } +class _$GReactionConnectionPartsReq extends GReactionConnectionPartsReq { + @override + final _i3.GReactionConnectionPartsVars vars; + @override + final _i7.DocumentNode document; + @override + final String fragmentName; + @override + final Map idFields; + + factory _$GReactionConnectionPartsReq( + [void Function(GReactionConnectionPartsReqBuilder) updates]) => + (new GReactionConnectionPartsReqBuilder()..update(updates)).build(); + + _$GReactionConnectionPartsReq._( + {this.vars, this.document, this.fragmentName, this.idFields}) + : super._() { + if (vars == null) { + throw new BuiltValueNullFieldError('GReactionConnectionPartsReq', 'vars'); + } + if (document == null) { + throw new BuiltValueNullFieldError( + 'GReactionConnectionPartsReq', 'document'); + } + if (fragmentName == null) { + throw new BuiltValueNullFieldError( + 'GReactionConnectionPartsReq', 'fragmentName'); + } + if (idFields == null) { + throw new BuiltValueNullFieldError( + 'GReactionConnectionPartsReq', 'idFields'); + } + } + + @override + GReactionConnectionPartsReq rebuild( + void Function(GReactionConnectionPartsReqBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + GReactionConnectionPartsReqBuilder toBuilder() => + new GReactionConnectionPartsReqBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is GReactionConnectionPartsReq && + vars == other.vars && + document == other.document && + fragmentName == other.fragmentName && + idFields == other.idFields; + } + + @override + int get hashCode { + return $jf($jc( + $jc($jc($jc(0, vars.hashCode), document.hashCode), + fragmentName.hashCode), + idFields.hashCode)); + } + + @override + String toString() { + return (newBuiltValueToStringHelper('GReactionConnectionPartsReq') + ..add('vars', vars) + ..add('document', document) + ..add('fragmentName', fragmentName) + ..add('idFields', idFields)) + .toString(); + } +} + +class GReactionConnectionPartsReqBuilder + implements + Builder { + _$GReactionConnectionPartsReq _$v; + + _i3.GReactionConnectionPartsVarsBuilder _vars; + _i3.GReactionConnectionPartsVarsBuilder get vars => + _$this._vars ??= new _i3.GReactionConnectionPartsVarsBuilder(); + set vars(_i3.GReactionConnectionPartsVarsBuilder vars) => _$this._vars = vars; + + _i7.DocumentNode _document; + _i7.DocumentNode get document => _$this._document; + set document(_i7.DocumentNode document) => _$this._document = document; + + String _fragmentName; + String get fragmentName => _$this._fragmentName; + set fragmentName(String fragmentName) => _$this._fragmentName = fragmentName; + + Map _idFields; + Map get idFields => _$this._idFields; + set idFields(Map idFields) => _$this._idFields = idFields; + + GReactionConnectionPartsReqBuilder() { + GReactionConnectionPartsReq._initializeBuilder(this); + } + + GReactionConnectionPartsReqBuilder get _$this { + if (_$v != null) { + _vars = _$v.vars?.toBuilder(); + _document = _$v.document; + _fragmentName = _$v.fragmentName; + _idFields = _$v.idFields; + _$v = null; + } + return this; + } + + @override + void replace(GReactionConnectionPartsReq other) { + if (other == null) { + throw new ArgumentError.notNull('other'); + } + _$v = other as _$GReactionConnectionPartsReq; + } + + @override + void update(void Function(GReactionConnectionPartsReqBuilder) updates) { + if (updates != null) updates(this); + } + + @override + _$GReactionConnectionPartsReq build() { + _$GReactionConnectionPartsReq _$result; + try { + _$result = _$v ?? + new _$GReactionConnectionPartsReq._( + vars: vars.build(), + document: document, + fragmentName: fragmentName, + idFields: idFields); + } catch (_) { + String _$failedField; + try { + _$failedField = 'vars'; + vars.build(); + } catch (e) { + throw new BuiltValueNestedFieldError( + 'GReactionConnectionPartsReq', _$failedField, e.toString()); + } + rethrow; + } + replace(_$result); + return _$result; + } +} + class _$GReactablePartsReq extends GReactablePartsReq { @override final _i3.GReactablePartsVars vars; diff --git a/lib/graphql/github.var.gql.dart b/lib/graphql/github.var.gql.dart index c6980bd..ac31b46 100644 --- a/lib/graphql/github.var.gql.dart +++ b/lib/graphql/github.var.gql.dart @@ -388,6 +388,25 @@ abstract class GCommentPartsVars _i1.serializers.deserializeWith(GCommentPartsVars.serializer, json); } +abstract class GReactionConnectionPartsVars + implements + Built { + GReactionConnectionPartsVars._(); + + factory GReactionConnectionPartsVars( + [Function(GReactionConnectionPartsVarsBuilder b) updates]) = + _$GReactionConnectionPartsVars; + + static Serializer get serializer => + _$gReactionConnectionPartsVarsSerializer; + Map toJson() => _i1.serializers + .serializeWith(GReactionConnectionPartsVars.serializer, this); + static GReactionConnectionPartsVars fromJson(Map json) => + _i1.serializers + .deserializeWith(GReactionConnectionPartsVars.serializer, json); +} + abstract class GReactablePartsVars implements Built { GReactablePartsVars._(); diff --git a/lib/graphql/github.var.gql.g.dart b/lib/graphql/github.var.gql.g.dart index 6151ac4..48ef0c7 100644 --- a/lib/graphql/github.var.gql.g.dart +++ b/lib/graphql/github.var.gql.g.dart @@ -46,6 +46,9 @@ Serializer _$gCommitsRefVarsSerializer = new _$GCommitsRefVarsSerializer(); Serializer _$gCommentPartsVarsSerializer = new _$GCommentPartsVarsSerializer(); +Serializer + _$gReactionConnectionPartsVarsSerializer = + new _$GReactionConnectionPartsVarsSerializer(); Serializer _$gReactablePartsVarsSerializer = new _$GReactablePartsVarsSerializer(); Serializer _$gReferencedEventPartsVarsSerializer = @@ -1096,6 +1099,31 @@ class _$GCommentPartsVarsSerializer } } +class _$GReactionConnectionPartsVarsSerializer + implements StructuredSerializer { + @override + final Iterable types = const [ + GReactionConnectionPartsVars, + _$GReactionConnectionPartsVars + ]; + @override + final String wireName = 'GReactionConnectionPartsVars'; + + @override + Iterable serialize( + Serializers serializers, GReactionConnectionPartsVars object, + {FullType specifiedType = FullType.unspecified}) { + return []; + } + + @override + GReactionConnectionPartsVars deserialize( + Serializers serializers, Iterable serialized, + {FullType specifiedType = FullType.unspecified}) { + return new GReactionConnectionPartsVarsBuilder().build(); + } +} + class _$GReactablePartsVarsSerializer implements StructuredSerializer { @override @@ -3832,6 +3860,69 @@ class GCommentPartsVarsBuilder } } +class _$GReactionConnectionPartsVars extends GReactionConnectionPartsVars { + factory _$GReactionConnectionPartsVars( + [void Function(GReactionConnectionPartsVarsBuilder) updates]) => + (new GReactionConnectionPartsVarsBuilder()..update(updates)).build(); + + _$GReactionConnectionPartsVars._() : super._(); + + @override + GReactionConnectionPartsVars rebuild( + void Function(GReactionConnectionPartsVarsBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + GReactionConnectionPartsVarsBuilder toBuilder() => + new GReactionConnectionPartsVarsBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is GReactionConnectionPartsVars; + } + + @override + int get hashCode { + return 596461557; + } + + @override + String toString() { + return newBuiltValueToStringHelper('GReactionConnectionPartsVars') + .toString(); + } +} + +class GReactionConnectionPartsVarsBuilder + implements + Builder { + _$GReactionConnectionPartsVars _$v; + + GReactionConnectionPartsVarsBuilder(); + + @override + void replace(GReactionConnectionPartsVars other) { + if (other == null) { + throw new ArgumentError.notNull('other'); + } + _$v = other as _$GReactionConnectionPartsVars; + } + + @override + void update(void Function(GReactionConnectionPartsVarsBuilder) updates) { + if (updates != null) updates(this); + } + + @override + _$GReactionConnectionPartsVars build() { + final _$result = _$v ?? new _$GReactionConnectionPartsVars._(); + replace(_$result); + return _$result; + } +} + class _$GReactablePartsVars extends GReactablePartsVars { factory _$GReactablePartsVars( [void Function(GReactablePartsVarsBuilder) updates]) => diff --git a/lib/graphql/serializers.gql.dart b/lib/graphql/serializers.gql.dart index 458c966..2ac9d65 100644 --- a/lib/graphql/serializers.gql.dart +++ b/lib/graphql/serializers.gql.dart @@ -414,6 +414,7 @@ import 'package:git_touch/graphql/github.data.gql.dart' GReactablePartsData_ROCKET, GReactablePartsData_THUMBS_DOWN, GReactablePartsData_THUMBS_UP, + GReactionConnectionPartsData, GReferencedEventPartsData, GReferencedEventPartsData_actor, GReferencedEventPartsData_commit, @@ -642,6 +643,7 @@ import 'package:git_touch/graphql/github.req.gql.dart' GPullRequestReviewPartsReq, GPullsReq, GReactablePartsReq, + GReactionConnectionPartsReq, GReferencedEventPartsReq, GRenamedTitleEventPartsReq, GReopenedEventPartsReq, @@ -699,6 +701,7 @@ import 'package:git_touch/graphql/github.var.gql.dart' GPullRequestReviewPartsVars, GPullsVars, GReactablePartsVars, + GReactionConnectionPartsVars, GReferencedEventPartsVars, GRenamedTitleEventPartsVars, GReopenedEventPartsVars, @@ -1730,6 +1733,9 @@ final SerializersBuilder _serializersBuilder = _$serializers.toBuilder() GReactablePartsData_THUMBS_UP, GReactablePartsReq, GReactablePartsVars, + GReactionConnectionPartsData, + GReactionConnectionPartsReq, + GReactionConnectionPartsVars, GReactionContent, GReactionOrder, GReactionOrderField, diff --git a/lib/graphql/serializers.gql.g.dart b/lib/graphql/serializers.gql.g.dart index 0887b9f..9be3797 100644 --- a/lib/graphql/serializers.gql.g.dart +++ b/lib/graphql/serializers.gql.g.dart @@ -670,6 +670,9 @@ Serializers _$serializers = (new Serializers().toBuilder() ..add(GReactablePartsData_THUMBS_UP.serializer) ..add(GReactablePartsReq.serializer) ..add(GReactablePartsVars.serializer) + ..add(GReactionConnectionPartsData.serializer) + ..add(GReactionConnectionPartsReq.serializer) + ..add(GReactionConnectionPartsVars.serializer) ..add(GReactionContent.serializer) ..add(GReactionOrder.serializer) ..add(GReactionOrderField.serializer) diff --git a/lib/screens/gh_issue.dart b/lib/screens/gh_issue.dart index 1255dc8..5fdd4b9 100644 --- a/lib/screens/gh_issue.dart +++ b/lib/screens/gh_issue.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:git_touch/graphql/github.data.gql.dart'; import 'package:git_touch/graphql/github.req.gql.dart'; +import 'package:git_touch/graphql/schema.schema.gql.dart'; import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/theme.dart'; import 'package:git_touch/utils/utils.dart'; @@ -26,7 +27,7 @@ class GhIssueScreen extends StatelessWidget { @required String avatarUrl, @required String title, @required StateLabelStatus status, - @required GCommentParts comment, + @required Widget body, Iterable extraWidgets = const [], }) { final theme = Provider.of(context); @@ -76,7 +77,7 @@ class GhIssueScreen extends StatelessWidget { CommonStyle.border, ...extraWidgets, SizedBox(height: 8), - CommentItem.gql(comment), + body, ], ), ), @@ -137,6 +138,7 @@ class GhIssueScreen extends StatelessWidget { if (p.issueOrPullRequest.G__typename == 'Issue') { final issue = p.issueOrPullRequest as GIssueData_repository_issueOrPullRequest__asIssue; + return _buildHeader( context, avatarUrl: issue.author.avatarUrl, @@ -144,7 +146,59 @@ class GhIssueScreen extends StatelessWidget { status: issue.closed ? StateLabelStatus.issueClosed : StateLabelStatus.issueOpened, - comment: issue, + body: CommentItem.gql(issue, issue, (key) { + // TODO: reduce boilerplate + // switch (key) { + // case GReactionContent.THUMBS_UP: + // issue.THUMBS_UP.rebuild((b) { + // b.viewerHasReacted = !b.viewerHasReacted; + // b.totalCount += (b.viewerHasReacted ? 1 : -1); + // }); + // break; + // case GReactionContent.THUMBS_DOWN: + // issue.THUMBS_DOWN.rebuild((b) { + // b.viewerHasReacted = !b.viewerHasReacted; + // b.totalCount += (b.viewerHasReacted ? 1 : -1); + // }); + // break; + // case GReactionContent.LAUGH: + // issue.LAUGH.rebuild((b) { + // b.viewerHasReacted = !b.viewerHasReacted; + // b.totalCount += (b.viewerHasReacted ? 1 : -1); + // }); + // break; + // case GReactionContent.HOORAY: + // issue.HOORAY.rebuild((b) { + // b.viewerHasReacted = !b.viewerHasReacted; + // b.totalCount += (b.viewerHasReacted ? 1 : -1); + // }); + // break; + // case GReactionContent.CONFUSED: + // issue.CONFUSED.rebuild((b) { + // b.viewerHasReacted = !b.viewerHasReacted; + // b.totalCount += (b.viewerHasReacted ? 1 : -1); + // }); + // break; + // case GReactionContent.HEART: + // issue.HEART.rebuild((b) { + // b.viewerHasReacted = !b.viewerHasReacted; + // b.totalCount += (b.viewerHasReacted ? 1 : -1); + // }); + // break; + // case GReactionContent.ROCKET: + // issue.ROCKET.rebuild((b) { + // b.viewerHasReacted = !b.viewerHasReacted; + // b.totalCount += (b.viewerHasReacted ? 1 : -1); + // }); + // break; + // case GReactionContent.EYES: + // issue.EYES.rebuild((b) { + // b.viewerHasReacted = !b.viewerHasReacted; + // b.totalCount += (b.viewerHasReacted ? 1 : -1); + // }); + // break; + // } + }), ); } else { final pr = p.issueOrPullRequest @@ -158,7 +212,7 @@ class GhIssueScreen extends StatelessWidget { : pr.closed ? StateLabelStatus.pullClosed : StateLabelStatus.pullOpened, - comment: pr, + body: CommentItem.gql(pr, pr, (key) {}), extraWidgets: [ Link( child: Container( diff --git a/lib/widgets/comment_item.dart b/lib/widgets/comment_item.dart index 7bdc759..95c7582 100644 --- a/lib/widgets/comment_item.dart +++ b/lib/widgets/comment_item.dart @@ -1,6 +1,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:git_touch/graphql/github.data.gql.dart'; +import 'package:git_touch/graphql/schema.schema.gql.dart'; import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/theme.dart'; import 'package:git_touch/widgets/action_button.dart'; @@ -13,54 +14,102 @@ import 'avatar.dart'; import 'link.dart'; import 'user_name.dart'; -final emojiMap = { - 'THUMBS_UP': '👍', - 'THUMBS_DOWN': '👎', - 'LAUGH': '😄', - 'HOORAY': '🎉', - 'CONFUSED': '😕', - 'HEART': '❤️', - 'ROCKET': '🚀', - 'EYES': '👀' -}; +class EmojiPayload { + GReactionContent key; + String text; + int count; + bool reacted; + EmojiPayload({ + @required this.key, + @required this.text, + @required this.count, + @required this.reacted, + }); +} + +typedef EmojiUpdateCallaback = void Function(GReactionContent data); class GhEmojiAction extends StatefulWidget { - final Map payload; - GhEmojiAction(this.payload); + final String id; + final Iterable items; + final EmojiUpdateCallaback onReaction; + + GhEmojiAction(this.id, GReactableParts r, this.onReaction) + : items = [ + EmojiPayload( + key: GReactionContent.THUMBS_UP, + text: '👍', + count: r.THUMBS_UP.totalCount, + reacted: r.THUMBS_UP.viewerHasReacted, + ), + EmojiPayload( + key: GReactionContent.THUMBS_DOWN, + text: '👎', + count: r.THUMBS_DOWN.totalCount, + reacted: r.THUMBS_DOWN.viewerHasReacted, + ), + EmojiPayload( + key: GReactionContent.LAUGH, + text: '😄', + count: r.LAUGH.totalCount, + reacted: r.LAUGH.viewerHasReacted, + ), + EmojiPayload( + key: GReactionContent.HOORAY, + text: '🎉', + count: r.HOORAY.totalCount, + reacted: r.HOORAY.viewerHasReacted, + ), + EmojiPayload( + key: GReactionContent.CONFUSED, + text: '😕', + count: r.CONFUSED.totalCount, + reacted: r.CONFUSED.viewerHasReacted, + ), + EmojiPayload( + key: GReactionContent.HEART, + text: '❤️', + count: r.HEART.totalCount, + reacted: r.HEART.viewerHasReacted, + ), + EmojiPayload( + key: GReactionContent.ROCKET, + text: '🚀', + count: r.ROCKET.totalCount, + reacted: r.ROCKET.viewerHasReacted, + ), + EmojiPayload( + key: GReactionContent.EYES, + text: '👀', + count: r.EYES.totalCount, + reacted: r.EYES.viewerHasReacted, + ), + ]; @override _GhEmojiActionState createState() => _GhEmojiActionState(); } class _GhEmojiActionState extends State { - get payload => widget.payload; + _onReaction(EmojiPayload item) async { + final op = item.reacted ? 'remove' : 'add'; - onReaction(String emojiKey) async { - if (emojiKey == null) return; - - final isRemove = _hasReacted(emojiKey); - var id = payload['id'] as String; - var operation = isRemove ? 'remove' : 'add'; - - try { - await context.read().query(''' + await context.read().query(''' mutation { - ${operation}Reaction(input: {subjectId: "$id", content: $emojiKey}) { + ${op}Reaction(input: {subjectId: "${widget.id}", content: ${item.key.name}}) { clientMutationId } } '''); - setState(() { - payload[emojiKey]['totalCount'] += isRemove ? -1 : 1; - payload[emojiKey]['viewerHasReacted'] = !isRemove; - }); - } catch (e) { - context.read().showWarning(context, e); - } - } - - bool _hasReacted(String emojiKey) { - if (payload[emojiKey] == null) return false; - return payload[emojiKey]['viewerHasReacted'] as bool; + setState(() { + item.reacted = !item.reacted; + if (item.reacted) { + item.count++; + } else { + item.count--; + } + }); + // TODO: should set state from parent widgets + // widget.onReaction(item.key); } @override @@ -69,53 +118,44 @@ mutation { return Wrap( crossAxisAlignment: WrapCrossAlignment.center, children: [ - ...emojiMap.entries - .where((entry) => payload[entry.key]['totalCount'] as int != 0) - .map((entry) { - var emojiKey = entry.key; - var emoji = entry.value; - var count = payload[entry.key]['totalCount'] as int; - - return Link( - onTap: () { - onReaction(emojiKey); - }, - child: Container( - padding: EdgeInsets.all(4), - decoration: BoxDecoration( - color: _hasReacted(emojiKey) - ? (theme.brightness == Brightness.dark - ? PrimerColors.blue900 - : PrimerColors.blue000) - : Colors.transparent, - ), - child: Wrap( - crossAxisAlignment: WrapCrossAlignment.center, - children: [ - Text(emoji, style: TextStyle(fontSize: 18)), - SizedBox(width: 4), - Text(numberFormat.format(count), - style: - TextStyle(color: theme.palette.primary, fontSize: 14)) - ], + for (final item in widget.items) + if (item.count > 0) + Link( + onTap: () { + _onReaction(item); + }, + child: Container( + padding: EdgeInsets.all(4), + decoration: BoxDecoration( + color: item.reacted + ? (theme.brightness == Brightness.dark + ? PrimerColors.blue900 + : PrimerColors.blue000) + : Colors.transparent, + ), + child: Wrap( + crossAxisAlignment: WrapCrossAlignment.center, + children: [ + Text(item.text, style: TextStyle(fontSize: 18)), + SizedBox(width: 4), + Text(numberFormat.format(item.count), + style: TextStyle( + color: theme.palette.primary, fontSize: 14)) + ], + ), ), ), - ); - }), Link( onTap: () async { - await theme.showActions( - context, - emojiMap.entries.map((entry) { - final emojiKey = entry.key; - return ActionItem( - text: emojiKey + ' ' + entry.value, + await theme.showActions(context, [ + for (final item in widget.items) + ActionItem( + text: item.text, onTap: (_) { - onReaction(emojiKey); + _onReaction(item); }, - ); - }).toList(), - ); + ) + ]); }, child: Container( padding: EdgeInsets.all(4), @@ -143,7 +183,8 @@ class CommentItem extends StatelessWidget { final List commentActionItemList; // p.author could be null (deleted user) - CommentItem.gql(GCommentParts p) + CommentItem.gql( + GCommentParts p, GReactableParts r, EmojiUpdateCallaback onReaction) : avatar = Avatar( url: p.author?.avatarUrl ?? 'https://avatars.githubusercontent.com/u/10137?s=460&u=b1951d34a583cf12ec0d3b0781ba19be97726318&v=4', @@ -152,7 +193,7 @@ class CommentItem extends StatelessWidget { login = p.author?.login ?? 'ghost', createdAt = p.createdAt, body = p.body, - widgets = [], // [GhEmojiAction(payload)], // TODO: + widgets = [GhEmojiAction(p.id, r, onReaction)], prefix = 'github', commentActionItemList = []; // TODO diff --git a/lib/widgets/timeline_item.dart b/lib/widgets/timeline_item.dart index a897927..dca376f 100644 --- a/lib/widgets/timeline_item.dart +++ b/lib/widgets/timeline_item.dart @@ -83,7 +83,8 @@ class TimelineItem extends StatelessWidget { ]), ); case 'IssueComment': - return CommentItem.gql(node as GCommentParts); + return CommentItem.gql( + node as GCommentParts, node as GReactableParts, (item) {}); case 'CrossReferencedEvent': final p = node as GCrossReferencedEventParts; final source = p.source as dynamic; @@ -288,7 +289,8 @@ class TimelineItem extends StatelessWidget { padding: CommonStyle.padding.copyWith(left: 50), child: Column( children: [ - for (var v in p.comments.nodes) CommentItem.gql(v), + for (var v in p.comments.nodes) + CommentItem.gql(v, v, (key) {}), ], ), ),