diff --git a/src/models/AppContractDefinitions.ts b/src/context/contracts-app/AppContractDefinitions.ts similarity index 80% rename from src/models/AppContractDefinitions.ts rename to src/context/contracts-app/AppContractDefinitions.ts index 1c0f1c66..31b55f4d 100644 --- a/src/models/AppContractDefinitions.ts +++ b/src/context/contracts-app/AppContractDefinitions.ts @@ -1,13 +1,8 @@ -import { BaseContract, ethers } from 'ethers'; +import { BaseContract } from 'ethers'; import warning from 'tiny-warning'; import { ethersAdaptorAsRequired, isValidEthersAdaptor, connectToContractWithSigner } from '~~/functions'; -import { - TContractTypes, - TEthersAdaptor, - TTypechainContractConnector, - TTypechainContractConnectorList, -} from '~~/models'; +import { TContractTypes, TEthersAdaptor, TTypechainContractConnectorList } from '~~/models'; export type TContractsByName = { [contractName in GContractNames]: { [chainId: number]: BaseContract }; @@ -16,7 +11,7 @@ export type TContractsByChainId = { [chainId: number]: { [contractName in GContractNames]: BaseContract }; }; -export class AppContractDefinitions { +export class AppContractsDefinitions { protected _contractConnectors: TTypechainContractConnectorList; protected _contractsByName: TContractsByName; protected _contractsByChainId: TContractsByChainId; @@ -56,22 +51,28 @@ export class AppContractDefinitions - > - ) { + public constructor() { this._contractsByName = {} as TContractsByName; this._contractsByChainId = {}; - this._contractConnectors = contractConnectors; + this._contractConnectors = {} as TTypechainContractConnectorList; } + // public constructor( + // contractConnectors: Record< + // GContractNames, + // TTypechainContractConnector + // > + // ) { + // this._contractsByName = {} as TContractsByName; + // this._contractsByChainId = {}; + // this._contractConnectors = contractConnectors; + // } + public static connectToAllContractsReducer = async ( ethersAdaptor: TEthersAdaptor | undefined, appContractConnectorList: TTypechainContractConnectorList - ): Promise> => { - const result = new AppContractDefinitions(appContractConnectorList); + ): Promise> => { + const result = new AppContractsDefinitions(); if (!ethersAdaptor) { return result; @@ -96,10 +97,10 @@ export class AppContractDefinitions( - definitions: AppContractDefinitions, + definitions: AppContractsDefinitions, contractName: GContractNames, ethersAdaptor: TEthersAdaptor - ): Promise> => { + ): Promise> => { const newDefinitions = definitions.clone(); await newDefinitions.connectToContract(contractName, ethersAdaptor); return newDefinitions; @@ -161,10 +162,11 @@ export class AppContractDefinitions { - const result = new AppContractDefinitions({ - ...this._contractConnectors, - }); + public clone(): AppContractsDefinitions { + const result = new AppContractsDefinitions(); + // const result = new AppContractDefinitions({ + // ...this._contractConnectors, + // }); result._contractsByName = { ...this._contractsByName }; result._contractsByChainId = { ...this._contractsByChainId }; diff --git a/src/context/contractContextFactory.tsx b/src/context/contracts-app/contractContextFactory.tsx similarity index 74% rename from src/context/contractContextFactory.tsx rename to src/context/contracts-app/contractContextFactory.tsx index 68bf6fd7..dc8e34e3 100644 --- a/src/context/contractContextFactory.tsx +++ b/src/context/contracts-app/contractContextFactory.tsx @@ -3,7 +3,7 @@ import { useIsMounted } from 'usehooks-ts'; import { useEthersContext } from '~~/context'; import { checkEthersOverride } from '~~/functions'; -import { defaultHookOptions, TEthersAdaptor, TTypechainContractConnectorList, AppContractDefinitions } from '~~/models'; +import { defaultHookOptions, TEthersAdaptor, TTypechainContractConnectorList } from '~~/models'; // import { AppContractDefinitions } from '~~/models/AppContractDefinitions'; @@ -11,30 +11,34 @@ export interface IContractsContextProps { ethersContextKey?: string | undefined; } +export interface IAppContractsDefinitions { + getmonkeys: GContractNames; +} + export type TContractDispatch = { setAppContractConnectors: (appContractConnectors: TTypechainContractConnectorList) => void; }; -export type TContractState = { - appcontractDefinitions: AppContractDefinitions; +export type TContractState = { + appContractDefinitions: IAppContractsDefinitions; }; -export const contractContextFactory = (): { +export const contractAppContextFactory = (): { ContractsContext: FC>; ContractsDispatchContext: React.Context | undefined>; - ContractsStateContext: React.Context | undefined>; + ContractsStateContext: React.Context | undefined>; useContractsDispatchContext: () => TContractDispatch | undefined; - useContractsStateContext: () => TContractState | undefined; + useContractsStateContext: () => TContractState | undefined; } => { const ContractsDispatchContext = createContext | undefined>( undefined as TContractDispatch | undefined ); - const ContractsStateContext = createContext | undefined>(undefined); + const ContractsStateContext = createContext | undefined>(undefined); const useContractsDispatchContext = (): TContractDispatch | undefined => { return useContext(ContractsDispatchContext) as TContractDispatch; }; - const useContractsStateContext = (): TContractState | undefined => { + const useContractsStateContext = (): TContractState | undefined => { return useContext(ContractsStateContext); }; @@ -55,17 +59,18 @@ export const contractContextFactory = >(); + const [state, setState] = useState>(); const [dispatchValue, setDispatchValue] = useState>(); const setAppContractConnectors = useCallback( async (appContractConnectors: TTypechainContractConnectorList) => { - const contractDefinitions = await AppContractDefinitions.connectToAllContractsReducer< - GContractNames, - GTypedContracts - >(ethersAdaptor, appContractConnectors); + const contractDefinitions: IAppContractsDefinitions = { getmonkeys: 'DAI' as GContractNames }; + // await AppContractsDefinitions.connectToAllContractsReducer( + // ethersAdaptor, + // appContractConnectors + // ); if (isMounted()) { - setState({ appcontractDefinitions: contractDefinitions }); + setState({ appContractDefinitions: contractDefinitions }); } }, [ethersAdaptor, isMounted] diff --git a/src/context/contracts-app/contractsReducer.ts b/src/context/contracts-app/contractsReducer.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/context/BlockNumberContext.tsx b/src/context/ethers-app/BlockNumberContext.tsx similarity index 100% rename from src/context/BlockNumberContext.tsx rename to src/context/ethers-app/BlockNumberContext.tsx diff --git a/src/context/EthersAppContext.tsx b/src/context/ethers-app/EthersAppContext.tsx similarity index 93% rename from src/context/EthersAppContext.tsx rename to src/context/ethers-app/EthersAppContext.tsx index dda2b294..7c156c24 100644 --- a/src/context/EthersAppContext.tsx +++ b/src/context/ethers-app/EthersAppContext.tsx @@ -5,13 +5,12 @@ import { cloneElement, FC, useCallback } from 'react'; import invariant from 'tiny-invariant'; import warning from 'tiny-warning'; -import { IEthersContext } from '../models/ethersContextTypes'; - import { NoEthereumProviderFoundError } from '~~/context'; -import { BlockNumberContext } from '~~/context/BlockNumberContext'; -import { EthersModalConnector, TEthersModalConnector } from '~~/context/connectors/EthersModalConnector'; +import { BlockNumberContext } from '~~/context/ethers-app/BlockNumberContext'; +import { EthersModalConnector, TEthersModalConnector } from '~~/context/ethers-app/connectors/EthersModalConnector'; import { isEthersProvider } from '~~/functions/ethersHelpers'; import { TEthersProvider } from '~~/models'; +import { IEthersContext } from '~~/models/ethersContextTypes'; /** * #### Summary diff --git a/src/context/connectors/EthersModalConnector.ts b/src/context/ethers-app/connectors/EthersModalConnector.ts similarity index 96% rename from src/context/connectors/EthersModalConnector.ts rename to src/context/ethers-app/connectors/EthersModalConnector.ts index e676d650..20d9d7a4 100644 --- a/src/context/connectors/EthersModalConnector.ts +++ b/src/context/ethers-app/connectors/EthersModalConnector.ts @@ -4,10 +4,9 @@ import { ConnectorUpdate } from '@web3-react/types'; import { BigNumber, Signer, utils } from 'ethers'; import Core, { ICoreOptions, ThemeColors } from 'web3modal'; -import { isEthersProvider } from '../../functions/ethersHelpers'; - import { UserClosedModalError, CouldNotActivateError } from './connectorErrors'; +import { isEthersProvider } from '~~/functions/ethersHelpers'; import { TEthersProvider } from '~~/models'; import { const_web3DialogClosedByUser } from '~~/models/constants/common'; diff --git a/src/context/connectors/StaticJsonRpcProviderConnector.ts b/src/context/ethers-app/connectors/StaticJsonRpcProviderConnector.ts similarity index 100% rename from src/context/connectors/StaticJsonRpcProviderConnector.ts rename to src/context/ethers-app/connectors/StaticJsonRpcProviderConnector.ts diff --git a/src/context/connectors/connectorErrors.ts b/src/context/ethers-app/connectors/connectorErrors.ts similarity index 100% rename from src/context/connectors/connectorErrors.ts rename to src/context/ethers-app/connectors/connectorErrors.ts diff --git a/src/context/connectors/index.ts b/src/context/ethers-app/connectors/index.ts similarity index 100% rename from src/context/connectors/index.ts rename to src/context/ethers-app/connectors/index.ts diff --git a/src/context/index.ts b/src/context/index.ts index ae096f92..32ea2507 100644 --- a/src/context/index.ts +++ b/src/context/index.ts @@ -1,4 +1,4 @@ -export * from './BlockNumberContext'; -export * from './EthersAppContext'; -export * from './connectors'; -export * from './contractContextFactory'; +export * from './ethers-app/BlockNumberContext'; +export * from './ethers-app/EthersAppContext'; +export * from './ethers-app/connectors'; +export * from './contracts-app/contractContextFactory'; diff --git a/src/models/ethersContextTypes.ts b/src/models/ethersContextTypes.ts index bd782fdc..d4f5c0fe 100644 --- a/src/models/ethersContextTypes.ts +++ b/src/models/ethersContextTypes.ts @@ -1,7 +1,7 @@ import { Web3ReactContextInterface } from '@web3-react/core/dist/types'; import { Signer } from 'ethers'; -import { TEthersModalConnector } from '~~/context/connectors/EthersModalConnector'; +import { TEthersModalConnector } from '~~/context/ethers-app/connectors/EthersModalConnector'; import { TEthersProvider, TEthersSigner } from '~~/models'; /** diff --git a/src/models/index.ts b/src/models/index.ts index 1005cf58..d006aefa 100644 --- a/src/models/index.ts +++ b/src/models/index.ts @@ -4,4 +4,4 @@ export * from './providerTypes'; export * from './hookOptions'; export * from './ethersContextTypes'; export * from './typechainContractTypes'; -export * from './AppContractDefinitions'; +export * from '../context/contracts-app/AppContractDefinitions';