You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
frontend/src/app/graphql.module.ts

45 lines
1.1 KiB
TypeScript

import { NgModule } from '@angular/core';
import { APOLLO_OPTIONS } from 'apollo-angular';
import {
ApolloClientOptions,
ApolloLink,
concat,
InMemoryCache,
} from '@apollo/client/core';
import { HttpLink } from 'apollo-angular/http';
import { environment } from '../environments/environment';
const uri = environment.apiUrl + '/graphql'; // <-- add the URL of the GraphQL server here
const cleanTypeName = new ApolloLink((operation, forward) => {
if (operation.variables) {
const omitTypename = (key: string, value: any) =>
key === '__typename' ? undefined : value;
operation.variables = JSON.parse(
JSON.stringify(operation.variables),
omitTypename
);
}
return forward(operation).map((data) => {
return data;
});
});
export function createApollo(httpLink: HttpLink): ApolloClientOptions<any> {
return {
link: concat(cleanTypeName, httpLink.create({ uri })),
cache: new InMemoryCache({}),
};
}
@NgModule({
providers: [
{
provide: APOLLO_OPTIONS,
useFactory: createApollo,
deps: [HttpLink],
},
],
})
export class GraphQLModule {}