@pushchain/ui-kit
Version:
## Overview
67 lines • 3.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.usePushChainClient = void 0;
const tslib_1 = require("tslib");
const core_1 = require("@pushchain/core");
const progress_hook_types_1 = require("@pushchain/core/src/lib/progress-hook/progress-hook.types");
const usePushWallet_1 = require("./usePushWallet");
const react_1 = require("react");
const usePushChainClient = (uid) => {
const { universalAccount, handleSignMessage, handleSignAndSendTransaction, handleSignTypedData, config, setProgress, } = (0, usePushWallet_1.usePushWalletContext)(uid);
const [pushChain, setPushChain] = (0, react_1.useState)(null);
const [error, setError] = (0, react_1.useState)(null);
// initialise Push Chain instance here and export that
(0, react_1.useEffect)(() => {
const initializePushChain = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
var _a, _b, _c;
if (!universalAccount) {
setPushChain(null);
return;
}
const CHAINS = core_1.PushChain.CONSTANTS.CHAIN;
const isSolana = [
CHAINS.SOLANA_DEVNET,
CHAINS.SOLANA_MAINNET,
CHAINS.SOLANA_TESTNET,
].includes(universalAccount.chain);
try {
const signerSkeleton = core_1.PushChain.utils.signer.construct(universalAccount, {
signMessage: handleSignMessage,
signAndSendTransaction: handleSignAndSendTransaction,
signTypedData: isSolana ? undefined : handleSignTypedData,
});
const universalSigner = yield core_1.PushChain.utils.signer.toUniversal(signerSkeleton);
const pushChainClient = yield core_1.PushChain.initialize(universalSigner, {
network: config.network,
progressHook: (progress) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
setProgress(progress);
if (progress.id === progress_hook_types_1.PROGRESS_HOOK.SEND_TX_99_01 ||
progress.id === progress_hook_types_1.PROGRESS_HOOK.SEND_TX_99_02) {
setTimeout(() => setProgress(null), 5000);
}
}),
rpcUrls: (_a = config.chainConfig) === null || _a === void 0 ? void 0 : _a.rpcUrls,
blockExplorers: (_b = config.chainConfig) === null || _b === void 0 ? void 0 : _b.blockExplorers,
printTraces: (_c = config.chainConfig) === null || _c === void 0 ? void 0 : _c.printTraces,
});
setPushChain(pushChainClient);
setError(null);
}
catch (err) {
console.log('Error occured when initialising Push chain', err);
setError(err instanceof Error
? err
: new Error('Failed to initialize PushChain'));
setPushChain(null);
}
});
initializePushChain();
}, [universalAccount, config]);
return {
pushChainClient: pushChain,
error,
isInitialized: !!pushChain && !error,
};
};
exports.usePushChainClient = usePushChainClient;
//# sourceMappingURL=usePushChainClient.js.map