Skip to content

Instantly share code, notes, and snippets.

@maraisr
Created February 6, 2020 04:02
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maraisr/0fdf9c08176b5e6aa95126a9abba80a0 to your computer and use it in GitHub Desktop.
Save maraisr/0fdf9c08176b5e6aa95126a9abba80a0 to your computer and use it in GitHub Desktop.
import { Environment, Network, RecordSource, Store } from 'relay-runtime';
import RelayPublishQueue from 'relay-runtime/lib/store/RelayPublishQueue.js';
import RelayDefaultHandlerProvider from 'relay-runtime/lib/handlers/RelayDefaultHandlerProvider.js';
const network = Network.create(fetchQuery);
const createEnvironment = (records = {}) => {
const source = new RecordSource(records);
const store = new Store(source);
return new Environment({
network,
store,
});
};
let memoEnv = null;
export const getEnvironment = (records = {}) => {
if (!process.browser) {
if (memoEnv === null) {
memoEnv = createEnvironment(records);
} else {
const source = new RecordSource(records);
const store = new Store(source);
memoEnv._store = store;
memoEnv._publishQueue = new RelayPublishQueue(store, RelayDefaultHandlerProvider, memoEnv._getDataID);
}
} else if (memoEnv === null) {
memoEnv = createEnvironment(records);
}
return memoEnv;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment