Skip to content

Conversation

@Moustafa-Koterba
Copy link
Contributor

@Moustafa-Koterba Moustafa-Koterba commented Dec 31, 2025

βœ… Checklist

  • npx changeset was attached.
  • Covered by automatic tests.
  • Impact of the changes:
    • New memo field in the recipient step, behaviour change

πŸ“ Description

What does this PR do ?

This PR implements the memo management in the new Send flow.

Context

Some chain implements a system of memo like for fiat transaction which allow to add a string to a string.
We need to implement this into the new Send flow.

What have changed

  • An input for the memo in the recipient step
  • Hooks for business logic
  • An account settings to not ask confirmation on skipping memo

Screenshots

Screenshot 2026-01-26 at 11 17 29 Screenshot 2026-01-26 at 14 53 46

❓ Context


🧐 Checklist for the PR Reviewers

  • The code aligns with the requirements described in the linked JIRA or GitHub issue.
  • The PR description clearly documents the changes made and explains any technical trade-offs or design decisions.
  • There are no undocumented trade-offs, technical debt, or maintainability issues.
  • The PR has been tested thoroughly, and any potential edge cases have been considered and handled.
  • Any new dependencies have been justified and documented.
  • Performance considerations have been taken into account. (changes have been profiled or benchmarked if necessary)

@vercel
Copy link

vercel bot commented Dec 31, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

4 Skipped Deployments
Project Deployment Review Updated (UTC)
ledger-live-github-bot Ignored Ignored Preview Jan 29, 2026 11:30am
native-ui-storybook Ignored Ignored Preview Jan 29, 2026 11:30am
react-ui-storybook Ignored Ignored Preview Jan 29, 2026 11:30am
web-tools Ignored Ignored Preview Jan 29, 2026 11:30am

Request Review

@live-github-bot
Copy link
Contributor

live-github-bot bot commented Jan 26, 2026

Desktop Bundle Checks

Comparing d94203c against a6100ec.

βœ… Previous issues have all been fixed.

Mobile Bundle Checks

Comparing d94203c against a6100ec.

βœ… Previous issues have all been fixed.

@Moustafa-Koterba Moustafa-Koterba force-pushed the feature/LIVE-20724 branch 3 times, most recently from 933cb0c to 19766e7 Compare January 27, 2026 10:01
@Moustafa-Koterba Moustafa-Koterba marked this pull request as ready for review January 27, 2026 13:12
@Moustafa-Koterba Moustafa-Koterba requested review from a team as code owners January 27, 2026 13:12
import { useRecipientMemo } from "../screens/Recipient/hooks/useRecipientMemo";
import { SEND_FLOW_STEP, type SendFlowStep, type SendStepConfig } from "../types";
import { getRecipientDisplayValue, getRecipientSearchPrefillValue } from "./utils";
import { useAvailableBalance } from "../hooks/useAvailableBalance";
Copy link
Member

Choose a reason for hiding this comment

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

You can keep the import instead of adding the whole function inside the file

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

t,
showMemoControls,
currencyId,
memoViewModel.showMemoValueInput,
Copy link
Member

Choose a reason for hiding this comment

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

Can we regroup thoses props?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

}

const address = entry.address;
const ensName = typeof entry.ensName === "string" ? entry.ensName : undefined;
Copy link
Member

Choose a reason for hiding this comment

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

Why the adds of all thoses isRecord / typeof checks ?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

old code, issue with commit hash, I had a previous version of the send flow, fixed now !

.zed/debug.json Outdated
//
// For more documentation on how to configure debug tasks,
// see: https://zed.dev/docs/debugger
[]
Copy link
Contributor

Choose a reason for hiding this comment

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

accidental file?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yes, added to gitignore

@github-actions
Copy link
Contributor

github-actions bot commented Jan 28, 2026

⚠️ E2E tests are required

Changes detected require e2e testing before merge (even before asking for any review).

πŸ–₯️ Desktop

-> Run Desktop E2E

  • Select "Run workflow"
  • Branch: feature/LIVE-20724
  • Device: nanoSP or stax

πŸ“± Mobile

-> Run Mobile E2E

  • Select "Run workflow"
  • Branch: feature/LIVE-20724
  • Device: nanoX

dilaouid
dilaouid previously approved these changes Jan 28, 2026
Copy link
Contributor

Choose a reason for hiding this comment

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

Your SendHeader should use MVVM at this stage IMO

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done. I will add unit test in an other PR for the new hook πŸ‘

Comment on lines 63 to 65
setRecipient(recipient);
transactionHook.actions.setRecipient(recipient);
setRecipient(prev => (prev ? { ...prev, ...recipient } : recipient));
Copy link
Contributor

Choose a reason for hiding this comment

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

why do it 2 times?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

fixed

const getRecentDescription = (): string => {
const getRecentDescription = (): string | undefined => {
if (matchedRecentAddress) {
return `Already used Β· ${formatRelativeDate(matchedRecentAddress.lastUsedAt)}`;
Copy link
Contributor

Choose a reason for hiding this comment

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

should be translated no?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

done

@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
16.3% Coverage on New Code (required β‰₯ 80%)

See analysis details on SonarQube Cloud

@Moustafa-Koterba Moustafa-Koterba changed the title Feature/live 20724 Feature/live 20724 [LLD][UI] Memo screen Jan 28, 2026
@mcayuelas-ledger
Copy link
Contributor

/generate-screenshots

1 similar comment
@Moustafa-Koterba
Copy link
Contributor Author

/generate-screenshots

@Moustafa-Koterba
Copy link
Contributor Author

@Moustafa-Koterba
Copy link
Contributor Author

Moustafa-Koterba commented Jan 29, 2026

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

Labels

common Has changes in live-common desktop Has changes in LLD translations Translation files have been touched

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants