awslabs / aws-mobile-appsync-sdk-js

JavaScript library files for Offline, Sync, Sigv4. includes support for React Native
Apache License 2.0
921 stars 266 forks source link

Passing a header into AWSAppSyncClient? #761

Open cristal2431 opened 10 months ago

cristal2431 commented 10 months ago

Here's what I am trying to do essentially in Angular.

I am passing the credentials with the users identityId And JWT token to Appsync to authenticate them.

const client = new AWSAppSyncClient({
  url: appSyncConfig.graphqlEndpoint,
  region: appSyncConfig.region,
  auth: {
      type: AUTH_TYPE.AMAZON_COGNITO_USER_POOLS,
      jwtToken: async () => (await Auth.currentSession()).getIdToken().getJwtToken(),      
  }
});

My question is, is there any way I can pass an additional header here?

For queries I am using below code which works fine:

const observable = client.watchQuery({
          query: gql(
            getToDo
          ),  
          fetchPolicy: 'cache-and-network',
          variables: variables,
          context: {
            headers:{
              'x-appsync-domain': environment.host,
            }
          }
        });

However, in mutate it does not work.

const result =  await client.mutate(buildMutation(
        client,
        gql(createTodo),
        {
          inputType: gql(createTodoInput),
          variables: {
            input: todo
          },
        },
        _variables => [gql(listTodo)],
        "Todo"
      ));

Is there any other way, I can pass header to mutate?