From 0ff4d1a7d8282a5bec102b3f5301166de77685b0 Mon Sep 17 00:00:00 2001 From: katspaugh <381895+katspaugh@users.noreply.github.com> Date: Wed, 14 Feb 2024 14:20:40 +0100 Subject: [PATCH] Feat: enable Safe version 1.4.1 (#3209) --- src/components/new-safe/create/logic/index.ts | 22 +++++++++++++------ src/hooks/coreSDK/safeCoreSDK.ts | 2 +- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/components/new-safe/create/logic/index.ts b/src/components/new-safe/create/logic/index.ts index cff9bf4e14..4070125258 100644 --- a/src/components/new-safe/create/logic/index.ts +++ b/src/components/new-safe/create/logic/index.ts @@ -22,7 +22,7 @@ import { showNotification } from '@/store/notificationsSlice' import { SafeFactory } from '@safe-global/protocol-kit' import type Safe from '@safe-global/protocol-kit' import type { DeploySafeProps } from '@safe-global/protocol-kit' -import { createEthersAdapter } from '@/hooks/coreSDK/safeCoreSDK' +import { createEthersAdapter, isValidSafeVersion } from '@/hooks/coreSDK/safeCoreSDK' import { backOff } from 'exponential-backoff' import { LATEST_SAFE_VERSION } from '@/config/constants' @@ -57,6 +57,18 @@ export const getSafeDeployProps = async ( } } +const getSafeFactory = async ( + ethersProvider: BrowserProvider, + safeVersion = LATEST_SAFE_VERSION, +): Promise => { + if (!isValidSafeVersion(safeVersion)) { + throw new Error('Invalid Safe version') + } + const ethAdapter = await createEthersAdapter(ethersProvider) + const safeFactory = await SafeFactory.create({ ethAdapter, safeVersion }) + return safeFactory +} + /** * Create a Safe creation transaction via Core SDK and submits it to the wallet */ @@ -65,9 +77,7 @@ export const createNewSafe = async ( props: DeploySafeProps, safeVersion?: SafeVersion, ): Promise => { - const ethAdapter = await createEthersAdapter(ethersProvider) - - const safeFactory = await SafeFactory.create({ ethAdapter, safeVersion }) + const safeFactory = await getSafeFactory(ethersProvider, safeVersion) return safeFactory.deploySafe(props) } @@ -78,9 +88,7 @@ export const computeNewSafeAddress = async ( ethersProvider: BrowserProvider, props: DeploySafeProps, ): Promise => { - const ethAdapter = await createEthersAdapter(ethersProvider) - - const safeFactory = await SafeFactory.create({ ethAdapter }) + const safeFactory = await getSafeFactory(ethersProvider) return safeFactory.predictSafeAddress(props.safeAccountConfig, props.saltNonce) } diff --git a/src/hooks/coreSDK/safeCoreSDK.ts b/src/hooks/coreSDK/safeCoreSDK.ts index c039e9a1d1..66d9e5eb67 100644 --- a/src/hooks/coreSDK/safeCoreSDK.ts +++ b/src/hooks/coreSDK/safeCoreSDK.ts @@ -19,7 +19,7 @@ export const isLegacyVersion = (safeVersion: string): boolean => { } export const isValidSafeVersion = (safeVersion?: SafeInfo['version']): safeVersion is SafeVersion => { - const SAFE_VERSIONS: SafeVersion[] = ['1.3.0', '1.2.0', '1.1.1', '1.0.0'] + const SAFE_VERSIONS: SafeVersion[] = ['1.4.1', '1.3.0', '1.2.0', '1.1.1', '1.0.0'] return !!safeVersion && SAFE_VERSIONS.some((version) => semverSatisfies(safeVersion, version)) }