* Makes getGasEstimationTxResponse exportable
* Add check for failing txs on approveTxModal
* Adds styles for reviewTx
* Adds useTxSuccessCheck hook
* Adds checkIfTxWillFail function
* Uses checkIfTxWillFailAsync on reviewTx modal
* Improves approveTx modal
* Add check for failing transaction in contract interaction modal
* Add check for reviewCollectible
* Fix check on sendFunds reviewTx
* Adds styling for contractInteraction modal
* Fix gas calculation for native token transfers
* Rename estimateDataGasCosts to parseRequiredTxGasResponse
Adds getPreValidatedSignatures
Refactor estimateTxGasCosts
Refactor checkIfExecTxWillFail
* Refactor checkIfExecTxWill usage
* Refactor checkIfTxWillFailAsync in ReviewTx
* Use getPreValidatedSignatures in createTransaction()
* Refactor estimateTxGasCosts
Rename estimateSafeTxGas to estimateExecTransactionGas
* Refactor ReviewTx: extract useEffects to hooks
* Remove unnecessary gas transfer amount
* Refactor estimateTxGasCosts: extract checkIfTxIsExecution and estimateTxGas
* Fix tx amount
Remove console log
* Moves useCheckIfTransactionWillFail to logic/hooks folder
* Replaces useEffect usage with useCheckIfTransactionWillFail hook
Also fix how some modals fetch the safeAddress
* Improves modal's wording
* Fix error parsing the cancel transaction error message from GETH nodes
* Remove useCheckIfTransactionWillFail
Adds useEstimateTransactionGas
Renames estimateTxGas to estimateTransactionGas
Removes estimateTxGasCosts
Removes checkIfExecTxWillFail
* Replace useCheckIfTransactionWillFail from modals with useEstimateTransactionGas
* Replace estimateGasCosts from every review tx modal with useEstimateTransactionGas
* Replace estimateGasCosts from every review tx modal with useEstimateTransactionGas
* Extract isExecution calculation to useEstimateTransactionGas
* Creates TransactionFailText
* Uses TransactionFailText in the review modals
* Fix wrong selector usage
* Fix missing null check on cancel tx confirmations
* Add guard for CLOSE_SNACKBAR action when tx was already dismissed
* Improves useEstimateTransactionGas in review custom tx and contract interaction review
* Fix review replace/remove/add owner modals styling
* Refactor response of useEstimateTransactionGas
* Remove safeAddress as param to the useEstimateTransactionGas
* Improves how threshold is obtained in useEstimateTransactionGas.tsx
* Rename gasCostHumanReadable to gasCostFormatted
* Add operation to useEstimateTransactionGas
* Refactor ConfirmTransactionModal to use useEstimateTransactionGas
* Refactor proccessTransaction to use getPreValidatedSignatures method
* Fix default export of ApproveTxModal
* Rename estimateExecTransactionGas to estimateGasForTransactionCreation
Remove estimateTransactionGas from gas.ts
* Make estimateGasForTransactionCreation throw error instead of 0 gas
* Adds estimateGasForTransactionExecution and estimateGasForTransactionApproval to gas.ts
* Move estimateTransactionGas to useEstimateTransactionGas
Refactors useEstimateTransactionGas to return isCreation and isOffChainSignature
* Type and refactor generateSignaturesFromTxConfirmations
Moves getPreValidatedSignatures to safeTxSigner.ts
* Uses confirmations to estimateGasForTransactionExecution
* Adds TransactionFeesText component
Uses TransactionFeesText on ApproveTxModal
* Pass more parameters to estimateGasForTransactionExecution
* Removes unnecessary parameter in getNewTxNonce
* Moves checkIfOffChainSignatureIsPossible to safeTxSigner.ts
* Fix check for null confirmations
* Uses checkIfOffChainSignatureIsPossible on createTransaction.ts
* Move TransactionFailText inside TransactionFees component
* Pass safeTxGas to useEstimateTransactionGas.tsx
Improves how we use default params
* Fix gas iteration on estimateGasForTransactionExecution
* Fix estimateGasForTransactionExecution calculation
* Fix generateSignaturesFromTxConfirmations calculation
* Remove unnecessary Promise and await
* Fix estimateGasForTransactionExecution for preApproving owner case
* Improve logging
* Uses operation in useEstimateTransactionGas
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
Co-authored-by: Fernando <fernando.greco@gmail.com>
* Remove Warning: React.createFactory() is deprecated
* make TS recognize Window definition by adding an empty export
* Silent MM warning ethereum.autoRefreshOnNetworkChange
* remove warning when requesting data from contract with null address.
* feat: Support for Volta and EWC
* chore: Store network ID in the ETHEREUM_NETWORK enum itself
* chore: forward tx and address to non-etherscan explorers
* fix test, avoid assigning enum to const
* (Feature) [xDai] - Create network-based configurations (#1420)
Co-authored-by: Matias Dastugue <matias.dastugue@altoros.com>
Co-authored-by: Mati Dastugue <mdastugu@amazon.com>
* (Feature) [xDai] Use generic config (#1422)
Co-authored-by: Matias Dastugue <matias.dastugue@altoros.com>
Co-authored-by: Mati Dastugue <mdastugu@amazon.com>
* fix function name after merge development
* (Feature) [xDai] - Contract interaction abi lookup (#1429)
* Filter Apps by network (#1433)
* Filter apps by network
* (Feature) [xDai] - Parametrize ethscan values (#1424)
* (Feature) [xDai] - Use parametrized network values (#1437)
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
* (Feature) [xDai] - Use tx service for loading token info (#1435)
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
* (Feature) [xDai] - Visually differentiate networks (#1431)
Co-authored-by: fernandomg <fernando.greco@gmail.com>
Co-authored-by: Agustin Pane <agustin.pane@gmail.com>
* (Feature) [xDai] - Cosmetic fixes (#1449)
* Add staging configuration for deployment using xDai (#1459)
* Add staging xDai deployment to travis
* Add safe apps production url for xdai
* Add travis rule to build xDai on master or integration branch
* (Bugfix) Set min height to ListContentLayout wrapper #1447 (#1451)
* fix min-height app container and margin to info text at
bottom
* change css unit from % to vh
Co-authored-by: nicosampler <nf.dominguez.87@gmail.com>
* disable OpenZepplin in xDai (#1465)
* remove any in config/index.ts (#1462)
* [xDai] Parametrize Native Coin (#1444)
* fix `generateBatchRequest` calls
* Fix some ETH harcoded values + Add tests
* Fix null or undefined value
* Move nativeCoin outside component + fix toTokenInput function
* Remove native coin from useEffect
Co-authored-by: fernandomg <fernando.greco@gmail.com>
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
* (Feature) [xDai] - Disable safe sections based on network config (#1468)
* Adds FEATURES enum
Renames features to disabledFeatures
* Uses FEATURES enum instead of hard-coded contract features
* Refactor enabledFeatures function, now checks that there are not disabled features by config before return the enabledFeatures result
* Adds SAFE_APPS and CONTRACT_INTERACTION to FEATURES enum
* Remove SAFE_APPS from sidebar if disabled
* Redirect user from /apps if safe apps are disabled
* Disables contract interaction from config
* Remove !remoteOwners
* Move settings to a constant
* Deploy from xDai integration branch only to xDai staging
* Fix .travis.yml warnings
* Update branch and condition for staging deployment
* Update xDai depoy condition
* (Feature) [xDai] - Fetch collectibles from Gnosis services (#1460)
* Add https to safe-xdai apps link
* make getExplorerInfo return values per network (#1470)
* (Fix) "Approve transaction" modal closes (#1477)
* add equality function to prevent re-renders
- I left the inline equalityFn, as an ad-hoc solution.
First, because we're going to remove this when https://github.com/gnosis/safe-react/issues/1479 is done
Second, because this way it infers the types defined in the useSelector generics
* (Fix) xDai feature issues (#1484)
Co-authored-by: nicosampler <nf.dominguez.87@gmail.com>
* RPC interactions errors (#1475)
* Add options to httpProvider
* Add log when generateatchRequest fails
* add types to generateBarchRequest
* fix types in `generateBatchRequests`
* add `.d` for imports of definition files
* add `undefined` alternative value for `generateBatchRequests` ReturnValues
- also, fixed typing errors in related functions
* fix return values for `generateBatchRequests` in tests
Co-authored-by: fernandomg <fernando.greco@gmail.com>
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
* (Feature) xDai configs (#1489)
* (Feature) - Replaces ETH with network native coin (#1491)
* Remove networkInfo from the components
* Replaces humanReadableValue to fromTokenUnit
Co-authored-by: JosephBagaric <bagaricjos@gmail.com>
Co-authored-by: Matias Dastugue <matias.dastugue@altoros.com>
Co-authored-by: Mati Dastugue <mdastugu@amazon.com>
Co-authored-by: Agustin Pane <agustin.pane@gmail.com>
Co-authored-by: nicolas <nicosampler@users.noreply.github.com>
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
Co-authored-by: Agustín Longoni <agustin.longoni@altoros.com>
Co-authored-by: nicosampler <nf.dominguez.87@gmail.com>
Co-authored-by: Mikhail Mikheev <mmvsha73@gmail.com>
* Remove the auto adding owners when the safe loads
* Let the user add "invalid names" in the addressbook and also shows them on the addressbook
* Fix update name of safe if addressbook updated
* Removes unused addSafe action, replaces it with addOrUpdateSafe
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
* Update travis script to execute tests
* Update ReviewInformation components to remove type error
* Fix tests and import types without .d
* Upgrade dependencies with minor changes
* dep bump, enable strictNullChecks ts compiler option
* remove unused imports
* nullchecks errors wip
* fix clipboard func type errors
* fix send funds validation
* Update style load in ThresholdSettings
* Fix isValidAddress default state for SendCollectible
* fix OwnersColumn return type
* fix extractUsefulMethods typing
* Bug: incoming transactions do not load if it fails to fetch gas for a transaction (#1321)
* check if gas returned values are valid when loading token info for incoming tx
* Fix generateBatchRequests
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
(cherry picked from commit 372d27f5a6a7a485ab65b813f12ffbb2e150490e)
* Revert "Revert "Tech debt 1265: Enable strictNullChecks TS compiler option (#1301)" (#1335)"
This reverts commit 43bc4984b862b7c9c1037bb2c8850e49429c1c19.
* Fix safe clean load
Fix transaction nonce get
* Fix issue adding owners again after reloading the page
* Add viewedSafes correctly to current session
* Add typing and reduce dependency with immutable
* Rename SerializedSessionState to CurrentSessionState
* Remove immutable from currentSession
* Use Dispatch type defined using ThunkDispatch
* Remove if as parameter should always be defined
* Fix test typo issues
Co-authored-by: Mikhail Mikheev <mmvsha73@gmail.com>
* Adding storybook
* new layout components
* add preview body
* add styles
* extract walletInfo to a separated component
* remove unused component
* New Layout componentes refactor
* Return type in Root
* change story name
* adding back OpenHoc
* sort import
* fix margins
* split layout
* Move Layout related components to /components/SidebarLayout
* Adding new layout for real
* Some changes and refactor
* Move Modals from safe to sidebar
* move safeAddress logic from safe to sidebar
* move safe container from components
* List refactor
* sidebar navigation
* selected item
* list selected example
* add styles
* add text component to new tx button
* Sidebar without walletInfo
* fix footer and body margins
* add logo Safe Multisig
* update safe-react-components
* List colors and List Icon
* fix subItem
* update safe-react-components
* fix logo margin, add notConnected icon and badge Read Only
* fix merge problems
* add sidebar styles and icon notConnected
* fix readOnly
* fix QR tooltip info
* add Help Center link and fix margins
* Remove 'No safe loaded' text
* review changes
* fix import
* fix Help center margin
* add styles to address
* replace empty div with FlexSpacer component
* rename Sidebar by SafeListSidebar
* fix load and create safe position (top-left)
* Add comment to FlexSpacer
* fix Title margin Safe Creation Progress
* fix Read Only line-height
* review fixes
* review fixes
* rename component
* fix Help Center styles
* return type in DefaultBadge
* Fix types for list component (still wip)
* move sidebarList to a hook
* fix safe route container
* fix src version
* fix list typescript issue
* rename sidebarlayout to applayout
* sidebar fixes wip
* sidebar fixes wip
* remove unused function
* lift sidebar items state up
* fix broken imports
* remove unused files
Co-authored-by: Agustín Longoni <agustin.longoni@altoros.com>
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
Co-authored-by: Mikhail Mikheev <mmvsha73@gmail.com>
* Avoid constant creation of new web3 object
* rollback web3 version, small type fixes in ConnectButton
* Use web3 instance in getProviderInfo
Co-authored-by: Mikhail Mikheev <mmvsha73@gmail.com>
* typechain wip
* add types for multisend
* type definitions improvements
* type safe contract in estimateTxGasCosts
* contract type definitions wip
* SafeInstance truffle -> web3 migration
* fix calls for version
* transactions/send enhancements
* fix safe recor owner type
* Stepper type definitions wip
* dep bump
* stepper types wip
* refactoring stepper component to fix bug in load safe form
* stepper types wip, addressbook reducer types wip
* finally make it work
* Fix ownerlist component hook in load safe
* dep bump
* dep bump
* rollback types/history
* add types for gas calc
* debugging...
* fix using RO web3 for sending txs
* update package.json generate-types command
* add ts-ignore for stepperpage
* db
* dep bump
* as unknown as AbiItem -> as AbiItem[]
* use optional chaining for isExecution in gas esimations
* abiITem -> AbiItem[]
* fix safeVersion utils tests
* fix imports, put upgradeSafe test close to the actual code
* add comment about ts-ignore usage
* downgrade web3 version
* Fix ts error
Add type return on fetchCurrencyValues
* Add skeleton for loading balance value
* Fix texts in uppercase
* Adds ETH Icon in currencyValues dropdown
* Adds getExchangeRatesUrlFallback
Adds support for ETH as currency
* Alphabetically sort currencies
* Add types
* Type formatAmount
* Adds formatAmountInUsFormat util function
* Add types
Uses formatAmountInUsFormat for BALANCE_TABLE_BALANCE_ID
* Updates max and min fraction digits on formatAmountInUsFormat
Add tests
* Updates max and min fraction digits on formatAmountInUsFormat
Add tests
* Add types
* Fix currencyValues types
* Adds safeFiatBalancesTotalSelector
* Adds total balance to safe header
* Fix types
* Adds currentCurrency on header
* Adds types to getTokenPriceInCurrency
* Fix balance currency rate conversion
* Add guards for modules
* Add guards for modules
* Uses console error for api
* Remove anys
* Redefine CurrencyRateValue types into CurrencyRateValueRecord
* Redefine test texts
* Use absolute imports
* Add types to dispatch
* Add guard for no balance value
* Fix ESLINT warning
* Add types
* Fix no balance case
* Use optional chaining
* Absolute paths
* Adds return types
Uses BigNumber in safeFiatBalancesTotalSelector
* Remove number as type for formatAmountInUsFormat
* Uses createStyles to remove any types
* Improve total balances display
* Fix balances value column
* formatAmountInUsFormat feedback
* Force boolean evaluation
* Fix totalBalance heading styles
* Add types
* Add types to fetchTokenCurrenciesBalances endpoint
* Replaces coinbase dependency by backend for ETH price in USD
* Absolute paths
* Replaces RecordOf<TokenProps> with Token
* Feedback
* Trigger buid
* Types
* Fix tests order
* Renames numberFormat to usNumberFormatter
Co-authored-by: Mikhail Mikheev <mmvsha73@gmail.com>
* type validators
* safeSelector types
* history 5.0.0 breaking changes adaptation
* replace simpleMemoize with memoize from lodash because of typing issues
* add type definitions for history and react-router-dom
* type fixes
* yarn lock update
* fix router state
* more type improvements
* validator tests wip
* add tests for validators, remove duplicated validators
* add error messages to tests
* fix minValue error message for inclusive param
* Replace jsx.element with react.reactelement
* Fix uniqueAddress validator argument type
* remove comment in AddCustomToken validator
* use absolute import for saferecord in safe paage container
* Refactor Balances to functional component
Removes Balances props in Layout.jsx
* Replaces selectors that were using safeParamAddressSelector with safeParamAddressFromStateSelector to avoid the bug of non-loaded safe when called
Also exports extendedTransactionsSelector to let the components use it
* Refactors Transactions.jsx, replaces transactions.tsx with txsTable.jsx
Removes all unused props from transactions.jsx
Makes all childs of txsTable.jsx fetch the props they need instead of sharing all of them even if they are not used
* Adds new selectors: safeNameSelector, safeNeedsUpdateSelector, safeCurrentVersionSelector
* Removes unused props from layout to settings.jsx
Removed props from the settings.jsx childs, now they fetch the values they need directly from the store
* Removes unused redux connect
* Adds safeEthBalanceSelector
* Removes all the props from layout to settings
* Refactor root and layout, extracts checkForUpdate and componentDidMount to components
Extracts header and tabs from Layout.jsx
* Makes routes.jsx use selectors instead of connect to unify the code
* Loads tabs components using react suspense
* Fixs warning when trying to update root component within loadStore.jsx
Replaces safe with safeAddress selector in layout.jsx to reduce the unnecessary rendering
Fixs setState in container.jsx
* Fixs checkForUpdates fetchTokenBalances
Adds FetchTokens.jsx in balances
Adds safeFeaturesEnabledSelector
* Fixs load addressbook action
* Replaces safe with owners in manage owners
* Improves buildSafe promises calls
Improves the loadStorage calls
* Fixs error "Uncaught (in promise) TypeError: Cannot read property 'includes' of undefined"
* Extracts LoadStore from outside the router component to avoid re-loading the store
Adds react lazy for Coins and Collectible tabs
* Reduce the polling rate for fetching transactions
* Removes unused actions.js
Removes unused selector props
* Fixes owners column selector usage
* Fixes processTransaction usage
* Optimize how the transaction list within the transactions tab are loaded
* Fix lint error
* Fix edit addressbook entry
* Fixs show send coins modal
* feature: batchRequest for incoming transactions
* Fixs race condition on loadStore
Fixs check for updates address null validation
* Adds ensureOnceAsync for getGnosisSafeInstanceAt
Adds batch request for safe params
* Removes unnecessary checkAndUpdateSafe from checkForUpdates, now the safe gets updated when a transaction arrives
* Fixs ensureOnce/memoization
* refactor: make a generic generateBatchRequest method
Create a generic method to easily build web3 batch requests
* refactor: use `generateBatchRequest` in `getTokensBalances`
* Removes .toJS in edit entry
* Removes web3 from sendTransactions
Removes pascal case FetchTokens
* Replaces /layout import
* Replaces CheckForUpdates component with useCheckForUpdates hook
* Makes FetchTokens a hook
* Removes getSafeParamsBatch, now the safes gets the data using the generic generateBatchRequests
* Replaces INITIAL_STATUS with INITIAL_STATE
* Replaces regex
Adds spaces before return
* Adds wrapInSuspense
* Runs prettier
* Makes checkAndUpdateSafe use generateBatchRequests
* Makes checkAndUpdateSafe use generateBatchRequests
* Fixs check for updates with null address
* Fixs transaction details getNameFromAddressBook
* Fixes zIndex between cookies banner and transaction details
* fix: cast returned values to number
Original code was expecting a BN instance, now it's a plain string.
* Fix replace owner name
* Fix race condition with adbk load
* Fixes replaces owner
* Fixs apps
* Moved hooks into own folder
* Moved LoadStore to routes.js
Refactors LoadStore as Hook
Move LoadStore to hooks folder
* Moves useLoadStore to safes/index
* Revert loadStore place change
* Fixes bug with fetchEtherBalance that causes updateSafe to be called
* remove useLoadStore, add useAnalytics hook
* remove React.memo from SafeView
* Reverts removing useLoadStore in order to maintain the consistency of the code
* rewrite useLoadStore in a more hook-y way, rename it to useLoadSafe
* Removes unnecessary setSafeLoaded
* Removes unnecessary safeLoaded
* fix: Coins values and balances
The app was retrieving ERC20 tokens information from 3 different endpoints.
- One from `balance/` to have the list updated
- another from `balance/usd` to have the values in USD
- the last one from the blockchain, to update the balances
This was all simplified to `balance/usd`.
Also, added a `currencyRate` to be updated when the currency is modified.
The value calculation happens on a component level, so when the `balanceUsd` value is modified, the value is properly reflected on the screen.
Refactored `activateTokensByBalance` to `fetchSafeTokens`, as this was doing quite more than just _activating_ and also added the `currencyList` calculation in it, so everything is updated when `balance/usd` endpoint is requested.
* fix: Balance screen
Collectibles weren't loading when clicking on the link
Also, refactored setState usage, to properly update current state
* fix: featuresEnabled undefined
* fix: add/activate newly received tokens
* fix: NaN Values in Coins for a newly loaded Safe
Was failing to set a default value for the `currencyRate`
* fix: Settings fails to load if `owners` is not loaded into store
Added a `Loader` until the required Safe's data is loaded into store.
* fix: prefetch txs data
When building the Txs list, we requested data for every tx what was translated into several RPC calls.
Now by _batchRequesting_ all the information on beforehand, Safe's loading is a bit faster.
* fix: prevent requesting safe, when there's no safe available in the store
* enhancement: fetch tokens when loading safe
By doing this, when loading a safe in the balance screen we will have tokens immediately loaded into the coins list
* fix: load collectibles when switch to collectibles screen
Collectibles weren't loaded when clicking menu link for a newly loaded safe.
Now every switch to the collectible's screen will trigger a fetch for collectibles.
* fix: fetch only if safe is ready
Co-authored-by: fernandomg <fernando.greco@gmail.com>
Co-authored-by: Mikhail Mikheev <mmvsha73@gmail.com>
* Fix signatures order in tx data
* extract generateSignaturesFromTxConfirmations to a separate file, rewrite test for signatures
Co-authored-by: Mikhail Mikheev <mmvsha73@gmail.com>
* Add `dotenv-expand` as a dependency
* Add app version to sidebar
* Add hardcoded latest safe version to env variables
* Add `semver` to compare current vs latest version
* Add Safe version to Safe Details
* Adjustments in version number