Skip to content

fix: copy usdt transaction id on tap - #1065

Merged
ovitrif merged 3 commits into
masterfrom
fix/usdt-txid-copy
Oct 21, 2026
Merged

ovitrif merged 3 commits into
masterfrom
fix/usdt-txid-copy

Conversation

@ovitrif

@ovitrif ovitrif commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #1058
Twin: synonymdev/bitkit-android#1640

Description

  • Makes the Transaction ID in USDT activity details tappable: a tap copies the Arbitrum transaction hash and shows the "Copied To Clipboard" toast, the same as on-chain bitcoin activity. Before, a tap did nothing and only the system long-press text selection could copy it (needed in practice when a seller pastes the hash into a Pubky Market refund record).
  • Arbiscan link: Details already has an "Open Block Explorer" button that opens the transaction on arbiscan.io, for sent and received transfers, so this PR adds no second link. Renaming that button to "Open in Arbiscan" would need a new string and translations; left as an option for design.

Out of Scope

  • USDT deposit history: the "Transaction ID · Arbitrum One" field there keeps its text selection.
  • Other USDT detail fields (From and To address, bridge references) keep their text selection.

Design

N/A — matches the existing on-chain transaction ID behavior.

Preview

Before: tapping the Transaction ID does nothing. After: the tap copies it and shows the toast.

Before After
Before (2x)

ios-before-2x.mp4

After (2x)

ios-after-2x.mp4

QA Notes

Journeys

  • updated usdt-bridge-details.xml (on the fixture transfer: tap the transaction ID, toast and clipboard)

Manual Tests

N/A

Automated Checks

  • ran SwiftFormat lint and a simulator build

@ovitrif ovitrif added this to the 3.1.0 milestone Oct 20, 2026
@ovitrif ovitrif self-assigned this Oct 20, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-20T23:20:42.583898Z 4a72fad PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@ovitrif
ovitrif requested review from a team, ben-kaufman and coreyphillips and removed request for a team October 20, 2026 23:19

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4a72fad2cd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Bitkit/Views/Wallets/UsdtActivityDetail.swift
@greptile-apps

greptile-apps Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] This PR appears safe to merge.

Summary

Makes the transaction ID in USDT activity details tappable.

  • USDT activity transaction IDs copy when tapped.

No actionable issues found. Checks were limited to source review; native UI capture was blocked by the Linux environment.

Reviews (1) · Last reviewed commit: "fix: copy usdt transaction id on tap" · Reviewed by Greptile

@talosmachina talosmachina left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No findings. Makes the USDT Details transaction ID a plain button that copies the hash and shows the common__copied toast, the same as InfoSection in ActivityExplorerView. Reviewed 4a72fad, full tier, reasoned from the code and CI (iOS does not build on this reviewer's Linux host).

What I checked, and 3 candidates I ruled out

Read in full: UsdtActivityDetail.swift, UsdtSupportActions.swift, ActivityExplorerView.swift (InfoSection)
Call sites traced: UsdtActivityDetail(transferId:) in MainNavView.swift:545, SendSheet.swift:259, UsdtWalletScreen.swift:100
CI: SwiftFormat, validate and Greptile green; Run Tests, Integration Tests and build-local still pending at review time

Ruled out

  • Missing AppViewModel in the sheet presentations: two of the three call sites present the view in a .sheet, but UsdtSupportActions already reads @EnvironmentObject app inside this same view on those paths, so the object reaches the sheet.
  • Toast hidden behind the sheet: toasts go through the app-wide ToastWindowManager window, not the presenting view.
  • Arbiscan link missing for incoming transfers: incoming with deposits configured gets the secondary explorer button in the scroll view, everything else gets the bottom one, so both directions keep a link, as the description says.
  • No journey references the removed text selection or the new UsdtActivityTxId identifier.

Merge confidence: 4/5, the unit and build jobs had not finished and nothing exercises the tap.

@ovitrif

ovitrif commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator Author

Pushed 8d32f4f: usdt-send-review-and-details.xml now taps the transaction ID and checks the "Copied To Clipboard" toast and the clipboard, as the Codex review asked. Same step on the Android twin (synonymdev/bitkit-android#1640, a8fc402d6).

@ovitrif

ovitrif commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator Author

Pushed c59bfd3: the transaction ID copy step moved to usdt-bridge-details.xml, which runs on a fixture transfer, so no USDT history is needed; the earlier step in usdt-send-review-and-details.xml is removed. Same wording on both twins.

@jvsena42 jvsena42 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code scan at c59bfd3: no issues found.

  • Right value: tapping the field copies the transaction hash it shows, the same one Open Block Explorer opens. It's not the bridge reference and not a URL.
  • Coverage: every USDT transfer that has a hash gets it: send, receive, cross-network bridge send, and failed or refunded bridge transfers.
  • Feedback: the existing "Copied To Clipboard" toast, with no new strings. The field is a single tappable element, and UsdtActivityTxId is shared across platforms.
  • Journey: usdt-bridge-details.xml gets the same new action on both platforms.
  • Not covered: refund and deposit-history ids still copy by long-press only, which the PR lists as out of scope.

Device gate (partial): c59bfd3 — not run yet. Pending: usdt-bridge-details.xml on the fixture. Tap UsdtActivityTxId and check the toast, the full hash on the clipboard, and that it matches the explorer URL; repeat on a received and a refunded transfer.

Device results will follow in a separate review.

@jvsena42 jvsena42 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Device gate passed on the USDT fixture (iPhone 17 simulator). Approving; my earlier code scan found no issues.

Ran usdt-bridge-details.xml actions 9-11, including the new UsdtActivityTxId action. Each tap showed the "Copied To Clipboard" toast and put the full 66-character hash on the clipboard (simctl pbpaste), and it matched the hash in the Open Block Explorer URL:

  • Delivering bridge to Tron: the source tx hash, which equals the orchestra order's sourceTxHash.
  • Received transfer: the fixture funding tx.
  • Sent Arbitrum transfer: the send tx.
  • Refunded bridge: the source hash, as in its explorer URL.
  • Refund receipt (Received +3.50): the refund tx hash.

The summary and Details steps of the journey (actions 9-10) also passed.

Device gate: c59bfd3 — journeys: 3 passed, 0 failed (usdt-bridge-details.xml actions 9-11, plus 5 transfer kinds); not run: actions 1-8 and 12-18 (unchanged by this PR) and a failed bridge (refunded covers the same layout); Android: pending on synonymdev/bitkit-android#1640.

@ovitrif
ovitrif merged commit c8424b7 into master Oct 21, 2026
20 checks passed
@ovitrif
ovitrif deleted the fix/usdt-txid-copy branch October 21, 2026 12:45
@ovitrif

ovitrif commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator Author

@jvsena42 thanks, merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: usdt transaction id can't be copied from activity details

3 participants