From 99dad12b582f3aaa43d4a77bc7e5b7f30269f3f1 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 17:56:34 +0100 Subject: [PATCH] core-api: get or create all bridged contexts Co-authored-by: Juan Lulkin Signed-off-by: Patrik Oldsberg --- packages/core-api/src/apis/system/ApiProvider.tsx | 11 +++++++---- packages/core-api/src/app/AppContext.tsx | 11 +++++++---- packages/core-api/src/routing/hooks.tsx | 11 +++++++---- 3 files changed, 21 insertions(+), 12 deletions(-) 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,