From fb18286177bb9b7e9161b167d15a8da2b2a3b94b Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Mon, 20 Sep 2021 19:07:17 +0200 Subject: [PATCH] fix(useApolloClient): save current client in closure, closes #1249 --- packages/vue-apollo-composable/src/useApolloClient.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/vue-apollo-composable/src/useApolloClient.ts b/packages/vue-apollo-composable/src/useApolloClient.ts index ed1a1cd..76163ac 100644 --- a/packages/vue-apollo-composable/src/useApolloClient.ts +++ b/packages/vue-apollo-composable/src/useApolloClient.ts @@ -32,15 +32,18 @@ function resolveClientWithId (providedApolloClients: ClientDict | null, cl export function useApolloClient (clientId?: ClientId): UseApolloClientReturn { let resolveImpl: ResolveClient> + // Save current client in current closure scope + const savedCurrentClient = currentApolloClient + if (!getCurrentInstance()) { - resolveImpl = () => currentApolloClient + resolveImpl = () => savedCurrentClient } else { const providedApolloClients: ClientDict | null = inject(ApolloClients, null) const providedApolloClient: ApolloClient | null = inject(DefaultApolloClient, null) resolveImpl = (id?: ClientId) => { - if (currentApolloClient) { - return currentApolloClient + if (savedCurrentClient) { + return savedCurrentClient } else if (id) { return resolveClientWithId(providedApolloClients, id) }