From b0b3e53d94311e80acf0b4d1cb4f118b6bf3f3d0 Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Thu, 8 Apr 2021 09:11:11 +0200 Subject: [PATCH 01/11] Rollback offchain signing to require v >= 1.1.1 --- src/logic/safe/transactions/offchainSigner/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/logic/safe/transactions/offchainSigner/index.ts b/src/logic/safe/transactions/offchainSigner/index.ts index 4a1e3b6b..08e04803 100644 --- a/src/logic/safe/transactions/offchainSigner/index.ts +++ b/src/logic/safe/transactions/offchainSigner/index.ts @@ -17,7 +17,7 @@ const SIGNERS = { const getSignersByWallet = (isHW) => isHW ? [SIGNERS.ETH_SIGN] : [SIGNERS.EIP712_V3, SIGNERS.EIP712_V4, SIGNERS.EIP712, SIGNERS.ETH_SIGN] -export const SAFE_VERSION_FOR_OFFCHAIN_SIGNATURES = '>=1.0.0' +export const SAFE_VERSION_FOR_OFFCHAIN_SIGNATURES = '>=1.1.1' export const tryOffchainSigning = async (safeTxHash: string, txArgs, isHW: boolean): Promise => { let signature From 34e6b112472800db821ff9b647d3ab334406768a Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Thu, 8 Apr 2021 09:21:45 +0200 Subject: [PATCH 02/11] Set v3.3.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 47dae984..61d94146 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "safe-react", - "version": "3.3.1", + "version": "3.3.2", "description": "Allowing crypto users manage funds in a safer way", "website": "https://github.com/gnosis/safe-react#readme", "bugs": { From 36ba59799fd5ee55e61502abc7490e37f215ac7e Mon Sep 17 00:00:00 2001 From: Mikhail Mikheev Date: Thu, 8 Apr 2021 15:40:40 +0400 Subject: [PATCH 03/11] Revert "Add Aave 2 safe app (#2127)" This reverts commit e48891ba2bb32a2ef7f83a550d5aceff93d43059. --- src/routes/safe/components/Apps/utils.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/routes/safe/components/Apps/utils.ts b/src/routes/safe/components/Apps/utils.ts index 46cbe08c..fa66d807 100644 --- a/src/routes/safe/components/Apps/utils.ts +++ b/src/routes/safe/components/Apps/utils.ts @@ -34,12 +34,6 @@ export const staticAppsList: Array = [ disabled: false, networks: [ETHEREUM_NETWORK.MAINNET], }, - // Aave v2 - { - url: `${process.env.REACT_APP_IPFS_GATEWAY}/QmVg7aXr5S8sT2iUdUwdkfTJNknmB7rcE3t92HiGoVsYDj`, - disabled: false, - networks: [ETHEREUM_NETWORK.MAINNET], - }, //Balancer Exchange { url: `${process.env.REACT_APP_IPFS_GATEWAY}/QmRb2VfPVYBrv6gi2zDywgVgTg3A19ZCRMqwL13Ez5f5AS`, From ad472f3d5f01f8c72c6151f7dab12da72279b063 Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Thu, 8 Apr 2021 17:52:50 +0200 Subject: [PATCH 04/11] Revert "Add fix to swap symbol and name for sidechains" This reverts commit 45d8157f9047ce5845caf130603810e0b719a907. --- .../safe/api/fetchTokenCurrenciesBalances.ts | 25 ++----------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/src/logic/safe/api/fetchTokenCurrenciesBalances.ts b/src/logic/safe/api/fetchTokenCurrenciesBalances.ts index 2fcc4a93..d1185a3d 100644 --- a/src/logic/safe/api/fetchTokenCurrenciesBalances.ts +++ b/src/logic/safe/api/fetchTokenCurrenciesBalances.ts @@ -1,11 +1,9 @@ import axios from 'axios' -import { getSafeClientGatewayBaseUrl, getNetworkInfo } from 'src/config' +import { getSafeClientGatewayBaseUrl } from 'src/config' import { TokenProps } from 'src/logic/tokens/store/model/token' import { checksumAddress } from 'src/utils/checksumAddress' -import { ZERO_ADDRESS, sameAddress } from 'src/logic/wallets/ethAddresses' - export type TokenBalance = { tokenInfo: TokenProps balance: string @@ -35,24 +33,5 @@ export const fetchTokenCurrenciesBalances = async ({ checksumAddress(safeAddress), )}/balances/${selectedCurrency}/?trusted=${trustedTokens}&exclude_spam=${excludeSpamTokens}` - return axios.get(url).then(({ data }) => { - // Currently the client-gateway is not returning the balance using network token symbol and name - // FIXME remove this logic and return data directly once this is fixed - const { nativeCoin } = getNetworkInfo() - - if (data.items && data.items.length) { - data.items = data.items.map((element) => { - const { tokenInfo } = element - if (sameAddress(ZERO_ADDRESS, tokenInfo.address)) { - // If it's native coin we swap symbol and name - tokenInfo.symbol = nativeCoin.symbol - tokenInfo.name = nativeCoin.name - } - - return element - }) - } - - return data - }) + return axios.get(url).then(({ data }) => data) } From 98719f8e6f8bb628bdca66fb4e67b44bdd916b4d Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Thu, 8 Apr 2021 18:40:13 +0200 Subject: [PATCH 05/11] Fix Volta token name in configuration --- src/config/networks/volta.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/networks/volta.ts b/src/config/networks/volta.ts index 154ba9e8..5450752b 100644 --- a/src/config/networks/volta.ts +++ b/src/config/networks/volta.ts @@ -36,8 +36,8 @@ const mainnet: NetworkConfig = { isTestNet: true, nativeCoin: { address: '0x0000000000000000000000000000000000000000', - name: 'Energy web token', - symbol: 'EWT', + name: 'Volta Token', + symbol: 'VT', decimals: 18, logoUri: EwcLogo, }, From 70983c6c012d2c13f318ce320624cceb58ae8c28 Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Thu, 8 Apr 2021 18:45:06 +0200 Subject: [PATCH 06/11] Update rinkeby safe transaction url --- src/config/networks/rinkeby.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config/networks/rinkeby.ts b/src/config/networks/rinkeby.ts index 3ce8179f..fddbf2af 100644 --- a/src/config/networks/rinkeby.ts +++ b/src/config/networks/rinkeby.ts @@ -3,7 +3,7 @@ import { EnvironmentSettings, ETHEREUM_NETWORK, NetworkConfig } from 'src/config const baseConfig: EnvironmentSettings = { clientGatewayUrl: 'https://safe-client.rinkeby.staging.gnosisdev.com/v1', - txServiceUrl: 'https://safe-transaction.staging.gnosisdev.com/api/v1', + txServiceUrl: 'https://safe-transaction.rinkeby.staging.gnosisdev.com/api/v1', safeAppsUrl: 'https://safe-apps.dev.gnosisdev.com', gasPriceOracle: { url: 'https://ethgasstation.info/json/ethgasAPI.json', From 228ab703ff1704840f7a5f4ffa8dc3cb0fcbe8a4 Mon Sep 17 00:00:00 2001 From: nicolas Date: Mon, 12 Apr 2021 04:45:59 -0300 Subject: [PATCH 07/11] Fix: toInfo could be null (#2154) * validate if txInfo is defined * set toInfo as optional --- src/logic/safe/store/models/types/gateway.d.ts | 2 +- src/routes/safe/components/Transactions/TxList/TxData.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/logic/safe/store/models/types/gateway.d.ts b/src/logic/safe/store/models/types/gateway.d.ts index cf45553d..1212328b 100644 --- a/src/logic/safe/store/models/types/gateway.d.ts +++ b/src/logic/safe/store/models/types/gateway.d.ts @@ -133,7 +133,7 @@ type BaseCustom = { dataSize: string value: string isCancellation: boolean - toInfo: AddressInfo + toInfo?: AddressInfo } type Custom = BaseCustom & { diff --git a/src/routes/safe/components/Transactions/TxList/TxData.tsx b/src/routes/safe/components/Transactions/TxList/TxData.tsx index f559d721..82be9fb6 100644 --- a/src/routes/safe/components/Transactions/TxList/TxData.tsx +++ b/src/routes/safe/components/Transactions/TxList/TxData.tsx @@ -33,7 +33,7 @@ const DetailsWithTxInfo = ({ children, txData, txInfo }: DetailsWithTxInfoProps) let name let avatarUrl - if (isCustomTxInfo(txInfo)) { + if (isCustomTxInfo(txInfo) && txInfo.toInfo) { name = txInfo.toInfo.name avatarUrl = txInfo.toInfo.logoUri } From d55e0e2478b9f544f09834231f6634472093d491 Mon Sep 17 00:00:00 2001 From: Daniel Sanchez Date: Mon, 12 Apr 2021 13:48:40 +0200 Subject: [PATCH 08/11] Set v3.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5c7b64f5..9dbaf2d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "safe-react", - "version": "3.3.2", + "version": "3.4.0", "description": "Allowing crypto users manage funds in a safer way", "website": "https://github.com/gnosis/safe-react#readme", "bugs": { From a139da394ffbbf44cbaf406617fb12d45d2f4b78 Mon Sep 17 00:00:00 2001 From: nicolas Date: Mon, 12 Apr 2021 11:50:59 -0300 Subject: [PATCH 09/11] Add missing dependency (#2157) --- src/logic/safe/hooks/useLoadSafe.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/logic/safe/hooks/useLoadSafe.tsx b/src/logic/safe/hooks/useLoadSafe.tsx index 8e4541b2..8a603a9f 100644 --- a/src/logic/safe/hooks/useLoadSafe.tsx +++ b/src/logic/safe/hooks/useLoadSafe.tsx @@ -28,10 +28,10 @@ export const useLoadSafe = (safeAddress?: string, loadedViaUrl = true): boolean } } } - dispatch(loadAddressBookFromStorage()) + dispatch(loadAddressBookFromStorage()) fetchData() - }, [dispatch, safeAddress]) + }, [dispatch, safeAddress, loadedViaUrl]) return isSafeLoaded } From fbff0a35e04ecfc7cda0c4dda373697ae0182fa5 Mon Sep 17 00:00:00 2001 From: nicolas Date: Tue, 13 Apr 2021 04:22:17 -0300 Subject: [PATCH 10/11] Prevent rendering safe-app outside its container while loading (#2143) --- src/routes/safe/components/Apps/components/AppFrame.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/routes/safe/components/Apps/components/AppFrame.tsx b/src/routes/safe/components/Apps/components/AppFrame.tsx index 02d41f29..7c810494 100644 --- a/src/routes/safe/components/Apps/components/AppFrame.tsx +++ b/src/routes/safe/components/Apps/components/AppFrame.tsx @@ -59,11 +59,12 @@ const StyledCard = styled(Card)` padding: 0; ` -const StyledIframe = styled.iframe` +const StyledIframe = styled.iframe<{ isLoading: boolean }>` height: 100%; width: 100%; overflow: auto; box-sizing: border-box; + display: ${({ isLoading }) => (isLoading ? 'none' : 'block')}; ` const Breadcrumb = styled.div` @@ -326,6 +327,7 @@ const AppFrame = ({ appUrl }: Props): React.ReactElement => { )} Date: Tue, 13 Apr 2021 04:37:08 -0300 Subject: [PATCH 11/11] (feature) Address format styles (#2033) * Add EthHashInfo component from SRC * add standard address format on Remove Modal and fix styles * set Submit button disabled when the values no changes * Add ethHash link + Remove harcoded safe name Co-authored-by: Mati Dastugue Co-authored-by: Fernando --- .../safe/components/AddressBook/index.tsx | 3 +- .../components/Balances/SendModal/index.tsx | 9 +++- .../SendModal/screens/ChooseTxType/index.tsx | 22 ++++++-- .../SendModal/screens/ChooseTxType/style.ts | 3 +- .../Settings/RemoveSafeModal/index.tsx | 50 +++++-------------- .../Settings/RemoveSafeModal/style.ts | 6 +-- .../ChangeThreshold/index.tsx | 37 ++++++++------ 7 files changed, 70 insertions(+), 60 deletions(-) diff --git a/src/routes/safe/components/AddressBook/index.tsx b/src/routes/safe/components/AddressBook/index.tsx index 38570218..7943b79d 100644 --- a/src/routes/safe/components/AddressBook/index.tsx +++ b/src/routes/safe/components/AddressBook/index.tsx @@ -255,7 +255,8 @@ const AddressBookTable = (): ReactElement => { activeScreenType="chooseTxType" isOpen={sendFundsModalOpen} onClose={() => setSendFundsModalOpen(false)} - recipientAddress={selectedEntry && selectedEntry.entry ? selectedEntry.entry.address : undefined} + recipientAddress={selectedEntry?.entry?.address} + recipientName={selectedEntry?.entry?.name} /> ) diff --git a/src/routes/safe/components/Balances/SendModal/index.tsx b/src/routes/safe/components/Balances/SendModal/index.tsx index c90f1690..8c317ff8 100644 --- a/src/routes/safe/components/Balances/SendModal/index.tsx +++ b/src/routes/safe/components/Balances/SendModal/index.tsx @@ -56,6 +56,7 @@ type Props = { isOpen: boolean onClose: () => void recipientAddress?: string + recipientName?: string selectedToken?: string | NFTToken | Erc721Transfer tokenAmount?: string } @@ -65,6 +66,7 @@ const SendModal = ({ isOpen, onClose, recipientAddress, + recipientName, selectedToken, tokenAmount, }: Props): React.ReactElement => { @@ -119,7 +121,12 @@ const SendModal = ({ } > {activeScreen === 'chooseTxType' && ( - + )} {activeScreen === 'sendFunds' && ( diff --git a/src/routes/safe/components/Balances/SendModal/screens/ChooseTxType/index.tsx b/src/routes/safe/components/Balances/SendModal/screens/ChooseTxType/index.tsx index 1f584b24..6585312c 100644 --- a/src/routes/safe/components/Balances/SendModal/screens/ChooseTxType/index.tsx +++ b/src/routes/safe/components/Balances/SendModal/screens/ChooseTxType/index.tsx @@ -14,20 +14,29 @@ import Row from 'src/components/layout/Row' import { safeFeaturesEnabledSelector } from 'src/logic/safe/store/selectors' import { useStyles } from 'src/routes/safe/components/Balances/SendModal/screens/ChooseTxType/style' import ContractInteractionIcon from 'src/routes/safe/components/Transactions/TxList/assets/custom.svg' +import { EthHashInfo } from '@gnosis.pm/safe-react-components' import Collectible from '../assets/collectibles.svg' import Token from '../assets/token.svg' import { FEATURES } from 'src/config/networks/network.d' +import { getExplorerInfo } from 'src/config' + type ActiveScreen = 'sendFunds' | 'sendCollectible' | 'contractInteraction' interface ChooseTxTypeProps { onClose: () => void recipientAddress?: string + recipientName?: string setActiveScreen: React.Dispatch> } -const ChooseTxType = ({ onClose, recipientAddress, setActiveScreen }: ChooseTxTypeProps): React.ReactElement => { +const ChooseTxType = ({ + onClose, + recipientAddress, + recipientName, + setActiveScreen, +}: ChooseTxTypeProps): React.ReactElement => { const classes = useStyles() const featuresEnabled = useSelector(safeFeaturesEnabledSelector) const erc721Enabled = featuresEnabled?.includes(FEATURES.ERC721) @@ -61,11 +70,18 @@ const ChooseTxType = ({ onClose, recipientAddress, setActiveScreen }: ChooseTxTy {!!recipientAddress && ( - + - Please select what you will send to {recipientAddress} + Please select what you will send to + )} diff --git a/src/routes/safe/components/Balances/SendModal/screens/ChooseTxType/style.ts b/src/routes/safe/components/Balances/SendModal/screens/ChooseTxType/style.ts index 490db3cc..061a34ae 100644 --- a/src/routes/safe/components/Balances/SendModal/screens/ChooseTxType/style.ts +++ b/src/routes/safe/components/Balances/SendModal/screens/ChooseTxType/style.ts @@ -19,13 +19,14 @@ export const useStyles = makeStyles( }, disclaimerText: { fontSize: md, + marginBottom: `${md}`, }, closeIcon: { height: '35px', width: '35px', }, buttonColumn: { - padding: '52px 0', + margin: '16px 0 44px 0', '& > button': { fontSize: md, fontFamily: 'Averta', diff --git a/src/routes/safe/components/Settings/RemoveSafeModal/index.tsx b/src/routes/safe/components/Settings/RemoveSafeModal/index.tsx index a846751d..81c324b5 100644 --- a/src/routes/safe/components/Settings/RemoveSafeModal/index.tsx +++ b/src/routes/safe/components/Settings/RemoveSafeModal/index.tsx @@ -1,21 +1,15 @@ import IconButton from '@material-ui/core/IconButton' import { makeStyles } from '@material-ui/core/styles' import Close from '@material-ui/icons/Close' -import OpenInNew from '@material-ui/icons/OpenInNew' -import classNames from 'classnames' import React from 'react' import { useDispatch, useSelector } from 'react-redux' -import { getExplorerInfo } from 'src/config' +import { EthHashInfo, Button } from '@gnosis.pm/safe-react-components' import { styles } from './style' -import Identicon from 'src/components/Identicon' import Modal from 'src/components/Modal' import Block from 'src/components/layout/Block' -import Button from 'src/components/layout/Button' -import Col from 'src/components/layout/Col' import Hairline from 'src/components/layout/Hairline' -import Link from 'src/components/layout/Link' import Paragraph from 'src/components/layout/Paragraph' import Row from 'src/components/layout/Row' import { @@ -23,16 +17,11 @@ import { safeNameSelector, safeParamAddressFromStateSelector, } from 'src/logic/safe/store/selectors' -import { md, secondary } from 'src/theme/variables' import { WELCOME_ADDRESS } from 'src/routes/routes' import { removeLocalSafe } from 'src/logic/safe/store/actions/removeLocalSafe' import { sameAddress } from 'src/logic/wallets/ethAddresses' import { saveDefaultSafe } from 'src/logic/safe/utils' - -const openIconStyle = { - height: md, - color: secondary, -} +import { getExplorerInfo } from 'src/config' const useStyles = makeStyles(styles) @@ -47,8 +36,6 @@ export const RemoveSafeModal = ({ isOpen, onClose }: RemoveSafeModalProps): Reac const safeName = useSelector(safeNameSelector) const defaultSafe = useSelector(defaultSafeSelector) const dispatch = useDispatch() - const explorerInfo = getExplorerInfo(safeAddress) - const { url } = explorerInfo() const onRemoveSafeHandler = async () => { await dispatch(removeLocalSafe(safeAddress)) @@ -82,28 +69,16 @@ export const RemoveSafeModal = ({ isOpen, onClose }: RemoveSafeModalProps): Reac - - - - - - - {safeName} - - - - {safeAddress} - - - - - - - + - - + Removing a Safe only removes it from your interface. It does not delete the Safe. You can always add it back using the Safe's address. @@ -111,14 +86,15 @@ export const RemoveSafeModal = ({ isOpen, onClose }: RemoveSafeModalProps): Reac - - + )}