diff --git a/packages/get-starknet/webpack.config.local.js b/packages/get-starknet/webpack.config.local.js index ce25a4b7..9c847444 100644 --- a/packages/get-starknet/webpack.config.local.js +++ b/packages/get-starknet/webpack.config.local.js @@ -1,7 +1,11 @@ // eslint-disable-next-line @typescript-eslint/no-var-requires +const { merge } = require('webpack-merge'); +// eslint-disable-next-line @typescript-eslint/no-var-requires +const common = require('./webpack.common.js'); +// eslint-disable-next-line @typescript-eslint/no-var-requires const path = require('path'); -module.exports = { +module.exports = (env) => merge(common, { mode: 'development', output: { publicPath: process.env.GET_STARKNET_PUBLIC_PATH ?? 'http://localhost:8082/', // Adjust the development publicPath as needed @@ -11,4 +15,4 @@ module.exports = { compress: true, port: 8082, } -}; +}); diff --git a/packages/starknet-snap/snap.manifest.json b/packages/starknet-snap/snap.manifest.json index 170837ee..13827448 100644 --- a/packages/starknet-snap/snap.manifest.json +++ b/packages/starknet-snap/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/ConsenSys/starknet-snap.git" }, "source": { - "shasum": "kl5iM2GRyXtFYwezb2vvrh2iTNC4Gw4K1I3PVOttXJ4=", + "shasum": "w/9IComQVArE5jU1RHIW8Y5CnN//nBoHKBQDFRhM8yI=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/starknet-snap/src/declareContract.ts b/packages/starknet-snap/src/declareContract.ts index eb17dbaf..c935e899 100644 --- a/packages/starknet-snap/src/declareContract.ts +++ b/packages/starknet-snap/src/declareContract.ts @@ -1,7 +1,7 @@ import { toJson } from './utils/serializer'; import { ApiParams, DeclareContractRequestParams } from './types/snapApi'; -import { getNetworkFromChainId, getDeclareSnapTxt } from './utils/snapUtils'; -import { getKeysFromAddress, declareContract as declareContractUtil } from './utils/starknetUtils'; +import { getNetworkFromChainId, getDeclareSnapTxt, showUpgradeRequestModal } from './utils/snapUtils'; +import { getKeysFromAddress, declareContract as declareContractUtil, isUpgradeRequired } from './utils/starknetUtils'; import { DialogType } from '@metamask/rpc-methods'; import { heading, panel } from '@metamask/snaps-sdk'; import { logger } from './utils/logger'; @@ -17,6 +17,11 @@ export async function declareContract(params: ApiParams) { const network = getNetworkFromChainId(state, requestParamsObj.chainId); const { privateKey } = await getKeysFromAddress(keyDeriver, network, state, senderAddress); + if (await isUpgradeRequired(network, senderAddress)) { + await showUpgradeRequestModal(wallet); + throw new Error('Upgrade required'); + } + const snapComponents = getDeclareSnapTxt( senderAddress, network, diff --git a/packages/starknet-snap/src/executeTxn.ts b/packages/starknet-snap/src/executeTxn.ts index 6b52c5a6..8a4da29b 100644 --- a/packages/starknet-snap/src/executeTxn.ts +++ b/packages/starknet-snap/src/executeTxn.ts @@ -1,5 +1,5 @@ import { Invocations, TransactionType } from 'starknet'; -import { getNetworkFromChainId, getTxnSnapTxt, addDialogTxt } from './utils/snapUtils'; +import { getNetworkFromChainId, getTxnSnapTxt, addDialogTxt, showUpgradeRequestModal } from './utils/snapUtils'; import { getKeysFromAddress, executeTxn as executeTxnUtil, @@ -7,13 +7,14 @@ import { estimateFeeBulk, getAccContractAddressAndCallData, addFeesFromAllTransactions, + isUpgradeRequired, } from './utils/starknetUtils'; import { ApiParams, ExecuteTxnRequestParams } from './types/snapApi'; import { createAccount } from './createAccount'; import { DialogType } from '@metamask/rpc-methods'; import { heading, panel, divider } from '@metamask/snaps-sdk'; import { logger } from './utils/logger'; -import { PROXY_CONTRACT_HASH } from './utils/constants'; +import { ACCOUNT_CLASS_HASH } from './utils/constants'; export async function executeTxn(params: ApiParams) { try { @@ -27,6 +28,11 @@ export async function executeTxn(params: ApiParams) { addressIndex, } = await getKeysFromAddress(keyDeriver, network, state, senderAddress); + if (await isUpgradeRequired(network, senderAddress)) { + await showUpgradeRequestModal(wallet); + throw new Error('Upgrade required'); + } + const txnInvocationArray = Array.isArray(requestParamsObj.txnInvocation) ? requestParamsObj.txnInvocation : [requestParamsObj.txnInvocation]; @@ -34,11 +40,11 @@ export async function executeTxn(params: ApiParams) { type: TransactionType.INVOKE, payload: ele, })); - const accountDeployed = await isAccountDeployed(network, publicKey); + const accountDeployed = await isAccountDeployed(network, senderAddress); if (!accountDeployed) { const { callData } = getAccContractAddressAndCallData(publicKey); const deployAccountpayload = { - classHash: PROXY_CONTRACT_HASH, + classHash: ACCOUNT_CLASS_HASH, contractAddress: senderAddress, constructorCalldata: callData, addressSalt: publicKey, diff --git a/packages/starknet-snap/src/signDeclareTransaction.ts b/packages/starknet-snap/src/signDeclareTransaction.ts index 808b3fca..37bb6ec0 100644 --- a/packages/starknet-snap/src/signDeclareTransaction.ts +++ b/packages/starknet-snap/src/signDeclareTransaction.ts @@ -1,8 +1,12 @@ import { toJson } from './utils/serializer'; import { Signature } from 'starknet'; import { ApiParams, SignDeclareTransactionRequestParams } from './types/snapApi'; -import { getKeysFromAddress, signDeclareTransaction as signDeclareTransactionUtil } from './utils/starknetUtils'; -import { getNetworkFromChainId, getSignTxnTxt } from './utils/snapUtils'; +import { + getKeysFromAddress, + signDeclareTransaction as signDeclareTransactionUtil, + isUpgradeRequired, +} from './utils/starknetUtils'; +import { getNetworkFromChainId, getSignTxnTxt, showUpgradeRequestModal } from './utils/snapUtils'; import { DialogType } from '@metamask/rpc-methods'; import { heading, panel } from '@metamask/snaps-sdk'; import { logger } from './utils/logger'; @@ -15,6 +19,11 @@ export async function signDeclareTransaction(params: ApiParams): Promise