Skip to content

feat(suite-native): add native receive copy menu - #30823

Open
juriczech wants to merge 1 commit into
developfrom
juriczech/qr-copy-tooltip
Open

feat(suite-native): add native receive copy menu#30823
juriczech wants to merge 1 commit into
developfrom
juriczech/qr-copy-tooltip

Conversation

@juriczech

@juriczech juriczech commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Description

  • add a shared native clipboard copy menu with iOS context menu support and Android long-press fallback
  • wire receive QR/address long-press through the same copy handler as the Copy button
  • suppress the receive copy toast because the copied-address modal is shown instead
  • on copy the QR, open the bottom sheet same as if you press copy button at the bottom of the screen
  • the native long press copy button is available on iOS only, android will fallback to copy the address directly (android doesn't have useful component for this in ExpoUI; it only has this which doesn't look good for this use case)

Notes for QA

Test the things from description please.

Screenshots

Simulator.Screen.Recording.-.iPhone.17.Pro.-.2026-08-04.at.19.27.57.mov
Zaznam.obrazovky.2026-08-04.v.19.38.34.mov

🤖 LLM Test Recommendations

Summary: The changed files are all in suite-native (React Native mobile app), specifically the clipboard and receive-address modules. The available Playwright E2E candidate suite is for suite-web/suite-desktop only and does not exercise any suite-native code paths. Therefore none of the 127 candidate tests provide meaningful coverage for this change set. The risk is unmitigated by these E2E tests; mobile-native unit/component tests and manual verification would be required.

Changed files (14)
  • suite-native/app/package.json
  • suite-native/clipboard/package.json
  • suite-native/clipboard/src/components/ClipboardCopyMenu.ios.tsx
  • suite-native/clipboard/src/components/ClipboardCopyMenu.tsx
  • suite-native/clipboard/src/components/ClipboardCopyMenu.types.ts
  • suite-native/clipboard/src/hooks/useCopyToClipboard.ts
  • suite-native/clipboard/src/index.ts
  • suite-native/module-receive/src/components/ReceiveAddressActions.test.tsx
  • suite-native/module-receive/src/components/ReceiveAddressActions.tsx
  • suite-native/module-receive/src/components/ReceiveAddressCard.tsx
  • suite-native/module-receive/src/components/ReceiveAddressContent.tsx
  • suite-native/module-receive/src/components/ReceiveAddressDetails.tsx
  • suite-native/module-receive/src/hooks/useReceiveAddressCopy.ts
  • suite-native/module-receive/src/screens/ReceiveAddressDetailScreen.tsx

No test recommendations found.

⚠️ Changes with no test coverage (14)

  • suite-native/app/package.json
  • suite-native/clipboard/package.json
  • suite-native/clipboard/src/components/ClipboardCopyMenu.ios.tsx
  • suite-native/clipboard/src/components/ClipboardCopyMenu.tsx
  • suite-native/clipboard/src/components/ClipboardCopyMenu.types.ts
  • suite-native/clipboard/src/hooks/useCopyToClipboard.ts
  • suite-native/clipboard/src/index.ts
  • suite-native/module-receive/src/components/ReceiveAddressActions.test.tsx
  • suite-native/module-receive/src/components/ReceiveAddressActions.tsx
  • suite-native/module-receive/src/components/ReceiveAddressCard.tsx
  • suite-native/module-receive/src/components/ReceiveAddressContent.tsx
  • suite-native/module-receive/src/components/ReceiveAddressDetails.tsx
  • suite-native/module-receive/src/hooks/useReceiveAddressCopy.ts
  • suite-native/module-receive/src/screens/ReceiveAddressDetailScreen.tsx

Updated: 2026-08-05T09:38:44.237Z

🌐 Preview deployments

🌐 Suite Web preview: https://dev.suite.sldev.cz/suite-web/juriczech/qr-copy-tooltip/web/

🔍 Currents Test Results

🔍 Suite web test results: View in Currents

🔍 Suite native android test results: View in Currents

🔍 Suite desktop test results: View in Currents

🔒 Quarantined E2E Tests

Trezor Suite (desktop) — 2 test(s)
Test Type
Quarantine test: "Recovery - dry run,Recovery after partial recovery" 🙋 manual
Quarantine test: "Recovery - dry run,Recovery with device reconnection" 🙋 manual

Updated: 2026-08-05T09:40:23.820Z • 2 test(s) total

Trezor Suite (web) — 3 test(s)
Test Type
Quarantine test: "Recovery - dry run,Recovery with device reconnection" 🙋 manual
Quarantine test: "TrezorConnect webextension -> Suite Web,second call after popup was closed by user should work" 🙋 manual
Quarantine test: "Recovery T2T1 - dry run,Recovery after partial recovery" 🙋 manual

Updated: 2026-08-05T09:39:44.386Z • 3 test(s) total

@juriczech
juriczech force-pushed the juriczech/qr-copy-tooltip branch from b2bacc7 to 11375bd Compare August 4, 2026 17:32
@juriczech juriczech added this to Suite Aug 4, 2026
@juriczech juriczech moved this to 🔎 Needs review in Suite Aug 4, 2026
@juriczech
juriczech marked this pull request as ready for review August 4, 2026 17:40
Comment thread .yarnrc.yml
# Skip age gate for experimental, rapidly changing packages
npmPreapprovedPackages:
- "@types/invity-api@*"
- "@expo/ui@56.0.24"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

It's an expo library so I'm not too worried. Checked with AI, no vulnerabilities found.

@matejkriz

Copy link
Copy Markdown
Member

Let's check the bundle size increase, especially on Android where it is not used, but linked (can be solved by excluding from autolinking)

@juriczech
juriczech force-pushed the juriczech/qr-copy-tooltip branch from 11375bd to a77c047 Compare August 5, 2026 09:33
@trezor-bot

trezor-bot Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

✅ Previously successful run of [Test] suite-native Android E2E workflow has been found.
⏭️ Skipping tests for this run.
💡 If you are unsure about your latest changes, please rerun the workflow manually. (Use the Re-run all jobs option)

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

Labels

None yet

Projects

Status: 🔎 Needs review

Development

Successfully merging this pull request may close these issues.

2 participants