diff --git a/.changeset/three-numbers-pretend.md b/.changeset/three-numbers-pretend.md new file mode 100644 index 00000000..37984c97 --- /dev/null +++ b/.changeset/three-numbers-pretend.md @@ -0,0 +1,7 @@ +--- +"@ledgerhq/wallet-api-client-react": minor +--- + +feat: add client prop to the react provider + +Allows to pass a user created client instead of creating it in the provider diff --git a/packages/client-react/src/components/WalletAPIProvider/index.tsx b/packages/client-react/src/components/WalletAPIProvider/index.tsx index 92b22a04..921aa4eb 100644 --- a/packages/client-react/src/components/WalletAPIProvider/index.tsx +++ b/packages/client-react/src/components/WalletAPIProvider/index.tsx @@ -15,6 +15,7 @@ export function WalletAPIProvider({ logger, getCustomModule, eventHandlers, + client: providedClient, }: WalletAPIProviderProps) { const [state, setState] = useState( initialContextValue.state, @@ -23,12 +24,9 @@ export function WalletAPIProvider({ const client = useRef(); if (client.current === undefined) { - client.current = new WalletAPIClient( - transport, - logger, - getCustomModule, - eventHandlers, - ); + client.current = providedClient + ? providedClient + : new WalletAPIClient(transport, logger, getCustomModule, eventHandlers); } useEffect(() => { diff --git a/packages/client-react/src/components/WalletAPIProvider/types.ts b/packages/client-react/src/components/WalletAPIProvider/types.ts index dcd25cb5..264fc40f 100644 --- a/packages/client-react/src/components/WalletAPIProvider/types.ts +++ b/packages/client-react/src/components/WalletAPIProvider/types.ts @@ -17,12 +17,22 @@ export type Loadable = { value: T | null; }; -export type WalletAPIProviderProps = PropsWithChildren<{ - transport: Transport; - logger?: Logger; - getCustomModule?: AnyCustomGetter; - eventHandlers?: EventHandlers; -}>; +export type WalletAPIProviderProps = PropsWithChildren< + | { + transport: Transport; + logger?: Logger; + getCustomModule?: AnyCustomGetter; + eventHandlers?: EventHandlers; + client?: never; + } + | { + transport?: never; + logger?: never; + getCustomModule?: never; + eventHandlers?: never; + client: WalletAPIClient; + } +>; export type WalletAPIProviderContextState = { accounts: Loadable;