import { createContext, useContext } from 'react'

import { type CreationStoreValue, useDedicatedStore, useServerlessStoreV2 } from './helpers'

export const CreationStoreContext = createContext<CreationStoreValue>({})

/**
 * TODO: use context selector to optimize the performance
 */
export const CreationStoreProvider: React.FC<React.PropsWithChildren<unknown>> = ({ children }) => {
  const serverless = useServerlessStoreV2()
  const dedicated = useDedicatedStore()
  const combinedStore = {
    serverless,
    dedicated
  }

  return <CreationStoreContext.Provider value={combinedStore}>{children}</CreationStoreContext.Provider>
}

export const useCreationStore = () => useContext(CreationStoreContext)
