UNPKG

@abstract-foundation/agw-react

Version:
65 lines 2.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSessionMutationOptions = createSessionMutationOptions; const constants_1 = require("@abstract-foundation/agw-client/constants"); const sessions_1 = require("@abstract-foundation/agw-client/sessions"); const core_1 = require("@wagmi/core"); const viem_1 = require("viem"); function createSessionMutationOptions(config) { return { mutationFn: async (variables) => { const { session, account: account_, chainId, connector, ...rest } = variables; let client; if (account_ && typeof account_ === 'object' && account_.type === 'local') client = config.getClient({ chainId }); else client = await (0, core_1.getConnectorClient)(config, { account: account_ ?? undefined, chainId, connector, }); const account = client.account; if (typeof account === 'undefined') throw new viem_1.BaseError('Account not found'); const validationHooks = await (0, core_1.readContract)(config, { address: account.address, abi: constants_1.AGWAccountAbi, functionName: 'listHooks', args: [true], }); const hasSessionModule = validationHooks.some((hook) => hook === constants_1.sessionKeyValidatorAddress); let transactionHash = undefined; if (!hasSessionModule) { const encodedSession = (0, sessions_1.encodeSession)(session); transactionHash = await (0, core_1.writeContract)(config, { address: account.address, abi: constants_1.AGWAccountAbi, functionName: 'addModule', args: [(0, viem_1.concatHex)([constants_1.sessionKeyValidatorAddress, encodedSession])], account: account_, chainId, connector, ...rest, }); } else { transactionHash = await (0, core_1.writeContract)(config, { address: constants_1.sessionKeyValidatorAddress, abi: sessions_1.SessionKeyValidatorAbi, functionName: 'createSession', args: [session], account: account_, chainId, connector, ...rest, }); } return { transactionHash, session, }; }, mutationKey: ['createSession'], }; } //# sourceMappingURL=createSession.js.map