diff --git a/lib/graphql/gh_user.dart b/lib/graphql/gh_user.dart index 68947a5..40b29a7 100644 --- a/lib/graphql/gh_user.dart +++ b/lib/graphql/gh_user.dart @@ -1388,7 +1388,7 @@ class GhUserQuery extends GraphQLQuery { ]); @override - final String operationName = null; + final String operationName = 'gh_user'; @override final GhUserArguments variables; diff --git a/lib/models/auth.dart b/lib/models/auth.dart index 30ffecb..27c56b6 100644 --- a/lib/models/auth.dart +++ b/lib/models/auth.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'dart:convert'; import 'dart:async'; +import 'package:git_touch/utils/request_serilizer.dart'; import 'package:gql_http_link/gql_http_link.dart'; import 'package:artemis/artemis.dart'; import 'package:fimber/fimber.dart'; @@ -192,8 +193,11 @@ class AuthModel with ChangeNotifier { if (_gqlClient == null) { _gqlClient = ArtemisClient.fromLink( - HttpLink(_apiPrefix + '/graphql', - defaultHeaders: {HttpHeaders.authorizationHeader: 'token $token'}), + HttpLink( + _apiPrefix + '/graphql', + defaultHeaders: {HttpHeaders.authorizationHeader: 'token $token'}, + serializer: GithubRequestSerializer(), + ), ); } diff --git a/lib/utils/request_serilizer.dart b/lib/utils/request_serilizer.dart new file mode 100644 index 0000000..5dde135 --- /dev/null +++ b/lib/utils/request_serilizer.dart @@ -0,0 +1,21 @@ +import "package:gql/execution.dart"; +import "package:gql/language.dart"; +import 'package:gql_link/gql_link.dart'; + +class GithubRequestSerializer extends RequestSerializer { + const GithubRequestSerializer(); + + @override + Map serializeRequest(Request request) { + final RequestExtensionsThunk thunk = request.context.entry(); + + return { + // Remove operationName here for GitHub API compatibility + // "operationName": request.operation.operationName, + "variables": request.operation.variables, + "query": printNode(request.operation.document), + if (thunk != null) + "extensions": thunk.getRequestExtensions(request), + }; + } +}