diff --git a/src/app/components/confirmBtcTransaction/index.tsx b/src/app/components/confirmBtcTransaction/index.tsx index 662feb83c..3a316abcd 100644 --- a/src/app/components/confirmBtcTransaction/index.tsx +++ b/src/app/components/confirmBtcTransaction/index.tsx @@ -48,6 +48,7 @@ type Props = { outputs: btcTransaction.EnhancedOutput[]; feeOutput?: btcTransaction.TransactionFeeOutput; runeSummary?: RuneSummary; + showCenotaphCallout: boolean; isLoading: boolean; isSubmitting: boolean; isBroadcast?: boolean; @@ -76,6 +77,7 @@ function ConfirmBtcTransaction({ outputs, feeOutput, runeSummary, + showCenotaphCallout, isLoading, isSubmitting, isBroadcast, @@ -205,6 +207,7 @@ function ConfirmBtcTransaction({ outputs={outputs} feeOutput={feeOutput} isPartialTransaction={isPartialTransaction} + showCenotaphCallout={showCenotaphCallout} getFeeForFeeRate={getFeeForFeeRate} onFeeRateSet={onFeeRateSet} feeRate={feeRate} diff --git a/src/app/components/confirmBtcTransaction/transactionSummary.tsx b/src/app/components/confirmBtcTransaction/transactionSummary.tsx index 20604d20c..b54f3c913 100644 --- a/src/app/components/confirmBtcTransaction/transactionSummary.tsx +++ b/src/app/components/confirmBtcTransaction/transactionSummary.tsx @@ -34,6 +34,7 @@ const WarningCallout = styled(Callout)` type Props = { isPartialTransaction: boolean; + showCenotaphCallout: boolean; inputs: btcTransaction.EnhancedInput[]; outputs: btcTransaction.EnhancedOutput[]; feeOutput?: btcTransaction.TransactionFeeOutput; @@ -49,6 +50,7 @@ type Props = { function TransactionSummary({ isPartialTransaction, + showCenotaphCallout, inputs, outputs, feeOutput, @@ -127,6 +129,9 @@ function TransactionSummary({ {isUnConfirmedInput && ( )} + {showCenotaphCallout && ( + + )} {runeSummary?.mint && !runeSummary?.mint?.runeIsOpen && ( )} diff --git a/src/app/screens/confirmBtcTransaction/index.tsx b/src/app/screens/confirmBtcTransaction/index.tsx index 61a9eb014..ce9985a8f 100644 --- a/src/app/screens/confirmBtcTransaction/index.tsx +++ b/src/app/screens/confirmBtcTransaction/index.tsx @@ -242,7 +242,7 @@ function ConfirmBtcTransaction() { description={t('BTC_TRANSFER_DANGER_ALERT_DESC')} buttonText={t('BACK')} onClose={onClosePress} - secondButtonText={t('CONITNUE')} + secondButtonText={t('CONTINUE')} onButtonClick={onClosePress} onSecondButtonClick={onContinueButtonClick} isWarningAlert diff --git a/src/app/screens/confirmInscriptionRequest/index.tsx b/src/app/screens/confirmInscriptionRequest/index.tsx index 6ecc408ce..be57df492 100644 --- a/src/app/screens/confirmInscriptionRequest/index.tsx +++ b/src/app/screens/confirmInscriptionRequest/index.tsx @@ -344,7 +344,7 @@ function ConfirmInscriptionRequest() { description={t('CONFIRM_TRANSACTION.BTC_TRANSFER_DANGER_ALERT_DESC')} buttonText={t('CONFIRM_TRANSACTION.BACK')} onClose={onClosePress} - secondButtonText={t('CONITNUE')} + secondButtonText={t('CONTINUE')} onButtonClick={onClosePress} onSecondButtonClick={onContinueButtonClick} isWarningAlert diff --git a/src/app/screens/restoreFunds/recoverRunes/index.tsx b/src/app/screens/restoreFunds/recoverRunes/index.tsx index 4844bb58f..cb7997505 100644 --- a/src/app/screens/restoreFunds/recoverRunes/index.tsx +++ b/src/app/screens/restoreFunds/recoverRunes/index.tsx @@ -176,6 +176,7 @@ function RecoverRunes() { inputs={summary?.inputs ?? []} outputs={summary?.outputs ?? []} feeOutput={summary?.feeOutput} + showCenotaphCallout={!!summary?.runeOp?.Cenotaph?.flaws} runeSummary={runeSummary} isLoading={isLoading} isSubmitting={isBroadcasting} diff --git a/src/app/screens/sendBtc/stepDisplay.tsx b/src/app/screens/sendBtc/stepDisplay.tsx index 0f344e71d..6caae368d 100644 --- a/src/app/screens/sendBtc/stepDisplay.tsx +++ b/src/app/screens/sendBtc/stepDisplay.tsx @@ -125,6 +125,7 @@ function StepDisplay({ inputs={summary.inputs} outputs={summary.outputs} feeOutput={summary.feeOutput} + showCenotaphCallout={!!summary?.runeOp?.Cenotaph?.flaws} isLoading={false} confirmText={t('COMMON.CONFIRM')} cancelText={t('COMMON.CANCEL')} diff --git a/src/app/screens/sendRune/stepDisplay.tsx b/src/app/screens/sendRune/stepDisplay.tsx index 3310e4151..c2870b1a5 100644 --- a/src/app/screens/sendRune/stepDisplay.tsx +++ b/src/app/screens/sendRune/stepDisplay.tsx @@ -131,6 +131,7 @@ function StepDisplay({ inputs={summary.inputs} outputs={summary.outputs} feeOutput={summary.feeOutput} + showCenotaphCallout={!!summary?.runeOp?.Cenotaph?.flaws} runeSummary={runeSummary} isLoading={false} confirmText={t('COMMON.CONFIRM')} diff --git a/src/app/screens/signBatchPsbtRequest/index.tsx b/src/app/screens/signBatchPsbtRequest/index.tsx index e71c72fdf..7916a980d 100644 --- a/src/app/screens/signBatchPsbtRequest/index.tsx +++ b/src/app/screens/signBatchPsbtRequest/index.tsx @@ -124,12 +124,8 @@ interface TxResponse { psbtBase64: string; } -type PsbtSummary = { - inputs: btcTransaction.EnhancedInput[]; - outputs: btcTransaction.EnhancedOutput[]; - feeOutput?: btcTransaction.TransactionFeeOutput | undefined; - hasSigHashNone: boolean; -}; +// TODO: export this from core +type PsbtSummary = Awaited>; function SignBatchPsbtRequest() { const { btcAddress, ordinalsAddress, selectedAccount, network } = useWalletSelector(); @@ -434,6 +430,9 @@ function SignBatchPsbtRequest() { feeOutput={parsedPsbts[currentPsbtIndex].summary.feeOutput} runeSummary={parsedPsbts[currentPsbtIndex].runeSummary} isPartialTransaction={!parsedPsbts[currentPsbtIndex].summary.feeOutput} + showCenotaphCallout={ + !!parsedPsbts[currentPsbtIndex].summary.runeOp?.Cenotaph?.flaws + } /> )} diff --git a/src/app/screens/signPsbtRequest/index.tsx b/src/app/screens/signPsbtRequest/index.tsx index dd8d0080f..c890a917d 100644 --- a/src/app/screens/signPsbtRequest/index.tsx +++ b/src/app/screens/signPsbtRequest/index.tsx @@ -1,7 +1,6 @@ import { makeRPCError, sendRpcResponse } from '@common/utils/rpc/helpers'; import ConfirmBitcoinTransaction from '@components/confirmBtcTransaction'; import RequestError from '@components/requests/requestError'; -import useBtcClient from '@hooks/useBtcClient'; import useHasFeature from '@hooks/useHasFeature'; import useTransactionContext from '@hooks/useTransactionContext'; import useWalletSelector from '@hooks/useWalletSelector'; @@ -18,6 +17,9 @@ import { RpcErrorCode } from 'sats-connect'; import useSignPsbt from './useSignPsbt'; import useSignPsbtValidationGate from './useSignPsbtValidationGate'; +// TODO: export this from core +type PSBTSummary = Awaited>; + function SignPsbtRequest() { const navigate = useNavigate(); @@ -26,10 +28,7 @@ function SignPsbtRequest() { const [isLoading, setIsLoading] = useState(true); const [isSigning, setIsSigning] = useState(false); - const [inputs, setInputs] = useState([]); - const [outputs, setOutputs] = useState([]); - const [feeOutput, setFeeOutput] = useState(); - const [hasSigHashNone, setHasSigHashNone] = useState(false); + const [summary, setSummary] = useState(); const [runeSummary, setRuneSummary] = useState(undefined); const hasRunesSupport = useHasFeature('RUNES_SUPPORT'); @@ -49,19 +48,10 @@ function SignPsbtRequest() { parsedPsbt .getSummary() - .then(async (summary) => { - const { - feeOutput: psbtFeeOutput, - inputs: psbtInputs, - outputs: psbtOutputs, - hasSigHashNone: psbtHasSigHashNone, - } = summary; - setFeeOutput(psbtFeeOutput); - setInputs(psbtInputs); - setOutputs(psbtOutputs); - setHasSigHashNone(psbtHasSigHashNone); + .then(async (txSummary) => { + setSummary(txSummary); if (hasRunesSupport) { - setRuneSummary(await parseSummaryForRunes(txnContext, summary, network.type)); + setRuneSummary(await parseSummaryForRunes(txnContext, txSummary, network.type)); } setIsLoading(false); }) @@ -138,14 +128,15 @@ function SignPsbtRequest() { /> ) : (