Skip to content

Commit

Permalink
create transaction status enum
Browse files Browse the repository at this point in the history
  • Loading branch information
rodrigoncalves committed Aug 29, 2023
1 parent b3caedb commit f549ea1
Show file tree
Hide file tree
Showing 8 changed files with 36 additions and 38 deletions.
4 changes: 3 additions & 1 deletion src/redux/slices/currentTransactionSlice/types.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import { TransactionStatus } from 'screens/transactionSummary/types'

export interface TransactionInformation {
status: 'NONE' | 'USER_CONFIRM' | 'PENDING' | 'SUCCESS' | 'FAILED'
status: TransactionStatus
to?: string
value?: string
symbol?: string
Expand Down
7 changes: 5 additions & 2 deletions src/redux/slices/transactionsSlice/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {
ModifyTransaction,
TransactionsState,
} from 'store/slices/transactionsSlice/types'
import { TransactionStatus } from 'screens/transactionSummary/transactionSummaryUtils'
import { TransactionStatus } from 'screens/transactionSummary/types'
import { filterEnhancedTransactions } from 'src/subscriptions/utils'
import { resetSocketState } from 'store/shared/actions/resetSocketState'
import { UsdPricesState } from 'store/slices/usdPricesSlice'
Expand Down Expand Up @@ -168,7 +168,10 @@ const transformTransaction = (
...transaction,
isBitcoin: true,
symbol: '',
status: transaction.confirmations > 0 ? 'success' : 'pending',
status:
transaction.confirmations > 0
? TransactionStatus.SUCCESS
: TransactionStatus.PENDING,
to: transaction.vout[0].addresses[0],
valueBtc: utils.formatUnits(BigNumber.from(transaction.value), 8),
id: transaction.txid,
Expand Down
4 changes: 2 additions & 2 deletions src/redux/slices/transactionsSlice/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
} from '@rsksmart/rif-wallet-services'

import { TokenSymbol } from 'screens/home/TokenImage'
import { TransactionStatus } from 'screens/transactionSummary/transactionSummaryUtils'
import { TransactionStatus } from 'screens/transactionSummary/types'
import { IEvent } from 'src/subscriptions/types'

export interface TransactionsServerResponseWithActivityTransactions
Expand All @@ -25,7 +25,7 @@ export interface IBitcoinTransaction {
to: string
symbol: string
blockTime: number
status: 'success' | 'pending'
status: TransactionStatus
isBitcoin: boolean
id: string
sortTime: number
Expand Down
39 changes: 14 additions & 25 deletions src/screens/send/transferBitcoin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
import { TokenSymbol } from 'screens/home/TokenImage'

import { OnSetCurrentTransactionFunction, OnSetErrorFunction } from './types'
import { TransactionStatus } from '../transactionSummary/types'

interface ITransferBitcoin {
bip: BIPWithRequest
Expand All @@ -33,7 +34,7 @@ export const transferBitcoin = ({
onSetError(null)
}
if (onSetCurrentTransaction) {
onSetCurrentTransaction({ status: 'USER_CONFIRM' })
onSetCurrentTransaction({ status: TransactionStatus.USER_CONFIRM })
}
const satoshisToPay = convertBtcToSatoshi(btcToPay.toString()).toNumber()

Expand All @@ -48,36 +49,24 @@ export const transferBitcoin = ({
.then(async txIdJson => {
if (txIdJson.result) {
// success
if (onSetCurrentTransaction) {
//@TODO: make the status a constant value
onSetCurrentTransaction({
status: 'PENDING',
to,
value: satoshisToPay.toString(),
hash: txIdJson.result,
symbol: TokenSymbol.BTC, // @TODO should use bitcoin symbol of current transaction
})
}
//@TODO: make the status a constant value
onSetCurrentTransaction?.({
status: TransactionStatus.PENDING,
to,
value: satoshisToPay.toString(),
hash: txIdJson.result,
symbol: TokenSymbol.BTC, // @TODO should use bitcoin symbol of current transaction
})
// fetchUtxo() we should refresh Utxo
} else {
if (txIdJson.error) {
if (onSetCurrentTransaction) {
onSetCurrentTransaction({
status: 'FAILED',
})
}
if (onSetError) {
onSetError(txIdJson.error)
}
onSetCurrentTransaction?.({ status: TransactionStatus.FAILED })
onSetError?.(txIdJson.error)
}
}
})
.catch(err => {
if (onSetError) {
onSetError(err.toString())
}
if (onSetCurrentTransaction) {
onSetCurrentTransaction(null)
}
onSetError?.(err.toString())
onSetCurrentTransaction?.(null)
})
}
9 changes: 5 additions & 4 deletions src/screens/send/transferTokens.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
OnSetErrorFunction,
OnSetTransactionStatusChange,
} from './types'
import { TransactionStatus } from '../transactionSummary/types'

interface IRifTransfer {
token: ITokenWithBalance
Expand All @@ -36,7 +37,7 @@ export const transfer = async ({
}: IRifTransfer) => {
onSetError?.(null)
onSetCurrentTransaction?.({
status: 'USER_CONFIRM',
status: TransactionStatus.USER_CONFIRM,
feeSymbol: feeToken?.symbol,
})

Expand Down Expand Up @@ -72,19 +73,19 @@ export const transfer = async ({
value: amount,
symbol: transferMethod.symbol,
hash: txPending.hash,
status: 'PENDING',
status: TransactionStatus.PENDING,
feeSymbol: feeToken?.symbol,
}
onSetCurrentTransaction?.(current)

const contractReceipt = await waitForTransactionToComplete()
onSetCurrentTransaction?.({ ...current, status: 'SUCCESS' })
onSetCurrentTransaction?.({ ...current, status: TransactionStatus.SUCCESS })
onSetTransactionStatusChange?.({
txStatus: 'CONFIRMED',
...contractReceipt,
})

onSetCurrentTransaction?.({ ...current, status: 'FAILED' })
onSetCurrentTransaction?.({ ...current, status: TransactionStatus.FAILED })
onSetTransactionStatusChange?.({
txStatus: 'FAILED',
...txPendingRest,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import {
TransactionStatus,
transactionStatusDisplayText,
transactionStatusToIconPropsMap,
} from './transactionSummaryUtils'
} from './types'

import { TransactionSummaryScreenProps } from '.'

Expand Down
2 changes: 1 addition & 1 deletion src/screens/transactionSummary/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { selectWallet, setFullscreen } from 'store/slices/settingsSlice'
import { TokenFeeValueObject } from 'store/slices/transactionsSlice'
import { useAppDispatch, useAppSelector } from 'store/storeUtils'

import { TransactionStatus } from './transactionSummaryUtils'
import { TransactionStatus } from './types'

export interface TransactionSummaryScreenProps {
transaction: {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
import { sharedColors } from 'shared/constants'

export enum TransactionStatus {
SUCCESS = 'success',
PENDING = 'pending',
NONE = 'NONE',
USER_CONFIRM = 'USER_CONFIRM',
PENDING = 'PENDING',
SUCCESS = 'SUCCESS',
FAILED = 'FAILED',
}

export const transactionStatusToIconPropsMap = new Map([
Expand Down

0 comments on commit f549ea1

Please sign in to comment.