summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/static_site_editor/graphql/index.js
blob: 23f800517c9904539f17891317148b648343ffe5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import Vue from 'vue';
import VueApollo from 'vue-apollo';
import createDefaultClient from '~/lib/graphql';
import fileResolver from './resolvers/file';
import hasSubmittedChangesResolver from './resolvers/has_submitted_changes';
import submitContentChangesResolver from './resolvers/submit_content_changes';
import typeDefs from './typedefs.graphql';

Vue.use(VueApollo);

const createApolloProvider = (appData) => {
  const defaultClient = createDefaultClient(
    {
      Project: {
        file: fileResolver,
      },
      Mutation: {
        submitContentChanges: submitContentChangesResolver,
        hasSubmittedChanges: hasSubmittedChangesResolver,
      },
    },
    {
      typeDefs,
      assumeImmutableResults: true,
    },
  );

  // eslint-disable-next-line @gitlab/require-i18n-strings
  const mounts = appData.mounts.map((mount) => ({ __typename: 'Mount', ...mount }));

  defaultClient.cache.writeData({
    data: {
      appData: {
        __typename: 'AppData',
        ...appData,
        mounts,
      },
    },
  });

  return new VueApollo({
    defaultClient,
  });
};

export default createApolloProvider;