Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion e2e/zombienet/src/utils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ export const Wrapper = ({ children, deployments = [] }: Props) => (
deployments={deployments}
defaultCaller={ALICE}
signer={mockSigner}
connectedAccount={{ address: ALICE }}>
connectedAccount={{ address: ALICE }}
appName='Typink Test App'>
{children}
</TypinkProvider>
);
Expand Down
1 change: 1 addition & 0 deletions examples/demo-subconnect/src/main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ function TypinApp() {

return (
<TypinkProvider
appName='Demo Typink + SubConnect App'
deployments={deployments}
defaultCaller={DEFAULT_CALLER}
supportedNetworks={SUPPORTED_NETWORK}
Expand Down
1 change: 1 addition & 0 deletions examples/demo/src/main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ function Root() {
return (
<ChakraProvider theme={theme}>
<TypinkProvider
appName='Demo Typink App'
deployments={deployments}
defaultCaller={DEFAULT_CALLER}
supportedNetworks={SUPPORTED_NETWORK}
Expand Down
7 changes: 5 additions & 2 deletions packages/typink/src/providers/TypinkProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ export interface TypinkProviderProps extends ClientProviderProps, WalletSetupPro
defaultCaller: SubstrateAddress;
}

function TypinkProviderInner({ children, deployments, defaultCaller }: TypinkProviderProps) {
export type TypinkProviderInnerProps = Omit<TypinkProviderProps, 'appName'>

function TypinkProviderInner({ children, deployments, defaultCaller }: TypinkProviderInnerProps) {
const clientContext = useClient();
const walletSetupContext = useWalletSetup();
const walletContext = useWallet();
Expand Down Expand Up @@ -66,9 +68,10 @@ export function TypinkProvider({
signer,
connectedAccount,
wallets,
appName,
}: TypinkProviderProps) {
return (
<WalletSetupProvider signer={signer} connectedAccount={connectedAccount} wallets={wallets}>
<WalletSetupProvider signer={signer} connectedAccount={connectedAccount} wallets={wallets} appName={appName}>
<ClientProvider
defaultNetworkId={defaultNetworkId}
cacheMetadata={cacheMetadata}
Expand Down
11 changes: 8 additions & 3 deletions packages/typink/src/providers/WalletSetupProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import { WalletProvider, WalletProviderProps } from './WalletProvider.js';

// Split these into 2 separate context (one for setup & one for signer & connected account)
export interface WalletSetupContextProps {
appName: string;

// for setting up wallets
connectWallet: (id: string) => void;
disconnect: () => void;
Expand All @@ -21,6 +23,7 @@ export interface WalletSetupContextProps {
}

export const WalletSetupContext = createContext<WalletSetupContextProps>({
appName: 'Typink Dapp',
accounts: [],
connectWallet: noop,
disconnect: noop,
Expand All @@ -33,6 +36,7 @@ export const useWalletSetup = () => {
};

export interface WalletSetupProviderProps extends WalletProviderProps {
appName: string;
wallets?: Wallet[];
}

Expand All @@ -52,6 +56,7 @@ export function WalletSetupProvider({
signer: initialSigner,
connectedAccount: initialConnectedAccount,
wallets: initialWallets,
appName
}: WalletSetupProviderProps) {
const wallets = useMemo(() => initialWallets || DEFAULT_WALLETS, useDeepDeps([initialWallets]));
const [accounts, setAccounts] = useState<InjectedAccount[]>([]);
Expand Down Expand Up @@ -98,8 +103,7 @@ export function WalletSetupProvider({

assert(injectedProvider?.enable, `Invalid Wallet: ${targetWallet.id}`);

// TODO customize dapp name?
const injected = await injectedProvider.enable('Sample Dapp');
const injected = await injectedProvider.enable(appName);
const initialConnectedAccounts = await injected.accounts.get();

// TODO keep track of wallet decision?
Expand All @@ -126,7 +130,7 @@ export function WalletSetupProvider({
})();

return () => unsub && unsub();
}, [connectedWalletId]);
}, [connectedWalletId, appName]);

const connectWallet = async (walletId: string) => {
setConnectedWalletId(walletId);
Expand All @@ -149,6 +153,7 @@ export function WalletSetupProvider({
connectedWallet,
setConnectedAccount,
wallets,
appName
}}>
<WalletProvider signer={signer} connectedAccount={connectedAccount}>
{children}
Expand Down
Loading