From 7e74615bf67459fc40b504dc20d705305f1d088e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20G=C5=82ownia?= Date: Tue, 29 Mar 2022 13:48:39 +0200 Subject: [PATCH] [#128] fix MarketData cache issue, add default cachePolicy to data provider --- apps/trading/lib/apollo-client.ts | 3 --- .../src/data-providers/generic-data-provider.ts | 16 ++++++++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/apps/trading/lib/apollo-client.ts b/apps/trading/lib/apollo-client.ts index 85632063d..75533c245 100644 --- a/apps/trading/lib/apollo-client.ts +++ b/apps/trading/lib/apollo-client.ts @@ -33,9 +33,6 @@ export function createClient(base?: string) { Instrument: { keyFields: false, }, - MarketData: { - keyFields: ['market', ['id']], - }, Node: { keyFields: false, }, diff --git a/libs/graphql/src/data-providers/generic-data-provider.ts b/libs/graphql/src/data-providers/generic-data-provider.ts index 64d93b978..9a63dc808 100644 --- a/libs/graphql/src/data-providers/generic-data-provider.ts +++ b/libs/graphql/src/data-providers/generic-data-provider.ts @@ -3,6 +3,7 @@ import type { Draft } from 'immer'; import type { ApolloClient, DocumentNode, + FetchPolicy, TypedDocumentNode, OperationVariables, } from '@apollo/client'; @@ -45,7 +46,8 @@ function makeDataProviderInternal( subscriptionQuery: Query, update: Update, getData: GetData, - getDelta: GetDelta + getDelta: GetDelta, + fetchPolicy: FetchPolicy = 'no-cache' ): Subscribe { const callbacks: UpdateCallback[] = []; const updateQueue: Delta[] = []; @@ -104,7 +106,11 @@ function makeDataProviderInternal( } }); try { - const res = await client.query({ query, variables }); + const res = await client.query({ + query, + variables, + fetchPolicy, + }); data = getData(res.data); if (data && updateQueue && updateQueue.length > 0) { data = produce(data, (draft) => { @@ -175,7 +181,8 @@ export function makeDataProvider( subscriptionQuery: Query, update: Update, getData: GetData, - getDelta: GetDelta + getDelta: GetDelta, + fetchPolicy: FetchPolicy = 'no-cache' ): Subscribe { const getInstance = memoize((variables) => makeDataProviderInternal( @@ -183,7 +190,8 @@ export function makeDataProvider( subscriptionQuery, update, getData, - getDelta + getDelta, + fetchPolicy ) ); return (callback, client, variables) =>