From 959477b56c3babadf59473f8a41fdbe30edd2fb6 Mon Sep 17 00:00:00 2001 From: iamacook Date: Wed, 22 Dec 2021 10:09:02 +0100 Subject: [PATCH 1/4] fix: Define undefined labels + poll after deeplink --- .../safe/store/reducer/gatewayTransactions.ts | 4 ++++ src/routes/routes.ts | 4 ++-- .../Transactions/TxList/TxShareButton.tsx | 6 +++--- .../Transactions/TxList/TxSingularDetails.tsx | 12 +++++++++++- .../Transactions/TxList/TxSummary.tsx | 2 +- .../TxList/hooks/useQueueTransactions.ts | 19 ++++++++++++++++++- 6 files changed, 39 insertions(+), 8 deletions(-) diff --git a/src/logic/safe/store/reducer/gatewayTransactions.ts b/src/logic/safe/store/reducer/gatewayTransactions.ts index ecc1a3e9ca..78db39730b 100644 --- a/src/logic/safe/store/reducer/gatewayTransactions.ts +++ b/src/logic/safe/store/reducer/gatewayTransactions.ts @@ -119,6 +119,10 @@ export const gatewayTransactionsReducer = handleActions { +const TxShareButton = ({ safeTxHash }: Props): ReactElement => { const txDetailsPathname = generatePath(SAFE_ROUTES.TRANSACTIONS_SINGULAR, { [SAFE_ADDRESS_SLUG]: getPrefixedSafeAddressSlug(), - [TRANSACTION_ID_SLUG]: id, + [TRANSACTION_ID_SLUG]: safeTxHash, }) const txDetailsLink = `${window.location.origin}${PUBLIC_URL}${txDetailsPathname}` diff --git a/src/routes/safe/components/Transactions/TxList/TxSingularDetails.tsx b/src/routes/safe/components/Transactions/TxList/TxSingularDetails.tsx index 92c4c8f567..f30e0b117b 100644 --- a/src/routes/safe/components/Transactions/TxList/TxSingularDetails.tsx +++ b/src/routes/safe/components/Transactions/TxList/TxSingularDetails.tsx @@ -5,7 +5,15 @@ import { shallowEqual, useDispatch, useSelector } from 'react-redux' import { TransactionDetails } from '@gnosis.pm/safe-react-gateway-sdk' import { isTxQueued, TxLocation } from 'src/logic/safe/store/models/types/gateway.d' -import { extractSafeAddress, SafeRouteSlugs, TRANSACTION_ID_SLUG } from 'src/routes/routes' +import { + extractPrefixedSafeAddress, + extractSafeAddress, + generateSafeRoute, + SafeRouteSlugs, + SAFE_ROUTES, + TRANSACTION_ID_SLUG, + history, +} from 'src/routes/routes' import { Centered } from './styled' import { getTransactionWithLocationByAttribute } from 'src/logic/safe/store/selectors/gatewayTransactions' import { TxLocationContext } from './TxLocationProvider' @@ -54,6 +62,8 @@ const TxSingularDetails = (): ReactElement => { setFetchedTx(undefined) if (!safeTxHash) { + const txsRoute = generateSafeRoute(SAFE_ROUTES.TRANSACTIONS, extractPrefixedSafeAddress()) + history.replace(txsRoute) return } diff --git a/src/routes/safe/components/Transactions/TxList/TxSummary.tsx b/src/routes/safe/components/Transactions/TxList/TxSummary.tsx index e567722b2d..f5aea98f91 100644 --- a/src/routes/safe/components/Transactions/TxList/TxSummary.tsx +++ b/src/routes/safe/components/Transactions/TxList/TxSummary.tsx @@ -30,7 +30,7 @@ export const TxSummary = ({ txDetails }: Props): ReactElement => { <> {!IS_PRODUCTION && isMultiSigExecutionDetails(txDetails.detailedExecutionInfo) && (
- +
)}
diff --git a/src/routes/safe/components/Transactions/TxList/hooks/useQueueTransactions.ts b/src/routes/safe/components/Transactions/TxList/hooks/useQueueTransactions.ts index b00bd975a2..8ad0b698ea 100644 --- a/src/routes/safe/components/Transactions/TxList/hooks/useQueueTransactions.ts +++ b/src/routes/safe/components/Transactions/TxList/hooks/useQueueTransactions.ts @@ -1,8 +1,12 @@ import { useEffect, useState } from 'react' -import { useSelector } from 'react-redux' +import { useDispatch, useSelector } from 'react-redux' +import { _getChainId } from 'src/config' +import { loadQueuedTransactions } from 'src/logic/safe/store/actions/transactions/fetchTransactions/loadGatewayTransactions' +import { addQueuedTransactions } from 'src/logic/safe/store/actions/transactions/gatewayTransactions' import { TransactionDetails } from 'src/logic/safe/store/models/types/gateway.d' import { nextTransactions, queuedTransactions } from 'src/logic/safe/store/selectors/gatewayTransactions' +import { extractSafeAddress } from 'src/routes/routes' export type QueueTransactionsInfo = { next: TransactionDetails @@ -15,6 +19,7 @@ export type QueueTransactionsInfo = { export const useQueueTransactions = (): QueueTransactionsInfo | undefined => { const nextTxs = useSelector(nextTransactions) const queuedTxs = useSelector(queuedTransactions) + const dispatch = useDispatch() const [txsCount, setTxsCount] = useState<{ next: number; queued: number } | undefined>() useEffect(() => { @@ -24,6 +29,18 @@ export const useQueueTransactions = (): QueueTransactionsInfo | undefined => { const queued = queuedTxs ? Object.entries(queuedTxs).reduce((acc, [, transactions]) => (acc += transactions.length), 0) : 0 + + // If 'queued.queued' deeplinked tx was open then queue visited before next poll + const hasDeeplinkLoaded = next === 0 && queued === 1 + if (hasDeeplinkLoaded) { + const getQueuedTxs = async () => { + const safeAddress = extractSafeAddress() + const values = await loadQueuedTransactions(safeAddress) + dispatch(addQueuedTransactions({ chainId: _getChainId(), safeAddress, values })) + } + getQueuedTxs() + } + setTxsCount({ next, queued }) }, [nextTxs, queuedTxs]) From 91fb338a08b777481163b5724b0f6f52621c74f7 Mon Sep 17 00:00:00 2001 From: iamacook Date: Wed, 22 Dec 2021 10:25:01 +0100 Subject: [PATCH 2/4] fix: Update/remove redundant comments --- src/routes/routes.ts | 3 +-- src/routes/safe/container/index.tsx | 1 - src/utils/constants.ts | 4 +--- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/routes/routes.ts b/src/routes/routes.ts index 2a6b1efd22..9dff89e34a 100644 --- a/src/routes/routes.ts +++ b/src/routes/routes.ts @@ -53,8 +53,7 @@ export const SAFE_ROUTES = { TRANSACTIONS: `${ADDRESSED_ROUTE}/transactions`, TRANSACTIONS_HISTORY: `${ADDRESSED_ROUTE}/transactions/history`, TRANSACTIONS_QUEUE: `${ADDRESSED_ROUTE}/transactions/queue`, - // RegExp route rejection, i.e. !history|queue does not work so it is important to have singular after the above two in Switches - TRANSACTIONS_SINGULAR: `${ADDRESSED_ROUTE}/transactions/:${TRANSACTION_ID_SLUG}(${hashRegExp}+)`, // [TRANSACTION_HASH_SLUG] === 'txId' + TRANSACTIONS_SINGULAR: `${ADDRESSED_ROUTE}/transactions/:${TRANSACTION_ID_SLUG}(${hashRegExp}+)`, // [TRANSACTION_HASH_SLUG] === 'safeTxHash' ADDRESS_BOOK: `${ADDRESSED_ROUTE}/address-book`, APPS: `${ADDRESSED_ROUTE}/apps`, SETTINGS: `${ADDRESSED_ROUTE}/settings`, diff --git a/src/routes/safe/container/index.tsx b/src/routes/safe/container/index.tsx index 7047eeb0c0..0e605139ab 100644 --- a/src/routes/safe/container/index.tsx +++ b/src/routes/safe/container/index.tsx @@ -72,7 +72,6 @@ const Container = (): React.ReactElement => { SAFE_ROUTES.TRANSACTIONS, SAFE_ROUTES.TRANSACTIONS_HISTORY, SAFE_ROUTES.TRANSACTIONS_QUEUE, - // Must be below the above due to :txId slug recognising history/queue SAFE_ROUTES.TRANSACTIONS_SINGULAR, ]} render={() => wrapInSuspense(, null)} diff --git a/src/utils/constants.ts b/src/utils/constants.ts index eb81ffdf6e..c8be166817 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -43,6 +43,4 @@ const isProdGateway = () => { export const GATEWAY_URL = process.env.REACT_APP_GATEWAY_URL || - (IS_PRODUCTION || isProdGateway() - ? 'https://safe-client.gnosis.io/v1' - : 'https://safe-client.staging.gnosisdev.com/v1') + (IS_PRODUCTION || isProdGateway() ? 'https://safe-client.gnosis.io' : 'https://safe-client.staging.gnosisdev.com') From d32fb34e3916a562f5b8c5f1d63a03d96f7221b8 Mon Sep 17 00:00:00 2001 From: iamacook Date: Wed, 22 Dec 2021 18:15:25 +0100 Subject: [PATCH 3/4] fix: Set label depending on current txs --- src/logic/safe/store/reducer/gatewayTransactions.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/logic/safe/store/reducer/gatewayTransactions.ts b/src/logic/safe/store/reducer/gatewayTransactions.ts index a49de77853..df1b808575 100644 --- a/src/logic/safe/store/reducer/gatewayTransactions.ts +++ b/src/logic/safe/store/reducer/gatewayTransactions.ts @@ -120,7 +120,8 @@ export const gatewayTransactionsReducer = handleActions Date: Thu, 23 Dec 2021 09:58:15 +0100 Subject: [PATCH 4/4] Fix lint --- .../Transactions/TxList/hooks/useQueueTransactions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/safe/components/Transactions/TxList/hooks/useQueueTransactions.ts b/src/routes/safe/components/Transactions/TxList/hooks/useQueueTransactions.ts index 8ad0b698ea..06c762f2c1 100644 --- a/src/routes/safe/components/Transactions/TxList/hooks/useQueueTransactions.ts +++ b/src/routes/safe/components/Transactions/TxList/hooks/useQueueTransactions.ts @@ -42,7 +42,7 @@ export const useQueueTransactions = (): QueueTransactionsInfo | undefined => { } setTxsCount({ next, queued }) - }, [nextTxs, queuedTxs]) + }, [dispatch, nextTxs, queuedTxs]) // no data loaded to the store yet if ((!nextTxs && !queuedTxs) || typeof txsCount === 'undefined') {