diff --git a/packages/core-api/src/apis/system/ApiProvider.tsx b/packages/core-api/src/apis/system/ApiProvider.tsx index 6740746ce2..a99b849104 100644 --- a/packages/core-api/src/apis/system/ApiProvider.tsx +++ b/packages/core-api/src/apis/system/ApiProvider.tsx @@ -24,7 +24,10 @@ import React, { import PropTypes from 'prop-types'; import { ApiRef, ApiHolder, TypesToApiRefs } from './types'; import { ApiAggregator } from './ApiAggregator'; -import { getGlobalSingleton, setGlobalSingleton } from '../../lib/globalObject'; +import { + getGlobalSingleton, + getOrCreateGlobalSingleton, +} from '../../lib/globalObject'; import { VersionedValue, createVersionedValueMap, @@ -42,9 +45,9 @@ type ApiProviderProps = { }; type ApiContextType = VersionedValue<{ 1: ApiHolder }> | undefined; -const ApiContext = createContext(undefined); - -setGlobalSingleton('api-context', ApiContext); +const ApiContext = getOrCreateGlobalSingleton('api-context', () => + createContext(undefined), +); export const ApiProvider = ({ apis, diff --git a/packages/core-api/src/app/AppContext.tsx b/packages/core-api/src/app/AppContext.tsx index 7b73d71c6b..cfe439fca5 100644 --- a/packages/core-api/src/app/AppContext.tsx +++ b/packages/core-api/src/app/AppContext.tsx @@ -24,13 +24,16 @@ import { VersionedValue, createVersionedValueMap, } from '../lib/versionedValues'; -import { getGlobalSingleton, setGlobalSingleton } from '../lib/globalObject'; +import { + getGlobalSingleton, + getOrCreateGlobalSingleton, +} from '../lib/globalObject'; import { AppContext as AppContextV1 } from './types'; type AppContextType = VersionedValue<{ 1: AppContextV1 }> | undefined; -const AppContext = createContext(undefined); - -setGlobalSingleton('app-context', AppContext); +const AppContext = getOrCreateGlobalSingleton('app-context', () => + createContext(undefined), +); type Props = { appContext: AppContextV1; diff --git a/packages/core-api/src/routing/hooks.tsx b/packages/core-api/src/routing/hooks.tsx index b8690d867a..4c4a7a6a05 100644 --- a/packages/core-api/src/routing/hooks.tsx +++ b/packages/core-api/src/routing/hooks.tsx @@ -35,12 +35,15 @@ import { VersionedValue, createVersionedValueMap, } from '../lib/versionedValues'; -import { setGlobalSingleton, getGlobalSingleton } from '../lib/globalObject'; +import { + getGlobalSingleton, + getOrCreateGlobalSingleton, +} from '../lib/globalObject'; type RoutingContextType = VersionedValue<{ 1: RouteResolver }> | undefined; -const RoutingContext = createContext(undefined); - -setGlobalSingleton('routing-context', RoutingContext); +const RoutingContext = getOrCreateGlobalSingleton('routing-context', () => + createContext(undefined), +); export function useRouteRef( routeRef: ExternalRouteRef,