From ef0c65552f750be4fd2f15d257f2fd10cb2f764e Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Wed, 26 Jul 2017 12:00:00 +0200 Subject: [PATCH] New apolloProvider.getStates() method --- src/apollo-provider.js | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/apollo-provider.js b/src/apollo-provider.js index bdcff66..ec8e771 100644 --- a/src/apollo-provider.js +++ b/src/apollo-provider.js @@ -128,20 +128,28 @@ export class ApolloProvider { }) } - exportStates (options) { + getStates (options) { const finalOptions = Object.assign({}, { exportNamespace: '', - globalName: '__APOLLO_STATE__', - attachTo: 'window', }, options) - - let js = `${finalOptions.attachTo}.${finalOptions.globalName} = {` + const states = {} for (const key in this.clients) { const client = this.clients[key] const state = { [client.reduxRootKey || 'apollo']: client.getInitialState() } - js += `['${finalOptions.exportNamespace}${key}']:${JSON.stringify(state)},` + states[`${finalOptions.exportNamespace}${key}`] = state } - js += `};` + return states + } + + exportStates (options) { + const finalOptions = Object.assign({}, { + globalName: '__APOLLO_STATE__', + attachTo: 'window', + }, options) + const states = this.getStates({ + exportNamespace: options.exportNamespace, + }) + const js = `${finalOptions.attachTo}.${finalOptions.globalName} = ${JSON.stringify(states)};` return js } }