From 80d558559f7fe663682a9357c74242fa39b0c309 Mon Sep 17 00:00:00 2001 From: Tom Avalexing Date: Tue, 24 Oct 2023 09:54:45 +0300 Subject: [PATCH] fix unauthenticated (#2203) Co-authored-by: Charles Bochet --- .../modules/apollo/services/apollo.factory.ts | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/front/src/modules/apollo/services/apollo.factory.ts b/front/src/modules/apollo/services/apollo.factory.ts index a11beb595..c3b371dd3 100644 --- a/front/src/modules/apollo/services/apollo.factory.ts +++ b/front/src/modules/apollo/services/apollo.factory.ts @@ -3,6 +3,7 @@ import { ApolloClient, ApolloClientOptions, ApolloLink, + fromPromise, ServerError, ServerParseError, } from '@apollo/client'; @@ -22,8 +23,6 @@ import { loggerLink } from '../utils'; const logger = loggerLink(() => 'Twenty'); -let isRefreshing = false; - export interface Options extends ApolloClientOptions { onError?: (err: GraphQLErrors | undefined) => void; onNetworkError?: (err: Error | ServerParseError | ServerError) => void; @@ -78,7 +77,6 @@ export class ApolloFactory implements ApolloManager { retryIf: (error) => !!error, }, }); - const errorLink = onError( ({ graphQLErrors, networkError, forward, operation }) => { if (graphQLErrors) { @@ -87,22 +85,15 @@ export class ApolloFactory implements ApolloManager { for (const graphQLError of graphQLErrors) { switch (graphQLError?.extensions?.code) { case 'UNAUTHENTICATED': { - if (!isRefreshing) { - isRefreshing = true; + return fromPromise( renewToken(uri, this.tokenPair) .then((tokens) => { onTokenPairChange?.(tokens); - return true; }) .catch(() => { onUnauthenticatedError?.(); - return false; - }) - .finally(() => { - isRefreshing = false; - }); - } - return forward(operation); + }), + ).flatMap(() => forward(operation)); } default: if (isDebugMode) {