Skip to content
This repository was archived by the owner on Jun 7, 2024. It is now read-only.

Commit

Permalink
#101 #94 moved some files around
Browse files Browse the repository at this point in the history
  • Loading branch information
ShravanSunder committed Dec 23, 2021
1 parent 1827040 commit 8f22bb6
Show file tree
Hide file tree
Showing 12 changed files with 54 additions and 49 deletions.
Original file line number Diff line number Diff line change
@@ -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<GContractNames extends string> = {
[contractName in GContractNames]: { [chainId: number]: BaseContract };
Expand All @@ -16,7 +11,7 @@ export type TContractsByChainId<GContractNames extends string> = {
[chainId: number]: { [contractName in GContractNames]: BaseContract };
};

export class AppContractDefinitions<GContractNames extends string, GTypedContracts> {
export class AppContractsDefinitions<GContractNames extends string, GTypedContracts> {
protected _contractConnectors: TTypechainContractConnectorList<GContractNames>;
protected _contractsByName: TContractsByName<GContractNames>;
protected _contractsByChainId: TContractsByChainId<GContractNames>;
Expand Down Expand Up @@ -56,22 +51,28 @@ export class AppContractDefinitions<GContractNames extends string, GTypedContrac
this._contractsByChainId = this._contractsByChainId;
}

public constructor(
contractConnectors: Record<
GContractNames,
TTypechainContractConnector<GContractNames, BaseContract, ethers.utils.Interface>
>
) {
public constructor() {
this._contractsByName = {} as TContractsByName<GContractNames>;
this._contractsByChainId = {};
this._contractConnectors = contractConnectors;
this._contractConnectors = {} as TTypechainContractConnectorList<GContractNames>;
}

// public constructor(
// contractConnectors: Record<
// GContractNames,
// TTypechainContractConnector<GContractNames, BaseContract, ethers.utils.Interface>
// >
// ) {
// this._contractsByName = {} as TContractsByName<GContractNames>;
// this._contractsByChainId = {};
// this._contractConnectors = contractConnectors;
// }

public static connectToAllContractsReducer = async <GContractNames extends string, GTypedContracts>(
ethersAdaptor: TEthersAdaptor | undefined,
appContractConnectorList: TTypechainContractConnectorList<GContractNames>
): Promise<AppContractDefinitions<GContractNames, GTypedContracts>> => {
const result = new AppContractDefinitions<GContractNames, GTypedContracts>(appContractConnectorList);
): Promise<AppContractsDefinitions<GContractNames, GTypedContracts>> => {
const result = new AppContractsDefinitions<GContractNames, GTypedContracts>();

if (!ethersAdaptor) {
return result;
Expand All @@ -96,10 +97,10 @@ export class AppContractDefinitions<GContractNames extends string, GTypedContrac
};

public static connectToContractReducer = async <GContractNames extends string, GTypedContracts>(
definitions: AppContractDefinitions<GContractNames, GTypedContracts>,
definitions: AppContractsDefinitions<GContractNames, GTypedContracts>,
contractName: GContractNames,
ethersAdaptor: TEthersAdaptor
): Promise<AppContractDefinitions<GContractNames, GTypedContracts>> => {
): Promise<AppContractsDefinitions<GContractNames, GTypedContracts>> => {
const newDefinitions = definitions.clone();
await newDefinitions.connectToContract(contractName, ethersAdaptor);
return newDefinitions;
Expand Down Expand Up @@ -161,10 +162,11 @@ export class AppContractDefinitions<GContractNames extends string, GTypedContrac
// }
// };

public clone(): AppContractDefinitions<GContractNames, GTypedContracts> {
const result = new AppContractDefinitions<GContractNames, GTypedContracts>({
...this._contractConnectors,
});
public clone(): AppContractsDefinitions<GContractNames, GTypedContracts> {
const result = new AppContractsDefinitions<GContractNames, GTypedContracts>();
// const result = new AppContractDefinitions<GContractNames, GTypedContracts>({
// ...this._contractConnectors,
// });
result._contractsByName = { ...this._contractsByName };
result._contractsByChainId = { ...this._contractsByChainId };

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,38 +3,42 @@ 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';

export interface IContractsContextProps {
ethersContextKey?: string | undefined;
}

export interface IAppContractsDefinitions<GContractNames extends string> {
getmonkeys: GContractNames;
}

export type TContractDispatch<GContractNames extends string> = {
setAppContractConnectors: (appContractConnectors: TTypechainContractConnectorList<GContractNames>) => void;
};

export type TContractState<GContractNames extends string, GTypedContracts> = {
appcontractDefinitions: AppContractDefinitions<GContractNames, GTypedContracts>;
export type TContractState<GContractNames extends string> = {
appContractDefinitions: IAppContractsDefinitions<GContractNames>;
};

export const contractContextFactory = <GContractNames extends string, GTypedContracts>(): {
export const contractAppContextFactory = <GContractNames extends string, GTypedContracts>(): {
ContractsContext: FC<PropsWithChildren<IContractsContextProps>>;
ContractsDispatchContext: React.Context<TContractDispatch<GContractNames> | undefined>;
ContractsStateContext: React.Context<TContractState<GContractNames, GTypedContracts> | undefined>;
ContractsStateContext: React.Context<TContractState<GContractNames> | undefined>;
useContractsDispatchContext: () => TContractDispatch<GContractNames> | undefined;
useContractsStateContext: () => TContractState<GContractNames, GTypedContracts> | undefined;
useContractsStateContext: () => TContractState<GContractNames> | undefined;
} => {
const ContractsDispatchContext = createContext<TContractDispatch<GContractNames> | undefined>(
undefined as TContractDispatch<GContractNames> | undefined
);
const ContractsStateContext = createContext<TContractState<GContractNames, GTypedContracts> | undefined>(undefined);
const ContractsStateContext = createContext<TContractState<GContractNames> | undefined>(undefined);

const useContractsDispatchContext = (): TContractDispatch<GContractNames> | undefined => {
return useContext(ContractsDispatchContext) as TContractDispatch<GContractNames>;
};
const useContractsStateContext = (): TContractState<GContractNames, GTypedContracts> | undefined => {
const useContractsStateContext = (): TContractState<GContractNames> | undefined => {
return useContext(ContractsStateContext);
};

Expand All @@ -55,17 +59,18 @@ export const contractContextFactory = <GContractNames extends string, GTypedCont
});

const isMounted = useIsMounted();
const [state, setState] = useState<TContractState<GContractNames, GTypedContracts>>();
const [state, setState] = useState<TContractState<GContractNames>>();
const [dispatchValue, setDispatchValue] = useState<TContractDispatch<GContractNames>>();

const setAppContractConnectors = useCallback(
async (appContractConnectors: TTypechainContractConnectorList<GContractNames>) => {
const contractDefinitions = await AppContractDefinitions.connectToAllContractsReducer<
GContractNames,
GTypedContracts
>(ethersAdaptor, appContractConnectors);
const contractDefinitions: IAppContractsDefinitions<GContractNames> = { getmonkeys: 'DAI' as GContractNames };
// await AppContractsDefinitions.connectToAllContractsReducer<GContractNames, GTypedContracts>(
// ethersAdaptor,
// appContractConnectors
// );
if (isMounted()) {
setState({ appcontractDefinitions: contractDefinitions });
setState({ appContractDefinitions: contractDefinitions });
}
},
[ethersAdaptor, isMounted]
Expand Down
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand Down
8 changes: 4 additions & 4 deletions src/context/index.ts
Original file line number Diff line number Diff line change
@@ -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';
2 changes: 1 addition & 1 deletion src/models/ethersContextTypes.ts
Original file line number Diff line number Diff line change
@@ -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';

/**
Expand Down
2 changes: 1 addition & 1 deletion src/models/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';

0 comments on commit 8f22bb6

Please sign in to comment.