Skip to content
This repository was archived by the owner on Aug 30, 2022. It is now read-only.

Commit 521a899

Browse files
committed
fix up hooks
1 parent 5c1c54a commit 521a899

15 files changed

+120
-87
lines changed

src/Provider.tsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { createContext, useEffect, useMemo, useState } from "react";
2-
import { ThirdwebSDK, SDKOptions } from "@thirdweb-dev/sdk";
2+
import { ThirdwebSDK, SDKOptions, IStorage } from "@thirdweb-dev/sdk";
33
import {
44
WagmiProvider,
55
ProviderProps as WagmiproviderProps,
@@ -87,6 +87,11 @@ export interface ThirdwebProviderProps<
8787
desiredChainId: TSupportedChain extends Chain
8888
? TSupportedChain["id"]
8989
: TSupportedChain | undefined;
90+
91+
/**
92+
* The storage interface to use with the sdk.
93+
*/
94+
storageInterface?: IStorage;
9095
}
9196

9297
const defaultChainRpc: ThirdwebProviderProps["chainRpc"] = {
@@ -246,15 +251,18 @@ interface SDKContext {
246251
const ThirdwebSDKContext = createContext<SDKContext>({});
247252

248253
const ThirdwebSDKProvider: React.FC<
249-
Pick<ThirdwebProviderProps, "desiredChainId" | "sdkOptions">
250-
> = ({ sdkOptions, desiredChainId, children }) => {
254+
Pick<
255+
ThirdwebProviderProps,
256+
"desiredChainId" | "sdkOptions" | "storageInterface"
257+
>
258+
> = ({ sdkOptions, desiredChainId, storageInterface, children }) => {
251259
const [sdk, setSDK] = useState<ThirdwebSDK | undefined>(undefined);
252260
const provider = useProvider();
253261
const signer = useSigner();
254262

255263
useEffect(() => {
256264
if (desiredChainId) {
257-
const _sdk = new ThirdwebSDK(provider, sdkOptions);
265+
const _sdk = new ThirdwebSDK(provider, sdkOptions, storageInterface);
258266
(_sdk as any)._chainId = desiredChainId;
259267
setSDK(_sdk);
260268
}

src/hooks/modules/useContract.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import { useSDK } from "../../Provider";
99
*/
1010
export function useContract<TContractType extends ContractType>(
1111
contractType: TContractType,
12-
contractAddress: string,
12+
contractAddress?: string,
1313
): ContractForContractType<TContractType> {
1414
const sdk = useSDK();
15-
if (!sdk) {
15+
if (!sdk || !contractAddress) {
1616
return undefined;
1717
}
1818
return sdk.getContract(contractAddress, contractType);

src/hooks/modules/useEdition.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Edition } from "@thirdweb-dev/sdk";
22
import { useContract } from "./useContract";
33

4-
export function useEdition(moduleAddress: string) {
5-
return useContract("edition", moduleAddress) as Edition;
4+
export function useEdition(moduleAddress?: string): Edition | undefined {
5+
return useContract("edition", moduleAddress);
66
}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { EditionDrop } from "@thirdweb-dev/sdk";
22
import { useContract } from "./useContract";
33

4-
export function useEditionDrop(moduleAddress: string) {
5-
return useContract("edition-drop", moduleAddress) as EditionDrop;
4+
export function useEditionDrop(
5+
moduleAddress?: string,
6+
): EditionDrop | undefined {
7+
return useContract("edition-drop", moduleAddress);
68
}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { Marketplace } from "@thirdweb-dev/sdk";
22
import { useContract } from "./useContract";
33

4-
export function useMarketplace(moduleAddress: string) {
5-
return useContract("marketplace", moduleAddress) as Marketplace;
4+
export function useMarketplace(
5+
moduleAddress?: string,
6+
): Marketplace | undefined {
7+
return useContract("marketplace", moduleAddress);
68
}
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { NFTCollection } from "@thirdweb-dev/sdk";
22
import { useContract } from "./useContract";
33

4-
export function useNFTCollection(moduleAddress: string) {
5-
return useContract("nft-collection", moduleAddress) as NFTCollection;
4+
export function useNFTCollection(
5+
moduleAddress?: string,
6+
): NFTCollection | undefined {
7+
return useContract("nft-collection", moduleAddress);
68
}

src/hooks/modules/useNFTDrop.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { NFTDrop } from "@thirdweb-dev/sdk";
22
import { useContract } from "./useContract";
33

4-
export function useNFTDrop(moduleAddress: string) {
5-
return useContract("nft-drop", moduleAddress) as NFTDrop;
4+
export function useNFTDrop(moduleAddress?: string): NFTDrop | undefined {
5+
return useContract("nft-drop", moduleAddress);
66
}

src/hooks/modules/usePack.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Pack } from "@thirdweb-dev/sdk";
22
import { useContract } from "./useContract";
33

4-
export function usePackModule(moduleAddress: string) {
5-
return useContract("pack", moduleAddress) as Pack;
4+
export function usePackModule(moduleAddress?: string): Pack | undefined {
5+
return useContract("pack", moduleAddress);
66
}

src/hooks/modules/useSplit.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Split } from "@thirdweb-dev/sdk";
22
import { useContract } from "./useContract";
33

4-
export function useSplitModule(moduleAddress: string) {
5-
return useContract("split", moduleAddress) as Split;
4+
export function useSplitModule(moduleAddress?: string): Split | undefined {
5+
return useContract("split", moduleAddress);
66
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Token } from "@thirdweb-dev/sdk";
22
import { useContract } from "./useContract";
33

4-
export function useToken(moduleAddress: string) {
5-
return useContract("token", moduleAddress) as Token;
4+
export function useToken(moduleAddress?: string): Token | undefined {
5+
return useContract("token", moduleAddress);
66
}

0 commit comments

Comments
 (0)