Transport, Client, from coral-framework

This commit is contained in:
Belen Curcio
2017-01-19 10:01:43 -03:00
parent d34d511ce6
commit 2d414a5ab7
5 changed files with 47 additions and 29 deletions
+8 -26
View File
@@ -1,33 +1,15 @@
import React from 'react';
import {render} from 'react-dom';
import ApolloClient, {createNetworkInterface} from 'apollo-client';
import {ApolloProvider} from 'react-apollo';
import thunk from 'redux-thunk';
import {createStore, applyMiddleware, compose} from 'redux';
import {client} from 'coral-framework/client';
import store from 'coral-framework/store';
import Stream from './CommentStream';
const client = new ApolloClient({
networkInterface: createNetworkInterface({
uri: '/api/v1/graph/ql',
opts: {
credentials: 'same-origin'
}
})
});
const store = createStore(
client.reducer(),
{}, // initial state
compose(
applyMiddleware(thunk),
window.devToolsExtension ? window.devToolsExtension() : f => f,
)
);
render(
<ApolloProvider client={client} store={store}>
<Stream />
</ApolloProvider>
, document.querySelector('#coralStream'));
<ApolloProvider client={client} store={store}>
<Stream />
</ApolloProvider>
, document.querySelector('#coralStream')
);
+7
View File
@@ -0,0 +1,7 @@
import ApolloClient, {addTypename} from 'apollo-client';
import getNetworkInterface from './transport';
export const client = new ApolloClient({
queryTransformer: addTypename,
networkInterface: getNetworkInterface()
});
+7 -3
View File
@@ -1,9 +1,13 @@
import {createStore, applyMiddleware} from 'redux';
import {createStore, applyMiddleware, compose} from 'redux';
import thunk from 'redux-thunk';
import mainReducer from './reducers';
import {client} from './client';
export default createStore(
client.reducer(),
mainReducer,
window.devToolsExtension && window.devToolsExtension(),
applyMiddleware(thunk)
compose(
window.devToolsExtension && window.devToolsExtension(),
applyMiddleware(thunk)
)
);
+14
View File
@@ -0,0 +1,14 @@
import {print} from 'graphql-tag/printer';
// quick way to add the subscribe and unsubscribe functions to the network interface
const addGraphQLSubscriptions = (networkInterface, wsClient) => Object.assign(networkInterface, {
subscribe: (request, handler) => wsClient.subscribe({
query: print(request.query),
variables: request.variables,
}, handler),
unsubscribe: (id) => {
wsClient.unsubscribe(id);
},
});
export default addGraphQLSubscriptions;
+11
View File
@@ -0,0 +1,11 @@
import {createNetworkInterface} from 'apollo-client';
export default function getNetworkInterface(apiUrl = '/api/v1/graph/ql', headers = {}) {
return new createNetworkInterface({
uri: apiUrl,
opts: {
credentials: 'same-origin',
headers,
},
});
}