* Add types for redux actions (#1737)
* solve errors after rebase
- added `isStoredTransaction` to differentiate tx provided to `isCancelTransaction`
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* Add types + loadGateway transactions cosumer
* add client-gateway endpoints to networks configs
* add client-gateway getters
* WIP: consume gateway-client endpoint
- added the history transactions to the store
- updated types to `/queued` and `/history` endpoints
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* add queued transactions to the store
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* add queued transactions selectors
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* WIP: display history transactions
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* WIP: arrange lists queue/history
* prevent loading data from txs-service
* cherry-pick TokenTransferAmount component
* extract queue transactions logic into a hook `useQueueTransactions`
* Add TxType and TokenTransferAmount components
Co-authored-by: fernandomg <fernando.greco@altoros.com>
* wip: history transactions
* wip: use grid to display list content
* wip: use Accordion
* wip: tx history
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* wip: tx details
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* wip: TxInfo
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* wip: TxSummary
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* wip: TxSettingsInfo
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* Wip: style owners list
Co-authored-by: fernandomg <fernando.greco@altoros.com>
* wip: Owners List
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* wip: TxInfoCreation
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* wip: stop using backOff for client-gateway requests
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* refactor
reorganize files and components
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* refactor
- Accordion implementation
- extract summaryContent to a reusable component
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* Fix prettier issue in src/config/index
* add methods names and descriptions to collapsed row
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* wip: split components to render tx-data depending on the tx type
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* add multiSend tx details
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* refactor TxData
- separate into specified components `HexEncodedData`, `MethodDetails` & `MultiSendDetails`
* remove unused imported type
* wip: infinite-scroll
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* refactor `ADD_HISTORY_TRANSACTIONS` reducer
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* implement infinite scroll pagination
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* avoid defining `page_url` param
* refactor InfiniteScroll implementation
- created a wrapper component to simplify interface
- rearranged code
* add `missingSigners` key to `ExecutionInfo` type
* add `lodash.get`
* update `useTransactionStatus` hook to support queued transactions
* use `lodash.get` to access queued objects
* add votes info to TxCollapsed
* add TxQueueCollapsed
- also update the usage of `useTransactionStatus` hook
* split `TxRow` into `TxHistoryRow` and `TxQueueRow`
* use `txLocation` instead of `title` for `QueueTxList` component
* make `TxDetails` generic
* fix queue list elements arrangement
* export `useTransactionDetails` return type
[skip ci]
* wip: group txs by nonce
[skip ci]
* request tx details on demand
[skip ci]
* display cancelling message in queued transactions only
[skip ci]
* wip: implement tree view for grouped transactions
* styled components
- reorganized
- added comments where necessary
- refactored
* refactor QueueTxList
[skip ci]
* update styled-component
[skip ci]
* refactor
- Accordion implementation
- extract summaryContent to a reusable component
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* update safe-react-components
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* update styled-component
[skip ci]
* fix most-recent list of history transactions update
* make queued transactions list scrollable
* make scrollableTarget a const
* styles fixes
- queued grouped transactions styles
- add styles to scrollbar in scrollable areas
* add safe apps info to tx lists
* wip: add action buttons to tx details
* fix column distribution for transactions rows
* display action count for multiSend transactions
* TxExpandedActions
* add action buttons
- also did a slight refactor around grouped vs. not-grouped transactions
* fix txDetails selector
* adapt button to current SRC specs
* wip: action buttons "action"
- TODO: handle the store update -> screen refresh
* fix execution/confirmation conditions
- fixed modals conditions for execution when last confirmation is able to execute
* fix tree view (no <p> as descendant of <p>)
* wip: handle transactions actions through a context provider
* provide txLocation through context
* fix `react-hooks/exhaustive-deps` warnings
* Sort history list
* Add objects utils
* add `lodash.merge` as a dependency
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* update `ADD_QUEUED_TRANSACTIONS` reducer
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* implement pagination for `queued` transactions
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* prevent rendering action modal if `txDetails` is not available
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* pending status for tx execution
* small style-based behavior fixes
* allow to identify txs to be replaced
* redirect to `gatewayTransaction`
* adjust behavior for grouped vs individual transactions
* add help links
* display execute action only when threshold is reached
* make `setActiveHover` required
* prevent `<p />` as child of `<p />`
* fix cards background colors
* revert staging config
* fix linting errors
* prevent using `no-owner` class in history list
* add `PENDING` status to confirmation transactions
This will mark as _pending_ a transaction by its id, the rest of the txs that share same nonce will remain untouched
* unify action buttons status
- created `useActionButtonsHandler` hook
- extracted `CollapsedActions` into `TxCollapsedActions` component
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* fix wording
* fix pending status
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* fix close Action modal
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* extract `addressInList` as a util function
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* fix action buttons' "disabled" status condition
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* provide proper `to` and `value` for `processTransaction` based on Transfer Type (ERC20, ERC721 or ETHER)
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* update queued transactions pointers if we reached the last page
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* use `as string` for `next` pointer
- also fixed typo
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* add JSDocs
* explicitly discard unused client-gateway headers
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
Co-authored-by: nicosampler <nf.dominguez.87@gmail.com>
* add loading status to the queue transactions list
* fix tx actions after rebase of v2.19.1
* fix issue with safe data update
* fix types issues
* skip `isCancelTransaction` tests
* fix loading status for queue transactions
* Update notifications for tx-list v2 (#1839)
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* use `sameString` to verify `method` value
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* TxDetails refactor cancelTxDetails condition
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* remove unused TxType component
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* remove unused `isReadyToExecute` function
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* Fix eslint
* Update txs details after `PENDING` status update
* remove log
* Fix send transaction because of removed notification message
* Cleanup pending unwanted notifications
* wip: ellipsis actions
* wip: ellipsis actions - fix tokenAmount
* Refactor to txInfoDetails
* refactor `TxInfoDetails`
* remove old `utils.tsx` file
* support SpendingLimit transactions
* fix `isSpendingLimitMethod`
* Fix styles for tx list v2 (#1859)
Co-authored-by: fernandomg <fernando.greco@gmail.com>
Co-authored-by: Agustín Longoni <agustin.longoni@altoros.com>
* wip: performance enhancement
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
Co-authored-by: nicosampler <nf.dominguez.87@gmail.com>
* wip: extract data calculation to a hook
* refactor huge ternaries
* fix columns styles for small screens
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* add extra information for `Cancel` transaction identification
* undo custom selector
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
* undo custom selector
* Pass `action` by prop to TxDetails
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
Co-authored-by: nicosampler <nf.dominguez.87@gmail.com>
* Unify `processTransaction` / `createTransaction` actions
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
Co-authored-by: nicosampler <nf.dominguez.87@gmail.com>
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
* Disable send again when the user is offline
* set pending status for the executed tx only (not the group by nonce)
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
Co-authored-by: nicosampler <nf.dominguez.87@gmail.com>
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
* Use gatewayTransactions as default transaction list
* fix styles for TxDetails row
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
Co-authored-by: nicosampler <nf.dominguez.87@gmail.com>
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
* Remove old transactions list legacy code
Move gatewayTransactions within transactions folder
* Remove allTransactions legacy code
* Types
* Fix redirect after createTransaction
* fix performance issue for `ApproveTxModal`
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
Co-authored-by: nicosampler <nf.dominguez.87@gmail.com>
Co-authored-by: Agustin Pane <agustin.pane@gmail.com>
* fix asset icon size
* fix status wording
* add time tooltip
* add _breadcrumb_
* properly identify non existing nonce
* fix open cookie banner types after merge
* add isCancellation flag support
* fix expanded tx styles
Co-authored-by: Mati Dastugue <matiasdastugue@gmail.com>
Co-authored-by: Mati Dastugue <mdastugu@amazon.com>
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
Co-authored-by: nicosampler <nf.dominguez.87@gmail.com>
Co-authored-by: Mati Dastugue <matias.dastugue@altoros.com>
Co-authored-by: Agustin Pane <agustin.pane@gmail.com>
Co-authored-by: nicolas <nicosampler@users.noreply.github.com>
Co-authored-by: Agustín Longoni <agustin.longoni@altoros.com>
* Update cookie banner action and reducer
* Add cookie banner new assets
* Update cookie banner
* Update cookie banner migration
* Disable cookie banner and intercom in desktop app
* Use google analytics hook in Open Safe component
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
* 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.
* reactGA bump
* remove address from GA
* remove unneeded option
* Disable travis cache
* Set travis to use latest linux build image
* Update to use python3 dependencies
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
* Add Sentry config and ErrorBoundary Component
* Update travis file to upload sentry sourcemaps
* Add design implementation for ErrorBoundary
* Add Sentry DSN configuration for all networks
* Push sourcemaps to sentry only on staging/production build
* move isProdction to constants file
* change Button for Link
* fix redirect when safeAddress is provided but not a subpath for it.
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
* Add config for EWC and Volta
* Join tests in same file
* change price oracle in volta
* add travis config for volta and ewc
* Update travis to build xDai only in master or version release
* Add PR environment by network
* simplify some constants assignments
* Add PUBLIC_URL overwrite for PRs
* Change PULL_REQUEST condition test
* Use absolute path for PUBLIC_URL
* Fix missing https://
* Adapt EWC/Volta config to use new gasPriceOracle format
* disable openZeppeling in volta and EWC
* Deploy EWC to staging
* Fix Portis, Fortmatic and Blocknative key refactor
* Set EWC deployment to release/2.14.0
Co-authored-by: Daniel Sanchez <daniel.sanchez@gnosis.pm>
* 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>
* 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>
* Remove spaces
* Change naming convention to make clear that only edge whitespaces are removed
Fix function documentation in string util
* Add trim spaces from address input in AddToken and AddAsset
* Use validator type
* Trim spaces on Safe App links
Co-authored-by: Mati Dastugue <mdastugu@amazon.com>
Co-authored-by: Mati Dastugue <matias.dastugue@altoros.com>
Co-authored-by: Mikhail Mikheev <mmvsha73@gmail.com>
* Checksum addresses when build address book from localStorage
Checksum owner's addresses when build safe from localStorage
* ChecksumAddresses when add new addressBook entry
ChecksumAddresses when add new owner
ChecksumAddresses when replaces owner
* Adds checksumAddress function
Replaces old web3 usage with checksumAddress
* Refactors all web3.utils.toChecksumAddress with checksumAddress()
* Fix duplicating var name
* Fix 850
* Fix 853
* Apps flag using string value
* Fix unresponsive app when switching to another app
* Fix Apps send TX
* Confirmation Modal, correct app name
* 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>
* offchain signatures wip
* offchain signing wip
* offchain signatures wip
* offchain signatures wip
* save signatures to the history service
* fix eth signer & useEfefct hook
* offchain signatures wip
* signature check, mainnet testing wip
* dep update
* disable offchain signing for smart contract wallets
* Refactor EIP712 signer
* bring back .env.example
* Check if save version is >1.1.1
* use canTryoffchainSigning boolean variable, add comment about 4001 error
* move semver selector for safe version/offchain signatures to a constant, make use of empty_data for isContractWallet
* remove TYPE when sending txs to history service
* add eth_signTypedData_v4 signer, dep bump, add missing await
* add comments about version check for canTryOffchainSigning variable
* hide "please sign notification"
* dep bump
* dep bump
* Check if connected is ledger before trying offchain signatures
* minor fixes, temp deployment to test trezor
* add hardwareWallet boolean property to wallet model, disable offchain signatures for hw wallets
* add personal signer
* prettier fixes
* offchain signatures fixes
* Generates a cache to avoid multiples getHumanFriendlyToken() for the same token address
* Adds etags implementation for transactions
* Caches outgoing and incoming safe transactions based on etag value
* Removes cachedSafeTransactions, cachedSafeIncommingTransactions
* Refactors getTokenInstance
* Avoid recreating tokens on fetchTokens() once we have them in redux
* Fixs error on catch
* Batch request tokens balances
* Fixs missing token names
Changes the tokens limit from 300 to 3000
* fix: failed to instantiate non-standard ERC-20 tokens
For the batchRequest of balances, we're just using the `balanceOf` method call. So having a simple ABI with that only method prevents errors with non-standard ERC-20 Tokens.
* Removes unnecessary action updateSafeThreshold
Removes unnecessary action fetchEtherBalance
* Updated comments in code
Replaces constant with directly dispatching action
* BatchRequest done right
* fix: invalid action name `savedToken` -> `saveToken`
* Renames getTokenInstance to getTokenInfos
Fixs first load of transactions are empty
* Move fetchTokenBalances to `Balances` and `SendModal` components
* fix: Incoming transaction type
Backend now changed the type from 'incoming' to one of: `'ERC721_TRANSFER', 'ERC20_TRANSFER', 'ETHER_TRANSFER'`
* fix: tokenInstance `symbol` and `decimal` extraction
* Fix property name `decimals` instead of `tokenDecimals`
* Standardize non-standard ERC20 tokens discovery
* fix: isStandardERC20
* Revert "Move fetchTokenBalances to `Balances` and `SendModal` components"
This reverts commit ed84bd92
* Fixs Typo INCOMING_TX_TYPES
Renames tokenInstance with localToken
* Renames getBatchBalances to getTokenBalances
Returns saved tokens instead of tokenInstance in getTokenInfos
* Remove promise returns
Co-authored-by: fernandomg <fernando.greco@gmail.com>
* Add Assets sections
* (add) collectibles tab
* (add) criptokitty items
* (add) collectible items, definitive edition
* (fix) collectibles were overlapping with bottom banner
* (fix) wording
* (fix) responsive issues
* Install `async-sema` dependency
* Create collectible source classes
- source from mocked data and opensea, it's extendable to import information from other sources
* Update `Collectible` implementation to use new data source
* Create constants file to better handle env variables and default values
* Add description to item's cards
- also added a mocked class with real data
* Fix `saveTxToHistory`, remove hardcoded `CALL`
* Fix after merge development
* Set background color for collectible based on data info
- Changed `withStyles` in favor of a hook-like approach with `makeStyles`
* Enhance collectible card info and group title
* Use current safeAddress to query for collectibles information
- also migrated from `withStyles` to `makeStyles`
* Use proper key values for lists and set more significant names
* update yarn.lock after merge
* Fix linting error
* Move ethAsToken verification outside loop
* Use absolute route for `SendModal` import
* Move Collectibles into redux store
* Update yarn.lock file
* Selectable NFTs
* Divide the `collectible` store into `nftAssets` and `nftTokens`
- Also updated components to retain functionality
- Created a `textShortener` function for better presentation
* Update `yarn.lock`
* Update `yarn.lock`
* Fix item background color
* Clears the tokenID select field when the collectible selected changes
* Open Send modal from the assets section
* Use token name for the token selection dropdown
* Add openZeppelin contracts dependency
* Create ERC721 getter
* Fix types, default values and clean code
* Fix: properly refresh list of collectibles when switching safes
* Add ReviewCollectible step in send NFT
* Change items shadow
* Give option to choose what to send by clicking 'Send' button in AddressBook
* Disable [Send] button for Collectibles if not owner
* Set Coins as default option in assets tab
- also fixed styles for `Coins` option
* Use collectible icon in send modal
* Set default message when no assets available
- removed pagination feature
* Create SafeVersionProvider to better handle version-related tasks
Provides:
- current and latest versions,
- a boolean indicating a need for update,
- an upgradeSafe callback to trigger upgrade from any place,
- a list of enabled features, depending on the current version
- the latter needs a refactor like extract features outside the provider
and define constants for the features.
* Force build
* Update `yarn.lock`
* Disable Manage list for NFTs
* Fix container shadow
- Also fixes tables shadow, thanks to @gabitoesmiapodo
* Enable nested routes for balances (assets) tab
* Default to `/balance` if invalid nested path
* Disable [Send Collectible] button, if not supported by safe
* Change sub-menu buttons to clickable text
* Replace Paragraph with Link
* Fix invalid props errors for Link component
* Fallback to `transferFrom` if `safeTransferFrom` is not implemented
* Use `transfer` as fallback to ERC-721's `safeTransferFrom`
- need to identify ERC721 token using `transfer` and `name` methods
* Display failed transactions
* Use react.lazy for collectibles' modals
* Identify ERC-721 token transaction
* Fix Send Collectibles modal layout/behavior
- disable dropdown list if there's no item to pick
- fix placeholder for tokens list
- fix dropdown list styles
* Set default `isSuccessful` flag to `true`
* Save version related values into store
- each safe has its `currentVersion`, `needsUpdate` and `featuresEnabled`
- and safes store has the `latestMasterContractVersion`
* Migrate Balance to use store-provided values
* Migrate Settings to use store-provided values
* Migrate ChooseTxType to use store-provided values
* Remove SafeVersionProvider
Co-authored-by: Gabriel Rodriguez Alsina <gabriel.rodriguez@altoros.com>
Co-authored-by: apane <agustin.pane@gmail.com>
* Prevent notifications from showing after loading safe
* Make a safe-based sessionStorage control
* Show notifications for new Safes and prevent displaying oldest incoming tx for newly loaded Safe
* Create `currentSession` state
* Add `currentSession` to the Store
* Initialize `currentSession`
* Use `currentSession` to handle notifications for incoming Transactions
* Remove `updateUserStatus`
* Move the load of the current session from storage to app startup
* Fix duplicated reducer id
* Adapt notificationsMiddleware
* Add `blockNumber` to transactions model
* Create `incomingTransaction` node in store and load it along with `transactions`
* Add incoming transfers to the Transactions table
* Rename `transactionHash` to `executionTxHash` for better incoming/outgoing txs unification in Transactions table
* Add incoming transactions details
* Add transaction type icon in table row
* Add snackbar notification for incoming txs
* Make incoming transaction snackbar to show on any tab
* Use makeStyles hooks
* Fix incoming amounts conversion from wei
* Make concurrent promise calls
* Use date to calculate transactions ids
* Prevent repeating messages
- also move logic to display snack bar into the notifications middleware
* Merge transactions and incomingTxs to the transactions selector
* Show 'Multiple incoming transfers' if they are more than 3
* Prevent incoming transactions snack bar for first-timer users
* Set ID as the default order
* Use constant for _incoming_ type
* Dep bump
* Fetch transactions when safe view is mounted
* eslint fix
* Calculate new tx nonce from latest tx in service
* Fix tx cancellation, allow passing nonce to createTransaction
* dep bump
* Refactor createTransaction/processTransaction to use object as argument
* Adopting transactions table to new send tx flow with predicted nonces
* dep bump, disable esModule in file-loader options after new v5 release
* Don't show older tx annotation for already executed txs
* sort tx by nonce
* get new safe nonce after tx execution
* Bugfixes
* remove whitespace for showOlderTxAnnotation
* Adds google analytics tracking for every route
* Adds cookies acceptance check before tracking
* Fix react-ga dependency
* Fix cookieStore deletion
* Merge with #189-cookie-banner
* Fixs react ga version
Refactored HOC with hooks
* Fix TYPO
* Fix path for cookies utils
* Fix imports
* remove flow type definition for polish
* Add GA ID log
* Fix load GA After cookies acceptance
* Implements intercom
Adds REACT_APP_INTERCOM_ID_MAINNET and REACT_APP_INTERCOM_ID_RINKEBY env vars
* Adds .env.example
* Adds intercom env vars
* Updates env vars
Replaces "rinkeby" and "mainnet" with "non-production" and "production"
* Now loads intercom after the user accepted the analytics
* Add env variable for production intercom id
* Update .env.example
* Removes react-intercom
Fixs getIntercomId with default dev appID
Now loads intercom as script
* Renegerate flow-types