Quantcast
Channel: Active questions tagged react-native+typescript - Stack Overflow
Viewing all articles
Browse latest Browse all 6287

ApolloClient configuration with createUploadLink and WebSocketLink

$
0
0

I want to be able to upload files from my React Native App for which I need to use createUploadLink but I am facing some problems configuring it.

My current setup looks like this:

import SInfo from "react-native-sensitive-info";import Config from "react-native-config";import { InMemoryCache, ApolloClient } from "apollo-boost";import { createHttpLink } from "apollo-link-http";import { createUploadLink } from "apollo-upload-client";import { WebSocketLink } from "apollo-link-ws";import { setContext } from "apollo-link-context";import { getMainDefinition } from "apollo-utilities";import { split } from "apollo-link";let token: any;const getToken = async () => {  if (token != null) {    return token;  }  token = await SInfo.getItem("ACCESS_TOKEN", {});  return token;};export const cache = new InMemoryCache();// Create a WebSocket link:const wsLink = new WebSocketLink({  uri: Config.SUBSCRIPTION_SERVER,  options: {    reconnect: true,  },});const httpLink = createHttpLink({ uri: Config.GRAPHQL_SERVER });const uploadLink = createUploadLink({ uri: Config.GRAPHQL_SERVER });const authLink = setContext(async (_, { headers }) => {  await getToken();  return {    headers: {      ...headers,      authorization: token ? `Bearer ${token}` : null,    },  };});const linkConcated = authLink.concat(httpLink);// using the ability to split links, you can send data to each link// depending on what kind of operation is being sentconst link = split(  // split based on operation type  ({ query }) => {    const definition = getMainDefinition(query);    return (      definition.kind === "OperationDefinition" &&      definition.operation === "subscription"    );  },  wsLink,  linkConcated);export const client = new ApolloClient({  link,  cache,});

I also tried the approach with ApolloLink.from([]) but it is not letting me add it. And also tried replacing it with createHttpLink as I need only one as per my understanding.

I get the following error:

const uploadLink: ApolloLinkArgument of type 'ApolloLink' is not assignable to parameter of type 'ApolloLink | RequestHandler'.  Type 'import("/home/musayyab/Desktop/projects/Talent/Native-App/app/node_modules/@apollo/client/link/core/ApolloLink").ApolloLink' is not assignable to type 'import("/home/musayyab/Desktop/projects/Talent/Native-App/app/node_modules/apollo-link/lib/link").ApolloLink'.    Types of property 'split' are incompatible.      Type '(test: (op: import("/home/musayyab/Desktop/projects/Talent/Native-App/app/node_modules/@apollo/client/link/core/types").Operation) => boolean, left: import("/home/musayyab/Desktop/projects/Talent/Native-App/app/node_modules/@apollo/client/link/core/ApolloLink").ApolloLink | import("/home/musayyab/Desktop/projects/Ta...' is not assignable to type '(test: (op: import("/home/musayyab/Desktop/projects/Talent/Native-App/app/node_modules/apollo-link/lib/types").Operation) => boolean, left: import("/home/musayyab/Desktop/projects/Talent/Native-App/app/node_modules/apollo-link/lib/link").ApolloLink | import("/home/musayyab/Desktop/projects/Talent/Native-App/app/node...'.        Types of parameters 'test' and 'test' are incompatible.          Types of parameters 'op' and 'op' are incompatible.            Property 'toKey' is missing in type 'import("/home/musayyab/Desktop/projects/Talent/Native-App/app/node_modules/@apollo/client/link/core/types").Operation' but required in type 'import("/home/musayyab/Desktop/projects/Talent/Native-App/app/node_modules/apollo-link/lib/types").Operation'.ts(2345)types.d.ts(24, 5): 'toKey' is declared here.

I would appreciate any help.


Viewing all articles
Browse latest Browse all 6287

Trending Articles