@puzzlehq/sdk
Version:
Your portal to privacy
44 lines (39 loc) • 1.23 kB
text/typescript
import {
connect as _connect,
ConnectRequestParams,
ConnectResponse,
shortenAddress
} from '@puzzlehq/sdk-core';
import { useAsyncAction } from './utils/_useAsyncAction.js';
import { useWalletStore } from '../store.js';
import { useIsConnected } from '../provider/connectionProvider.js';
export function useConnect(request: ConnectRequestParams) {
const { isConnected, setIsConnected } = useIsConnected();
const { data, error, loading, setData, setError, setLoading } =
useAsyncAction<ConnectResponse>();
const [setAccount] = useWalletStore(
(state) => [state.setAccount],
);
async function connect() {
try {
setLoading(true);
setError(undefined);
console.log('connect request', request);
const response = await _connect(request);
setData(response);
setAccount({
address: response.connection.address,
network: response.connection.network,
shortenedAddress: shortenAddress(response.connection.address),
});
setIsConnected(true);
return response;
} catch (err) {
setError(err);
throw err;
} finally {
setLoading(false);
}
}
return { data, error, loading, isConnected, connect };
}