summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/ide/services/gql.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/ide/services/gql.js')
-rw-r--r--app/assets/javascripts/ide/services/gql.js23
1 files changed, 18 insertions, 5 deletions
diff --git a/app/assets/javascripts/ide/services/gql.js b/app/assets/javascripts/ide/services/gql.js
index 8a7f27328ba..211cc78bd99 100644
--- a/app/assets/javascripts/ide/services/gql.js
+++ b/app/assets/javascripts/ide/services/gql.js
@@ -1,8 +1,21 @@
+import { memoize } from 'lodash';
import createGqClient, { fetchPolicies } from '~/lib/graphql';
-export default createGqClient(
- {},
- {
- fetchPolicy: fetchPolicies.NO_CACHE,
- },
+/**
+ * Returns a memoized client
+ *
+ * We defer creating the client so that importing this module does not cause any side-effects.
+ * Creating the client immediately caused issues with miragejs where the gql client uses the
+ * real fetch() instead of the shimmed one.
+ */
+const getClient = memoize(() =>
+ createGqClient(
+ {},
+ {
+ fetchPolicy: fetchPolicies.NO_CACHE,
+ },
+ ),
);
+
+// eslint-disable-next-line import/prefer-default-export
+export const query = (...args) => getClient().query(...args);