From d731518c8c48ca24a5efd717230006040f22cbf5 Mon Sep 17 00:00:00 2001 From: Roman Hotsiy Date: Mon, 30 Jul 2018 12:51:50 +0300 Subject: [PATCH] chore: refactor, rename StoreProvider to StoreBuilder --- src/components/Redoc/Redoc.tsx | 49 ++++++++++--------- src/components/RedocStandalone.tsx | 6 +-- .../{StoreProvider.ts => StoreBuilder.ts} | 15 +++--- src/components/index.ts | 2 +- 4 files changed, 39 insertions(+), 33 deletions(-) rename src/components/{StoreProvider.ts => StoreBuilder.ts} (79%) diff --git a/src/components/Redoc/Redoc.tsx b/src/components/Redoc/Redoc.tsx index 25d4a50a..023e5244 100644 --- a/src/components/Redoc/Redoc.tsx +++ b/src/components/Redoc/Redoc.tsx @@ -13,6 +13,7 @@ import { StickyResponsiveSidebar } from '../StickySidebar/StickyResponsiveSideba import { ApiContentWrap, BackgroundStub, RedocWrap } from './styled.elements'; import { SearchBox } from '../SearchBox/SearchBox'; +import { StoreProvider } from '../StoreBuilder'; export interface RedocProps { store: AppStore; @@ -38,29 +39,31 @@ export class Redoc extends React.Component { const store = this.props.store; return ( - - - - - {(!options.disableSearch && ( - - )) || - null} - - - - - - - - - - + + + + + + {(!options.disableSearch && ( + + )) || + null} + + + + + + + + + + + ); } diff --git a/src/components/RedocStandalone.tsx b/src/components/RedocStandalone.tsx index 14611359..e92c8dff 100644 --- a/src/components/RedocStandalone.tsx +++ b/src/components/RedocStandalone.tsx @@ -5,7 +5,7 @@ import { RedocNormalizedOptions, RedocRawOptions } from '../services/RedocNormal import { ErrorBoundary } from './ErrorBoundary'; import { Loading } from './Loading/Loading'; import { Redoc } from './Redoc/Redoc'; -import { StoreProvider } from './StoreProvider'; +import { StoreBuilder } from './StoreBuilder'; export interface RedocStandaloneProps { spec?: object; @@ -44,7 +44,7 @@ export class RedocStandalone extends React.PureComponent { return ( - + {({ loading, store }) => !loading ? ( @@ -52,7 +52,7 @@ export class RedocStandalone extends React.PureComponent { ) } - + ); } diff --git a/src/components/StoreProvider.ts b/src/components/StoreBuilder.ts similarity index 79% rename from src/components/StoreProvider.ts rename to src/components/StoreBuilder.ts index 8579688f..4dd0d0b9 100644 --- a/src/components/StoreProvider.ts +++ b/src/components/StoreBuilder.ts @@ -1,11 +1,11 @@ import memoize from 'memoize-one'; -import { Component } from 'react'; +import { Component, createContext } from 'react'; import { AppStore } from '../services/'; import { RedocRawOptions } from '../services/RedocNormalizedOptions'; import { loadAndBundleSpec } from '../utils'; -export interface StoreProviderProps { +export interface StoreBuilderProps { specUrl?: string; spec?: object; store?: AppStore; @@ -17,7 +17,7 @@ export interface StoreProviderProps { children: (props: { loading: boolean; store?: AppStore }) => any; } -export interface StoreProviderState { +export interface StoreBuilderState { error?: Error; loading: boolean; resolvedSpec?: any; @@ -25,8 +25,11 @@ export interface StoreProviderState { prevSpecUrl?: string; } -export class StoreProvider extends Component { - static getDerivedStateFromProps(nextProps: StoreProviderProps, prevState: StoreProviderState) { +const { Provider, Consumer } = createContext(undefined); +export { Provider as StoreProvider, Consumer as StoreConsumer }; + +export class StoreBuilder extends Component { + static getDerivedStateFromProps(nextProps: StoreBuilderProps, prevState: StoreBuilderState) { if (nextProps.specUrl !== prevState.prevSpecUrl || nextProps.spec !== prevState.prevSpec) { return { loading: true, @@ -39,7 +42,7 @@ export class StoreProvider extends Component