import Explorer from "Explorer/Explorer"; import { Subscription } from "Contracts/DataModels"; import React from "react"; import { userContext } from "UserContext"; import { CopyJobMigrationType } from "../Enums/CopyJobEnums"; import { CopyJobContextProviderType, CopyJobContextState, CopyJobFlowType } from "../Types/CopyJobTypes"; export const CopyJobContext = React.createContext(null); export const useCopyJobContext = (): CopyJobContextProviderType => { const context = React.useContext(CopyJobContext); if (!context) { throw new Error("useCopyJobContext must be used within a CopyJobContextProvider"); } return context; }; interface CopyJobContextProviderProps { children: React.ReactNode; explorer: Explorer; } const getInitialCopyJobState = (): CopyJobContextState => { return { jobName: "", migrationType: CopyJobMigrationType.Offline, source: { subscription: { subscriptionId: userContext.subscriptionId || "", } as Subscription, account: userContext.databaseAccount || null, databaseId: "", containerId: "", }, target: { subscriptionId: userContext.subscriptionId || "", account: userContext.databaseAccount || null, databaseId: "", containerId: "", }, sourceReadAccessFromTarget: false, }; }; const CopyJobContextProvider: React.FC = (props) => { const [copyJobState, setCopyJobState] = React.useState(getInitialCopyJobState()); const [flow, setFlow] = React.useState(null); const [contextError, setContextError] = React.useState(null); const resetCopyJobState = () => { setCopyJobState(getInitialCopyJobState()); }; const contextValue: CopyJobContextProviderType = { contextError, setContextError, copyJobState, setCopyJobState, flow, setFlow, resetCopyJobState, explorer: props.explorer, }; return {props.children}; }; export default CopyJobContextProvider;