1import * as React from 'react'; 2 3import { 4 EXUpdatesConfig, 5 updatesConfig as initialUpdatesConfig, 6} from '../native-modules/DevLauncherInternal'; 7 8const defaultUpdatesConfig: EXUpdatesConfig = { 9 runtimeVersion: '', 10 sdkVersion: '', 11 appId: '', 12 usesEASUpdates: false, 13 projectUrl: '', 14}; 15 16const Context = React.createContext<EXUpdatesConfig>(defaultUpdatesConfig); 17export const useUpdatesConfig = () => React.useContext(Context); 18 19type UpdatesConfigProviderProps = { 20 children: React.ReactNode; 21 initialUpdatesConfig?: EXUpdatesConfig; 22}; 23 24type SetUpdatesConfigContext = (config: Partial<EXUpdatesConfig>) => void; 25const SetConfigContext = React.createContext<SetUpdatesConfigContext>(() => {}); 26 27export const useSetUpdatesConfig = () => React.useContext(SetConfigContext); 28 29export function UpdatesConfigProvider({ children }: UpdatesConfigProviderProps) { 30 const [updatesConfig, setUpdatesConfig] = React.useState(initialUpdatesConfig); 31 32 function onSetUpdatesConfig(updates: Partial<EXUpdatesConfig>) { 33 setUpdatesConfig((previousConfig) => { 34 return { 35 ...previousConfig, 36 ...updates, 37 }; 38 }); 39 } 40 41 return ( 42 <SetConfigContext.Provider value={onSetUpdatesConfig}> 43 <Context.Provider value={updatesConfig}>{children}</Context.Provider> 44 </SetConfigContext.Provider> 45 ); 46} 47