diff --git a/backend/src/api/websocket-handler.ts b/backend/src/api/websocket-handler.ts index 89b819b08..557d751e4 100644 --- a/backend/src/api/websocket-handler.ts +++ b/backend/src/api/websocket-handler.ts @@ -657,8 +657,8 @@ class WebsocketHandler { if (client['track-tx']) { const trackTxid = client['track-tx']; - if (txIds.indexOf(trackTxid) > -1) { - response['txConfirmed'] = 'true'; + if (trackTxid && txIds.indexOf(trackTxid) > -1) { + response['txConfirmed'] = JSON.stringify(trackTxid); } else { const mempoolTx = _memPool[trackTxid]; if (mempoolTx && mempoolTx.position) { diff --git a/frontend/src/app/bisq/bisq-transaction/bisq-transaction.component.html b/frontend/src/app/bisq/bisq-transaction/bisq-transaction.component.html index 3a23688e6..44f7b840e 100644 --- a/frontend/src/app/bisq/bisq-transaction/bisq-transaction.component.html +++ b/frontend/src/app/bisq/bisq-transaction/bisq-transaction.component.html @@ -15,11 +15,9 @@
- +
+ +
diff --git a/frontend/src/app/bisq/bisq-transfers/bisq-transfers.component.html b/frontend/src/app/bisq/bisq-transfers/bisq-transfers.component.html index 0388ea418..dc4993e90 100644 --- a/frontend/src/app/bisq/bisq-transfers/bisq-transfers.component.html +++ b/frontend/src/app/bisq/bisq-transfers/bisq-transfers.component.html @@ -70,11 +70,7 @@
- +   - - - - - - - +
diff --git a/frontend/src/app/components/transaction/transaction.component.ts b/frontend/src/app/components/transaction/transaction.component.ts index 60051634d..dd32b05e8 100644 --- a/frontend/src/app/components/transaction/transaction.component.ts +++ b/frontend/src/app/components/transaction/transaction.component.ts @@ -391,7 +391,7 @@ export class TransactionComponent implements OnInit, AfterViewInit, OnDestroy { this.blocksSubscription = this.stateService.blocks$.subscribe(([block, txConfirmed]) => { this.latestBlock = block; - if (txConfirmed && this.tx && !this.tx.status.confirmed) { + if (txConfirmed && this.tx && !this.tx.status.confirmed && txConfirmed === this.tx.txid) { this.tx.status = { confirmed: true, block_height: block.height, diff --git a/frontend/src/app/components/transactions-list/transactions-list.component.html b/frontend/src/app/components/transactions-list/transactions-list.component.html index 0d195f2ff..c509a799d 100644 --- a/frontend/src/app/components/transactions-list/transactions-list.component.html +++ b/frontend/src/app/components/transactions-list/transactions-list.component.html @@ -298,14 +298,7 @@
- - - - + + + + + + + + \ No newline at end of file diff --git a/frontend/src/app/shared/components/confirmations/confirmations.component.scss b/frontend/src/app/shared/components/confirmations/confirmations.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/frontend/src/app/shared/components/confirmations/confirmations.component.ts b/frontend/src/app/shared/components/confirmations/confirmations.component.ts new file mode 100644 index 000000000..8d14128e5 --- /dev/null +++ b/frontend/src/app/shared/components/confirmations/confirmations.component.ts @@ -0,0 +1,26 @@ +import { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core'; + + +@Component({ + selector: 'app-confirmations', + templateUrl: './confirmations.component.html', + styleUrls: ['./confirmations.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class ConfirmationsComponent implements OnChanges { + @Input() chainTip: number; + @Input() height: number; + @Input() replaced: boolean = false; + @Input() hideUnconfirmed: boolean = false; + @Input() buttonClass: string = ''; + + confirmations: number = 0; + + ngOnChanges(): void { + if (this.chainTip != null && this.height != null) { + this.confirmations = Math.max(1, this.chainTip - this.height + 1); + } else { + this.confirmations = 0; + } + } +} diff --git a/frontend/src/app/shared/shared.module.ts b/frontend/src/app/shared/shared.module.ts index 6e8d8d0f2..d24f5356e 100644 --- a/frontend/src/app/shared/shared.module.ts +++ b/frontend/src/app/shared/shared.module.ts @@ -85,6 +85,7 @@ import { SatsComponent } from './components/sats/sats.component'; import { TruncateComponent } from './components/truncate/truncate.component'; import { SearchResultsComponent } from '../components/search-form/search-results/search-results.component'; import { TimestampComponent } from './components/timestamp/timestamp.component'; +import { ConfirmationsComponent } from './components/confirmations/confirmations.component'; import { ToggleComponent } from './components/toggle/toggle.component'; import { GeolocationComponent } from '../shared/components/geolocation/geolocation.component'; import { TestnetAlertComponent } from './components/testnet-alert/testnet-alert.component'; @@ -175,6 +176,7 @@ import { ClockMempoolComponent } from '../components/clock/clock-mempool.compone TruncateComponent, SearchResultsComponent, TimestampComponent, + ConfirmationsComponent, ToggleComponent, GeolocationComponent, TestnetAlertComponent, @@ -289,6 +291,7 @@ import { ClockMempoolComponent } from '../components/clock/clock-mempool.compone TruncateComponent, SearchResultsComponent, TimestampComponent, + ConfirmationsComponent, ToggleComponent, GeolocationComponent, PreviewTitleComponent,