@abstract-foundation/agw-react
Version:
Abstract Global Wallet React Components
66 lines • 2.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.abstractWalletConnector = abstractWalletConnector;
const agw_client_1 = require("@abstract-foundation/agw-client");
const rainbow_kit_1 = require("@privy-io/cross-app-connect/rainbow-kit");
const viem_1 = require("viem");
const constants_js_1 = require("./constants.js");
function abstractWalletConnector(options = {}) {
const { rkDetails, customPaymasterHandler } = options;
return (params) => {
const chains = [...params.chains];
let defaultChain = params.chains[0];
const validChainIds = Object.keys(agw_client_1.validChains)
.map(Number)
.sort(function (a, b) {
return a - b;
});
for (const chainId of validChainIds) {
const chainIndex = chains.findIndex((chain) => chain.id === chainId);
const hasChain = chainIndex !== -1;
if (hasChain) {
const removedChains = chains.splice(chainIndex, 1);
defaultChain = removedChains[0] ?? defaultChain;
break;
}
}
const connector = (0, rainbow_kit_1.toPrivyWalletConnector)({
iconUrl: constants_js_1.ICON_URL,
id: constants_js_1.AGW_APP_ID,
name: 'Abstract',
})({
...params,
chains: [defaultChain, ...chains],
});
const getAbstractProvider = async (parameters) => {
const chainId = parameters?.chainId ?? defaultChain.id;
if (!agw_client_1.validChains[chainId]) {
throw new Error('Unsupported chain');
}
const chain = params.chains.find((c) => c.id === chainId) ?? agw_client_1.validChains[chainId];
const provider = await connector.getProvider({
chainId,
});
const transport = params.transports?.[chainId] ??
(0, viem_1.http)(undefined, {
batch: true,
});
return (0, agw_client_1.transformEIP1193Provider)({
provider,
chain,
transport,
isPrivyCrossApp: true,
customPaymasterHandler,
});
};
const abstractConnector = {
...connector,
...rkDetails,
getProvider: getAbstractProvider,
type: 'injected',
id: 'xyz.abs.privy',
};
return abstractConnector;
};
}
//# sourceMappingURL=abstractWalletConnector.js.map