svelte-apollo icon indicating copy to clipboard operation
svelte-apollo copied to clipboard

How is it possible to update the client with a new JWT in headers?

Open t-lock opened this issue 1 year ago • 1 comments

<script lang="ts">
  import { ApolloClient, InMemoryCache } from "@apollo/client";
  import { setClient } from "svelte-apollo";

  export let token: string = "";

  const cache = new InMemoryCache();

  const client = new ApolloClient({
    uri: import.meta.env.VITE_HASURA_GQL_URL,
    cache,
    headers: {
      Authorization: `Bearer ${token}`,
    },
  });
  setClient(client);
</script>

<slot />

Passing in an updated token via props does not cause a re-render. Since the whole basis of this library is passing the Client through Context, and Context only being able to be set during component initialization, I do not see how it is possible to update the Client after initialization, such as when a new token is provided through a refresh token operation.

Please advise.

t-lock avatar Nov 17 '22 17:11 t-lock

It should not re-render in order for your request to grab the most recent token.

every time you request a method post to your request URL (your graphql endpoint) you will call it with the most recent token.

did you checked your network tab to verify your request includes your most recent token?

binaryme avatar Feb 08 '23 14:02 binaryme