Commit da48e80e authored by Enrique Alcantara's avatar Enrique Alcantara

Set up graphql in Static Site Editor

Create a new instance of the apollo client
and inject a VueApollo provider to the
Static Site Editor app
parent 9aa77ab2
...@@ -33,6 +33,7 @@ export default (resolvers = {}, config = {}) => { ...@@ -33,6 +33,7 @@ export default (resolvers = {}, config = {}) => {
}; };
return new ApolloClient({ return new ApolloClient({
typeDefs: config.typeDefs,
link: ApolloLink.split( link: ApolloLink.split(
operation => operation.getContext().hasUpload || operation.getContext().isSingleRequest, operation => operation.getContext().hasUpload || operation.getContext().isSingleRequest,
createUploadLink(httpOptions), createUploadLink(httpOptions),
......
import Vue from 'vue';
import VueApollo from 'vue-apollo';
import createDefaultClient from '~/lib/graphql';
import typeDefs from './typedefs.graphql';
Vue.use(VueApollo);
const createApolloProvider = data => {
const defaultClient = createDefaultClient(
{},
{
typeDefs,
},
);
defaultClient.cache.writeData({
data,
});
return new VueApollo({
defaultClient,
});
};
export default createApolloProvider;
extend type Query {
isSupportedContent: Boolean!
projectId: String!
returnUrl: String
sourcePath: String!
username: String!
}
...@@ -3,9 +3,12 @@ import { parseBoolean } from '~/lib/utils/common_utils'; ...@@ -3,9 +3,12 @@ import { parseBoolean } from '~/lib/utils/common_utils';
import App from './components/app.vue'; import App from './components/app.vue';
import createStore from './store'; import createStore from './store';
import createRouter from './router'; import createRouter from './router';
import createApolloProvider from './graphql';
const initStaticSiteEditor = el => { const initStaticSiteEditor = el => {
const { isSupportedContent, projectId, path: sourcePath, returnUrl, baseUrl } = el.dataset; const { isSupportedContent, projectId, path: sourcePath, baseUrl } = el.dataset;
const { current_username: username } = window.gon;
const returnUrl = el.dataset.returnUrl || null;
const store = createStore({ const store = createStore({
initialState: { initialState: {
...@@ -13,15 +16,23 @@ const initStaticSiteEditor = el => { ...@@ -13,15 +16,23 @@ const initStaticSiteEditor = el => {
projectId, projectId,
returnUrl, returnUrl,
sourcePath, sourcePath,
username: window.gon.current_username, username,
}, },
}); });
const router = createRouter(baseUrl); const router = createRouter(baseUrl);
const apolloProvider = createApolloProvider({
isSupportedContent: parseBoolean(isSupportedContent),
projectId,
returnUrl,
sourcePath,
username,
});
return new Vue({ return new Vue({
el, el,
store, store,
router, router,
apolloProvider,
components: { components: {
App, App,
}, },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment