From fca814c1490ed2ae64df17c06ed4072ac8ade711 Mon Sep 17 00:00:00 2001 From: abefernan <44572727+abefernan@users.noreply.github.com> Date: Wed, 19 Jun 2024 12:35:37 +0200 Subject: [PATCH] Adapt to new schema --- components/dataViews/MultisigView/index.tsx | 8 ++++++++ components/forms/CreateMultisigForm/index.tsx | 8 ++++++++ lib/multisigHelpers.ts | 2 ++ pages/api/chain/[chainId]/multisig/index.ts | 2 +- pages/api/transaction/index.ts | 10 ++++++++-- 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/components/dataViews/MultisigView/index.tsx b/components/dataViews/MultisigView/index.tsx index 1c12641..7b31297 100644 --- a/components/dataViews/MultisigView/index.tsx +++ b/components/dataViews/MultisigView/index.tsx @@ -43,11 +43,19 @@ export default function MultisigView() { "Pubkey on chain is not of type MultisigThreshold", ); + await window.keplr.enable(chain.chainId); + window.keplr.defaultOptions = { + sign: { preferNoSetFee: true, preferNoSetMemo: true, disableBalanceCheck: true }, + }; + + const { bech32Address: address } = await window.keplr.getKey(chain.chainId); + await createMultisigFromCompressedSecp256k1Pubkeys( newHostedMultisig.accountOnChain.pubkey.value.pubkeys.map((p) => p.value), Number(newHostedMultisig.accountOnChain.pubkey.value.threshold), chain.addressPrefix, chain.chainId, + address, ); router.reload(); diff --git a/components/forms/CreateMultisigForm/index.tsx b/components/forms/CreateMultisigForm/index.tsx index 5a91588..475e39d 100644 --- a/components/forms/CreateMultisigForm/index.tsx +++ b/components/forms/CreateMultisigForm/index.tsx @@ -91,11 +91,19 @@ export default function CreateMultisigForm() { ); try { + await window.keplr.enable(chain.chainId); + window.keplr.defaultOptions = { + sign: { preferNoSetFee: true, preferNoSetMemo: true, disableBalanceCheck: true }, + }; + + const { bech32Address: address } = await window.keplr.getKey(chain.chainId); + const multisigAddress = await createMultisigFromCompressedSecp256k1Pubkeys( pubkeys, Number(threshold), chain.addressPrefix, chain.chainId, + address, ); router.push(`/${chain.registryName}/${multisigAddress}`); diff --git a/lib/multisigHelpers.ts b/lib/multisigHelpers.ts index 58afc8e..8314161 100644 --- a/lib/multisigHelpers.ts +++ b/lib/multisigHelpers.ts @@ -27,6 +27,7 @@ export const createMultisigFromCompressedSecp256k1Pubkeys = async ( threshold: number, addressPrefix: string, chainId: string, + creator: string, ): Promise => { const pubkeys = compressedPubkeys.map((compressedPubkey) => { return { @@ -41,6 +42,7 @@ export const createMultisigFromCompressedSecp256k1Pubkeys = async ( const multisig = { address: multisigAddress, pubkeyJSON: JSON.stringify(multisigPubkey), + creator, chainId, }; diff --git a/pages/api/chain/[chainId]/multisig/index.ts b/pages/api/chain/[chainId]/multisig/index.ts index f56654c..a18f63f 100644 --- a/pages/api/chain/[chainId]/multisig/index.ts +++ b/pages/api/chain/[chainId]/multisig/index.ts @@ -1,5 +1,5 @@ +import { createMultisig } from "@/lib/graphqlHelpers"; import type { NextApiRequest, NextApiResponse } from "next"; -import { createMultisig } from "../../../../../lib/graphqlHelpers"; export default async function multisigApi(req: NextApiRequest, res: NextApiResponse) { switch (req.method) { diff --git a/pages/api/transaction/index.ts b/pages/api/transaction/index.ts index e0294cf..4501082 100644 --- a/pages/api/transaction/index.ts +++ b/pages/api/transaction/index.ts @@ -1,5 +1,5 @@ import type { NextApiRequest, NextApiResponse } from "next"; -import { createTransaction } from "../../../lib/graphqlHelpers"; +import { createTransaction, getMultisigId } from "../../../lib/graphqlHelpers"; export default async function transactionApi(req: NextApiRequest, res: NextApiResponse) { switch (req.method) { @@ -7,7 +7,13 @@ export default async function transactionApi(req: NextApiRequest, res: NextApiRe try { const data = req.body; console.log("Function `createTransaction` invoked", data); - const createTransactionResult = await createTransaction(data.dataJSON); + + const multisigId = await getMultisigId(data.creator, data.chainId); + if (!multisigId) { + throw new Error("Multisig not found"); + } + + const createTransactionResult = await createTransaction(data.dataJSON, multisigId); console.log("createTransactionResult:", createTransactionResult); res .status(200)