UNPKG

@kiwicom/smart-faq

Version:

58 lines (49 loc) 1.44 kB
// @flow import * as React from 'react'; // TODO: replace by React.memo when updating to React 16.6 import memoize from 'memoize-one'; import OriginalQueryRenderer from 'relay-in-next/src/QueryRenderer'; import createEnvironment from './environment'; import { fromLanguageToLocale } from '../helpers/translationUtils'; type RenderArgs<RenderProps> = { error: ?Error, props: ?RenderProps, ... }; export type Props<RenderProps> = {| cacheConfig?: {| force: boolean |}, query: () => mixed, render: (RenderArgs<RenderProps>) => React.Node, variables?: { [string]: mixed, ... }, loginToken?: ?string, kwAuthToken?: ?string, language: string, |}; class QueryRenderer<RenderProps> extends React.Component<Props<RenderProps>> { getEnvironment = memoize( (loginToken: ?string, kwAuthToken: ?string, locale: string) => createEnvironment(loginToken, kwAuthToken, locale), ); render() { const { loginToken, kwAuthToken, query, variables, cacheConfig, render, } = this.props; const locale = fromLanguageToLocale(this.props.language); const newEnvironment = this.getEnvironment(loginToken, kwAuthToken, locale); return ( <OriginalQueryRenderer query={query} variables={variables} cacheConfig={cacheConfig} render={render} environment={newEnvironment} /> ); } } export default QueryRenderer;