-
Notifications
You must be signed in to change notification settings - Fork 13
fix: external claim links history ui + badges fix #1136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
WalkthroughPasses haveSentMoneyToUser from transactionDetails into TransactionCard, introduces a new transaction type/direction Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Suggested reviewers
✨ Finishing Touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. CodeRabbit Commands (Invoked using PR/Issue comments)Type Other keywords and placeholders
CodeRabbit Configuration File (
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
🧹 Nitpick comments (12)
src/app/(mobile-ui)/history/page.tsx (1)
164-165
: Coerce haveSentMoneyToUser to a strict boolean.Avoid passing undefined; coerce to boolean for consistency across call sites.
Apply this diff:
- haveSentMoneyToUser={transactionDetails.haveSentMoneyToUser} + haveSentMoneyToUser={!!transactionDetails.haveSentMoneyToUser}src/components/Home/HomeHistory.tsx (1)
231-233
: Unify both sections to use transactionDetails.haveSentMoneyToUser (remove inline computation below).The "Latest Transactions" section (Lines 268–286) still computes haveSentMoneyToUser locally, which can drift from the transformer logic. Use the mapped field for consistency.
Apply this diff:
- const haveSentMoneyToUser = - item.userRole === 'SENDER' - ? interactions[item.recipientAccount.userId] - : item.senderAccount?.userId - ? interactions[item.senderAccount.userId] - : false - return ( <TransactionCard key={item.uuid} type={transactionCardType} name={transactionDetails.userName} amount={Number(transactionDetails.amount)} status={transactionDetails.status} initials={transactionDetails.initials} transaction={transactionDetails} position={position} - haveSentMoneyToUser={haveSentMoneyToUser} + haveSentMoneyToUser={!!transactionDetails.haveSentMoneyToUser} />src/components/TransactionDetails/TransactionDetailsHeaderCard.tsx (1)
104-112
: Title for pending/cancelled link-claims can read as generic "Link Transaction".When isLinkTransaction is true and status is pending/cancelled, claim_external currently falls through to "Link Transaction". Consider a clearer title.
Apply this diff to the link-transaction switch (Lines 48–65):
if (isLinkTransaction && (status === 'pending' || status === 'cancelled' || !userName)) { const displayName = userName switch (direction) { + case 'claim_external': + titleText = status === 'cancelled' ? `Claim to ${displayName}` : `Claiming to ${displayName}` + break case 'send': titleText = displayName breaksrc/components/TransactionDetails/transactionTransformer.ts (1)
195-199
: Be explicit about flags in the fallback SEND_LINK branch.Set isLinkTx and isPeerActuallyUser explicitly to document intent.
Apply this diff:
} else { direction = 'claim_external' transactionCardType = 'claim_external' nameForDetails = entry.recipientAccount?.username || entry.recipientAccount?.identifier + isPeerActuallyUser = false + isLinkTx = true }src/components/TransactionDetails/TransactionDetailsReceipt.tsx (8)
252-258
: Normalize Date conversions (avoid toString and inconsistent types)
Usenew Date(value)
consistently; avoidtoString()
which can skew parsing and locales.- value={formatDate(new Date(transaction.createdAt!.toString()))} + value={formatDate(new Date(transaction.createdAt!))} ... - value={formatDate(transaction.cancelledDate as Date)} + value={formatDate(new Date(transaction.cancelledDate!))} ... - value={formatDate(new Date(transaction.claimedAt))} + value={formatDate(new Date(transaction.claimedAt!))} ... - value={formatDate(new Date(transaction.completedAt!))} + value={formatDate(new Date(transaction.completedAt!))}Also applies to: 331-341, 343-353, 355-363
452-463
: Border leak: collapsible header shows a bottom border even when last row
WhendepositInstructions
is the last visible row and details are collapsed, the extraborder-b
adds an unwanted trailing divider.-<div className="border-grey-11 border-b pb-3"> +<div className={twMerge('pb-3', !shouldHideBorder('depositInstructions') && 'border-b border-grey-11')}>
391-411
: Copy raw IBAN/account identifiers, display formatted
Copying the formatted IBAN (with spaces) can break pasting in banking apps. Display formatted, but copy the raw identifier.- <CopyToClipboard - textToCopy={formatIban(transaction.bankAccountDetails.identifier)} - iconSize="4" - /> + <CopyToClipboard + textToCopy={transaction.bankAccountDetails.identifier} + iconSize="4" + />- <CopyToClipboard - textToCopy={formatIban( - transaction.extraDataForDrawer.depositInstructions.iban - )} - iconSize="4" - /> + <CopyToClipboard + textToCopy={transaction.extraDataForDrawer.depositInstructions.iban} + iconSize="4" + />Also applies to: 507-522
570-611
: Defensive US bank fields (avoid non-null assertions)
bank_account_number
/bank_routing_number
might be absent. Avoid!
and provide a clear fallback in UI while copying an empty string if missing.- <span> - {transaction.extraDataForDrawer.depositInstructions.bank_account_number} - </span> - <CopyToClipboard - textToCopy={ - transaction.extraDataForDrawer.depositInstructions.bank_account_number! - } - iconSize="4" - /> + <span> + {transaction.extraDataForDrawer.depositInstructions.bank_account_number ?? '—'} + </span> + <CopyToClipboard + textToCopy={transaction.extraDataForDrawer.depositInstructions.bank_account_number ?? ''} + iconSize="4" + /> ... - <span> - {transaction.extraDataForDrawer.depositInstructions.bank_routing_number} - </span> - <CopyToClipboard - textToCopy={ - transaction.extraDataForDrawer.depositInstructions.bank_routing_number! - } - iconSize="4" - /> + <span> + {transaction.extraDataForDrawer.depositInstructions.bank_routing_number ?? '—'} + </span> + <CopyToClipboard + textToCopy={transaction.extraDataForDrawer.depositInstructions.bank_routing_number ?? ''} + iconSize="4" + />
11-11
: Prefer shortenAddressLong for Transfer ID; drop unused import
shortenAddress
truncates only the start.shortenAddressLong
shows both ends, improving recognition. Then remove the now-unusedshortenAddress
import.-import { formatIban, printableAddress, shortenAddress, shortenAddressLong } from '@/utils/general.utils' +import { formatIban, printableAddress, shortenAddressLong } from '@/utils/general.utils'- <span>{shortenAddress(transaction.id.toUpperCase(), 20)}</span> + <span>{shortenAddressLong(transaction.id.toUpperCase(), 10, 10, 10)}</span>Also applies to: 412-423
69-72
: Add missing effect dependency
IncludesetIsModalOpen
in the dependency array to satisfy Rules of Hooks and avoid stale closures.-useEffect(() => { - setIsModalOpen?.(showCancelLinkModal) -}, [showCancelLinkModal]) +useEffect(() => { + setIsModalOpen?.(showCancelLinkModal) +}, [showCancelLinkModal, setIsModalOpen])
691-707
: Align Attachment row with unified border logic
UseshouldHideBorder('attachment')
for consistency (instead of a hardcodedhideBottomBorder
).-<PaymentInfoRow +<PaymentInfoRow label="Attachment" value={ <Link href={transaction.attachmentUrl} target="_blank" - rel="noreferrer" + rel="noopener noreferrer" className="flex items-center underline" > Download <Icon name="download" className="h-3" /> </Link> } - hideBottomBorder + hideBottomBorder={shouldHideBorder('attachment')} />
260-275
: Optional: simplify “To” row using PaymentInfoRow’s copy support
You can avoid custom markup by letting PaymentInfoRow render the copy icon.-<PaymentInfoRow - label={'To'} - value={ - <div className="flex items-center gap-2"> - <span> - {isAddress(transaction.userName) - ? printableAddress(transaction.userName) - : transaction.userName} - </span> - <CopyToClipboard textToCopy={transaction.userName} iconSize="4" /> - </div> - } - hideBottomBorder={shouldHideBorder('to')} -/> +<PaymentInfoRow + label="To" + value={isAddress(transaction.userName) ? printableAddress(transaction.userName) : transaction.userName} + allowCopy + copyValue={transaction.userName} + hideBottomBorder={shouldHideBorder('to')} />
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (6)
src/app/(mobile-ui)/history/page.tsx
(1 hunks)src/components/Home/HomeHistory.tsx
(1 hunks)src/components/TransactionDetails/TransactionCard.tsx
(5 hunks)src/components/TransactionDetails/TransactionDetailsHeaderCard.tsx
(3 hunks)src/components/TransactionDetails/TransactionDetailsReceipt.tsx
(6 hunks)src/components/TransactionDetails/transactionTransformer.ts
(2 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-04-11T11:33:53.245Z
Learnt from: kushagrasarathe
PR: peanutprotocol/peanut-ui#798
File: src/components/Home/HomeHistory.tsx:138-192
Timestamp: 2025-04-11T11:33:53.245Z
Learning: In the HomeHistory component, infinite scrolling is intentionally not implemented despite the presence of useInfiniteQuery and IntersectionObserver code. The component is designed to only display the first 5 entries with a "View all transactions" link for viewing the complete history.
Applied to files:
src/components/Home/HomeHistory.tsx
🧬 Code graph analysis (2)
src/components/TransactionDetails/TransactionCard.tsx (1)
src/utils/general.utils.ts (1)
printableAddress
(70-73)
src/components/TransactionDetails/TransactionDetailsReceipt.tsx (2)
src/components/Payment/PaymentInfoRow.tsx (1)
PaymentInfoRow
(7-81)src/utils/general.utils.ts (4)
printableAddress
(70-73)shortenAddressLong
(51-68)shortenAddress
(43-49)formatIban
(965-972)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Deploy-Preview
🔇 Additional comments (5)
src/components/Home/HomeHistory.tsx (1)
231-233
: Good shift to data-layer provided haveSentMoneyToUser for pending section.This aligns with the transformer and removes duplicated logic.
src/components/TransactionDetails/TransactionDetailsHeaderCard.tsx (1)
25-26
: New direction and icon mapping for claim_external look correct.Direction type extended and icon set to arrow-up match the UX for external claims.
Also applies to: 137-138
src/components/TransactionDetails/transactionTransformer.ts (1)
406-408
: Verified badge gating is correct.Only showing the badge when the peer is an actual Peanut user prevents misleading verification marks for external addresses.
src/components/TransactionDetails/TransactionCard.tsx (2)
179-182
: Address-aware name rendering is a nice UX win.Using printableAddress only for valid addresses keeps usernames intact and shortens addresses consistently. Passing haveSentMoneyToUser through to VerifiedUserLabel is consistent with the new data flow.
233-236
: Icon and action text for claim_external are consistent with header behavior.Arrow-up + "Claim" matches the new direction semantics.
Also applies to: 257-259
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/components/TransactionDetails/TransactionDetailsReceipt.tsx (1)
702-716
: Security: include noopener on external linkPrevent
window.opener
hijacking.Apply:
- rel="noreferrer" + rel="noopener noreferrer"
♻️ Duplicate comments (1)
src/components/TransactionDetails/TransactionDetailsReceipt.tsx (1)
317-339
: TX ID: always shown, link when possible + noopener — LGTMMatches prior recommendation and improves security.
🧹 Nitpick comments (9)
src/components/TransactionDetails/transaction-details.utils.ts (2)
20-38
: Freeze and validate row order + fix comment typoMake the order immutable and compiler-checked; also fix the “rder” typo.
Apply:
-// rder of the rows in the receipt -export const transactionDetailsRowKeys: TransactionDetailsRowKey[] = [ +// order of the rows in the receipt +export const transactionDetailsRowKeys = [ 'createdAt', 'to', 'tokenAndNetwork', 'txId', 'cancelled', 'claimed', 'completed', 'fee', 'exchangeRate', 'bankAccountDetails', 'transferId', 'depositInstructions', 'peanutFee', 'comment', 'networkFee', 'attachment', -] +] as const satisfies readonly TransactionDetailsRowKey[]
40-49
: Defensive input + alias handling in getBankAccountLabelAvoid runtime error if
type
is undefined and fold common aliases.Apply:
-export const getBankAccountLabel = (type: string) => { - switch (type.toLowerCase()) { +export const getBankAccountLabel = ( + type?: string +): 'IBAN' | 'CLABE' | 'Account Number' => { + const t = (type ?? '').toLowerCase() + switch (t) { case 'iban': return 'IBAN' case 'clabe': return 'CLABE' + case 'account_number': + case 'accountnumber': + return 'Account Number' default: return 'Account Number' } }src/components/TransactionDetails/TransactionDetailsReceipt.tsx (7)
91-128
: Visibility conditions look correct; minor micro-optYou could hoist a constant
allFalse = Object.fromEntries(transactionDetailsRowKeys.map(k => [k,false])) as Record<...>
outside the component to avoid re-allocating the base object, but this is non-blocking.
256-262
: Avoid unnecessary toString() when constructing DatePass the value directly to
new Date(...)
for consistency with other rows.Apply:
- value={formatDate(new Date(transaction.createdAt!.toString()))} + value={formatDate(new Date(transaction.createdAt!))}
264-279
: Simplify address formatting: printableAddress already guards isAddress
printableAddress
already checks if the string is an address; drop the extraisAddress
call and add a null-safe fallback.Apply:
- value={ - <div className="flex items-center gap-2"> - <span> - {isAddress(transaction.userName) - ? printableAddress(transaction.userName) - : transaction.userName} - </span> - <CopyToClipboard textToCopy={transaction.userName} iconSize="4" /> - </div> - } + value={ + <div className="flex items-center gap-2"> + <span>{printableAddress(transaction.userName ?? '')}</span> + {transaction.userName && ( + <CopyToClipboard textToCopy={transaction.userName} iconSize="4" /> + )} + </div> + }
342-351
: Consistent Date constructionFor consistency with other rows, wrap
cancelledDate
withnew Date(...)
instead of passing a possibly-string.Apply:
- value={formatDate(transaction.cancelledDate as Date)} + value={formatDate(new Date(transaction.cancelledDate as Date))}
380-400
: Border glitch when no exchange rateIf
exchange_rate
is absent, “Original amount” becomes the last rendered row in this section but keeps a bottom border. Hide it when theexchangeRate
group is last.Apply:
- hideBottomBorder={false} + hideBottomBorder={ + shouldHideBorder('exchangeRate') && + !transaction.extraDataForDrawer?.receipt?.exchange_rate + }
402-422
: Copy raw account identifier; display formattedCopying the spaced IBAN can fail in some bank forms. Display the formatted IBAN, but copy the raw identifier.
Apply:
- <CopyToClipboard - textToCopy={formatIban(transaction.bankAccountDetails.identifier)} - iconSize="4" - /> + <CopyToClipboard + textToCopy={transaction.bankAccountDetails.identifier.replace(/\s+/g, '')} + iconSize="4" + />
518-536
: Deposit IBAN: copy unformattedSame rationale as above—copy the raw IBAN while displaying the formatted one.
Apply:
- <CopyToClipboard - textToCopy={formatIban( - transaction.extraDataForDrawer.depositInstructions.iban - )} - iconSize="4" - /> + <CopyToClipboard + textToCopy={transaction.extraDataForDrawer.depositInstructions.iban.replace(/\s+/g, '')} + iconSize="4" + />
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
src/components/TransactionDetails/TransactionDetailsReceipt.tsx
(6 hunks)src/components/TransactionDetails/transaction-details.utils.ts
(1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
src/components/TransactionDetails/TransactionDetailsReceipt.tsx (3)
src/components/TransactionDetails/transaction-details.utils.ts (3)
TransactionDetailsRowKey
(2-18)transactionDetailsRowKeys
(21-38)getBankAccountLabel
(40-49)src/components/Payment/PaymentInfoRow.tsx (1)
PaymentInfoRow
(7-81)src/utils/general.utils.ts (5)
formatDate
(937-949)printableAddress
(70-73)shortenAddressLong
(51-68)shortenAddress
(43-49)formatIban
(965-972)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Deploy-Preview
🔇 Additional comments (4)
src/components/TransactionDetails/transaction-details.utils.ts (1)
1-18
: Good: central RowKey union exportedClear, typed surface for all receipt rows; this unblocks stable ordering and safer visibility maps downstream.
src/components/TransactionDetails/TransactionDetailsReceipt.tsx (3)
77-90
: Type-safe, full visibility map initReturning a fully-shaped
Record<TransactionDetailsRowKey, boolean>
(all false) when!transaction
is solid. Nice.
131-141
: Stable ordering + correct last-row detection
visibleRows
derived from the ordered keys andshouldHideBorder
keyed byTransactionDetailsRowKey
is clean.
951-982
: Ignore the original guard suggestion; the review comment is misaligned with the store shape
TheuseUserStore
selector returns an object whoseuser
property is already the profile (of typeIUserProfile
), so in your component:
•const { user } = useUserStore()
makesuser
the actual profile, not a nested container.
• There is nouser.user
; the correct field isuser.username
.Because this component only renders its “Claim” action when the user is signed in (and your slice’s initial state defines
user: null
but you only ever reach this path with a loaded profile), you don’t need to guard against a missing store or drop an extra.user
. If you do want a runtime check for extra safety, you would write:if (!user?.username) { captureException(new Error('Missing username while confirming cancel/claim')) return } // … sendLinksApi .claim(user.username, transaction.extraDataForDrawer!.link!)But the original suggestion to use
user?.user?.username
should be ignored.Likely an incorrect or invalid review comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (1)
src/components/TransactionDetails/transactionTransformer.ts (1)
324-328
: Fix validated: COMPLETED no longer downgraded to pending for external-claim.This resolves the earlier mislabel for SEND_LINK external-claim entries.
🧹 Nitpick comments (2)
src/components/TransactionDetails/transactionTransformer.ts (2)
195-198
: Make role-agnostic fallback explicit about link/user flags.Be explicit to avoid relying on earlier assignments and improve readability.
} else { direction = 'claim_external' transactionCardType = 'claim_external' nameForDetails = entry.recipientAccount?.username || entry.recipientAccount?.identifier + isPeerActuallyUser = false + isLinkTx = true }
324-328
: Harden condition by also checking transactionCardType.Future refactors could change direction while keeping cardType. Guard both.
- uiStatus = - EHistoryEntryType.SEND_LINK === entry.type && direction !== 'claim_external' - ? 'pending' - : 'completed' + uiStatus = + EHistoryEntryType.SEND_LINK === entry.type && + direction !== 'claim_external' && + transactionCardType !== 'claim_external' + ? 'pending' + : 'completed'
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
💡 Knowledge Base configuration:
- MCP integration is disabled by default for public repositories
- Jira integration is disabled by default for public repositories
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (1)
src/components/TransactionDetails/transactionTransformer.ts
(3 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Deploy-Preview
- GitHub Check: test
🔇 Additional comments (3)
src/components/TransactionDetails/transactionTransformer.ts (3)
176-190
: SEND_LINK (RECIPIENT) → claim_external mapping looks correct.Direction/cardType are set to 'claim_external' only when recipient is not a Peanut user; this aligns with the PR objective.
176-190
: Ensure display formatting for long identifiers.
nameForDetails = entry.recipientAccount.identifier
may be a long address; confirm the rendering layer shortens it (e.g., 0xabc…def).If not handled in the component, do you want a small helper wired here instead?
409-411
: Badge gating is correct.
isVerified
now shows only when the peer is an actual Peanut user; this addresses badges showing on claims to external wallets.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great PR
* feat: handle send link claims to bank account for peanut users (#1078) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * remove duplicate debounce code and use `useDebounce` hook instead (#1079) * Landing page v2.1 (#1089) * lpv2.1 part 1 * Add exchange widget * add and integrate exchange API * add yourMoney component bg * update landing countries svg * integrate frankfurter API * fixes and improvements * decrease hero section height * allow max 2 decimal places * Add `/exchange` route * fix: overlay * make destination amount editable and bugg fixes * some fixes & currency improvements * crucial commit * fix checkmark, font size and weight --------- Co-authored-by: Hugo Montenegro <[email protected]> * [TASK-13186] refactor: use networkName instead of axelarChainName (#1095) * refactor: use networkName instead of axelarChainName * fix: types * fix: onramp currency (#1096) * fix: stretched favicon (#1099) * [TASK-13971] fix: scientific notation in eip681 parsing (#1097) * fix: scientific notation in eip681 parsing * fix: qr handling tests * fix: peanut sdk mock * pull iban hotfix (#1100) * fix: claim flow bugs (#1102) * fix: cross chain claim * fix: full name issue on confirm bank claim view * fix: back navigation on desktop views * Fix back button not working on /profile (#1101) * Fix back button not working * fix public profile page * extract internal navigation logic to utility function * fix: send link claims to us bank accounts (#1108) * fix: usa bank account claims * fix: show bank account details in confirm claim view * Sync Landing page changes (#1111) * reduce clouds size and update font * fix: hero section responsiveness issue * fix: formatting errors * add currency animation * fix: us bank claims after kyc for logged in users (#1112) * fix: trim account form inputs for spaces (#1114) * [TASK-14107] fix: don't allow claiming on xChain if route is not found (#1115) * fix: don't allow claiming on xChain if route is not found * fix(claim): use correct decimals for min receive amount * feat: handle redirect uri when on unsupported browsers (#1117) * feat: handle redirect uri when on unsupported browsers * fix: confirm bank claim ui rows for iban guest claim * remove animation (#1118) * Prod to staging (#1124) * HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * [TASK-14052] Prod release 105 (#1122) * feat: handle send link claims to bank account for peanut users (#1078) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * remove duplicate debounce code and use `useDebounce` hook instead (#1079) * Landing page v2.1 (#1089) * lpv2.1 part 1 * Add exchange widget * add and integrate exchange API * add yourMoney component bg * update landing countries svg * integrate frankfurter API * fixes and improvements * decrease hero section height * allow max 2 decimal places * Add `/exchange` route * fix: overlay * make destination amount editable and bugg fixes * some fixes & currency improvements * crucial commit * fix checkmark, font size and weight --------- Co-authored-by: Hugo Montenegro <[email protected]> * [TASK-13186] refactor: use networkName instead of axelarChainName (#1095) * refactor: use networkName instead of axelarChainName * fix: types * fix: onramp currency (#1096) * fix: stretched favicon (#1099) * [TASK-13971] fix: scientific notation in eip681 parsing (#1097) * fix: scientific notation in eip681 parsing * fix: qr handling tests * fix: peanut sdk mock * pull iban hotfix (#1100) * fix: claim flow bugs (#1102) * fix: cross chain claim * fix: full name issue on confirm bank claim view * fix: back navigation on desktop views * Fix back button not working on /profile (#1101) * Fix back button not working * fix public profile page * extract internal navigation logic to utility function * fix: send link claims to us bank accounts (#1108) * fix: usa bank account claims * fix: show bank account details in confirm claim view * Sync Landing page changes (#1111) * reduce clouds size and update font * fix: hero section responsiveness issue * fix: formatting errors * add currency animation * fix: us bank claims after kyc for logged in users (#1112) * fix: trim account form inputs for spaces (#1114) * [TASK-14107] fix: don't allow claiming on xChain if route is not found (#1115) * fix: don't allow claiming on xChain if route is not found * fix(claim): use correct decimals for min receive amount * feat: handle redirect uri when on unsupported browsers (#1117) * feat: handle redirect uri when on unsupported browsers * fix: confirm bank claim ui rows for iban guest claim * remove animation (#1118) * fix: formatting --------- Co-authored-by: Kushagra Sarathe <[email protected]> Co-authored-by: Mohd Zishan <[email protected]> Co-authored-by: Hugo Montenegro <[email protected]> --------- Co-authored-by: Mohd Zishan <[email protected]> Co-authored-by: Kushagra Sarathe <[email protected]> Co-authored-by: Hugo Montenegro <[email protected]> * fix: dates in receipts (#1105) * [TASK-13865] fix: add tx info on receipt (#1109) * fix: add tx info on receipt * feat: use address explorer url for depositor address * fix(history): check befroe creating address explorer url * Fix: logged in users have to re-login after installing PWA (#1103) * store `LOCAL_STORAGE_WEB_AUTHN_KEY` in cookies * ensure backward compatibility * refactor: move syncLocalStorageToCookie call into useEffect for better lifecycle management * feat: links v2.1 req fulfilment flows (#1085) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * feat: req fulfillment exchange flow * fix: header title * feat: req fulfillment using connected external wallet * fix: navigation and ui * fix: file name * feat: abstract reusbale components from onramp flow for bank fulfilment * feat: handle onramp creation for request fulfilment * feat: reusable verification component * feat: handle bank req fulfilment for peanut users * fix: show all supported countries in req/claim bank flow * feat: show google-pay/apple-pay based on users device * fix: resolve pr review comments * fix: exhange rate hook fallback value * fix: resolve pr comments * Feat: Collect tg username (#1110) * feat: collect tg username * update animations * fix api route * add thinking peanut gif * fix typescript errors * fix typo and reset telegramHandle field on logout * fix: spacing and describe regex rules * add missing export * feat: add sound in success views (#1127) * feat: handle history ui changes for links v2.1 (#1106) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * feat: req fulfillment exchange flow * fix: header title * feat: req fulfillment using connected external wallet * fix: navigation and ui * fix: file name * feat: abstract reusbale components from onramp flow for bank fulfilment * feat: handle onramp creation for request fulfilment * feat: reusable verification component * feat: handle bank req fulfilment for peanut users * fix: show all supported countries in req/claim bank flow * feat: show google-pay/apple-pay based on users device * feat: handle bank send link claim hisotry for peanut users * feat: handle history ui changes for request fulfillment using bank accounts * fix: resolve pr review comments * fix: exhange rate hook fallback value * fix: resolve pr comments * fix: review comments * feat: badges updates (#1119) * feat: badges updates and hook to check for interactions * feat: handle badges for receipts and drawer header * feat: handle badges on request and send flow * feat: tooltip for badges * fix: tooltip positioning * fix: associate a external wallet claim to user if logged in (#1126) * fix: associate a external wallet claim to user if logged in * chore: fix comments * [TASK-14113] fix: handle rpc outage when creating sendlinks (#1120) * HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * fix: handle rpc outage when creating sendlinks * fix: formatting * fix: parallelize geting deposit index --------- Co-authored-by: Mohd Zishan <[email protected]> * Integrate Daimo Pay (#1104) * add daimo pay * minor improvements * cleanup and add success state * resolve dependency issues * fix: formatting * fix: recent methods redirection * add functions for daimo payment in request fulfilment flow * Integrate daimo in request fulfilment flow * remove hardcoded address * add separate arbitrum usdc flow for deposits * Add risk modal * fix overlay blur * Enhance loading state indication in payment process * Add payer's address in deposit history entry * Add validation * add error handling * remove action and move logic to API route * fix errors * fix: request flow * fix: validation * fixes * add daimo flow in country specific method * fix: slider not working on first attempt * filter supported networks * create reusable daimo button * remove space * remove route.ts file and move logic to server actions * fix: infinite loading edge case * update api and remove delay * fix: layout shift * fix: shadow * update function name * fix: success receipt (#1129) * fix: roboto font not working (#1130) * fix: allow cancel link from the claim page * fix: allow canceling links from the shared receipt (#1134) * fix: send flow cta (#1133) * fix: send flow ctas * fix: success sound on send flow * fix: disabled btn on req pay flow * Fix Daimo bugs (#1132) * fix: bugs * fix cross chain deposit details not correct * fix: request screen UI * add loading state * remove old daimo button * fix: missing dependencies and dead code * add try catch finally block * remove clear Daimo errors inside the balance-check effect * fix copy * minor fixes * move ACTION_METHODS to constants file to remove circular dependency * fix: circular dependency * fix ts error * update daimo version * [TASK-14095] feat: add fallback transport to viem clients (#1131) * feat: add fallback transport to viem clients Use viem fallback transport to handle RPC errors and fallback to other providers. * style: Apply prettier formatting * test: add fallback to viem mock * fix: external claim links history ui + badges fix (#1136) * fix: external claim links history ui + badges fix * fix: resolve codderrabbit suggestions * fix: coderrabbit comment on state stale * Fix: disable add money button on default state + disable sound on IOS (#1145) * fix: add money success screen shows usernmae * disable add money button in default state * disable sound on IOS * Fix: daimo bugs part2 (#1149) * fix: black screen on IOS * fix: sucess screen showed without paying - add money flow * fix currency and double $ in txn history * fix: x-chan token size and add API to get missing token icons * fix: req fulfilment * add default value to tokenData * fix: move useeffect above transaction null check * format amount * fix: space between currency and amount (#1135) * Lock token to USDC arb for peanut ens username (#1128) * Lock token to USDC arb for peanut ens username * add comment * revert variable declaration for sanitizedValue in GeneralRecipientInput component * fix add regex to strip only from the end * [TASK-13900] Feat/kyc modal changes (#1137) * fix: pointer events * fix: modal btns not working on mobile * add missing dependency * remove close button * Chore/prod to dev 106 (#1152) * HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * [TASK-14052] Prod release 105 (#1122) * feat: handle send link claims to bank account for peanut users (#1078) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * remove duplicate debounce code and use `useDebounce` hook instead (#1079) * Landing page v2.1 (#1089) * lpv2.1 part 1 * Add exchange widget * add and integrate exchange API * add yourMoney component bg * update landing countries svg * integrate frankfurter API * fixes and improvements * decrease hero section height * allow max 2 decimal places * Add `/exchange` route * fix: overlay * make destination amount editable and bugg fixes * some fixes & currency improvements * crucial commit * fix checkmark, font size and weight --------- Co-authored-by: Hugo Montenegro <[email protected]> * [TASK-13186] refactor: use networkName instead of axelarChainName (#1095) * refactor: use networkName instead of axelarChainName * fix: types * fix: onramp currency (#1096) * fix: stretched favicon (#1099) * [TASK-13971] fix: scientific notation in eip681 parsing (#1097) * fix: scientific notation in eip681 parsing * fix: qr handling tests * fix: peanut sdk mock * pull iban hotfix (#1100) * fix: claim flow bugs (#1102) * fix: cross chain claim * fix: full name issue on confirm bank claim view * fix: back navigation on desktop views * Fix back button not working on /profile (#1101) * Fix back button not working * fix public profile page * extract internal navigation logic to utility function * fix: send link claims to us bank accounts (#1108) * fix: usa bank account claims * fix: show bank account details in confirm claim view * Sync Landing page changes (#1111) * reduce clouds size and update font * fix: hero section responsiveness issue * fix: formatting errors * add currency animation * fix: us bank claims after kyc for logged in users (#1112) * fix: trim account form inputs for spaces (#1114) * [TASK-14107] fix: don't allow claiming on xChain if route is not found (#1115) * fix: don't allow claiming on xChain if route is not found * fix(claim): use correct decimals for min receive amount * feat: handle redirect uri when on unsupported browsers (#1117) * feat: handle redirect uri when on unsupported browsers * fix: confirm bank claim ui rows for iban guest claim * remove animation (#1118) * fix: formatting --------- Co-authored-by: Kushagra Sarathe <[email protected]> Co-authored-by: Mohd Zishan <[email protected]> Co-authored-by: Hugo Montenegro <[email protected]> * fix: bank claim flow runtime error (#1138) * hotfix: make iban non optional (#1139) * fix: bank claim flow runtime error * fix: dont have iban as optional * fix: merge conflicts * fix: merge external account with bank details (#1140) * fix: add id to external account (#1142) * added tg footer (#1144) * Hotfix : add missing countries - claim as guest flow (#1146) * fix: add missing countries * remove duplicate comment * fix: show error on dynamic bank account form (#1147) * fix: Invalid IBAN for UK (#1151) --------- Co-authored-by: Mohd Zishan <[email protected]> Co-authored-by: Kushagra Sarathe <[email protected]> Co-authored-by: Hugo Montenegro <[email protected]> Co-authored-by: Hugo Montenegro <[email protected]> * [TASK-13950] Fix: incorrect token amount on second withdraw (#1150) * fix: incorrect token amount on second withdraw * move `resetTokenContextProvider()` to unmount callback * fix: transaction explorer url for deposits * fix: history skeleton copy * save token and chain details for cross chain req-fulfilments (#1154) * fix: send links history ui for senders pov when claimed to bank accounts (#1156) * fix: sort action list methods * fix: send links claimed to bank accounts history ui for senders pov * fix: issues for request link paying with bank (#1158) - Specify recipient when creating onramp for request fulfillment - Use correct amount depending on currency * fix: stop cleaning error by bic field (#1159) We now always clear before starting submission and also bic field will always show, so that logic is not needed anymore. * fix: claim country currency and amount, fallback to $ (#1164) * feat: show local bank currency incase of bank claims * fix: activity rows for sender's send link history * fix: verification modal when claiming * fix: state issue when new user tries to claim to bank * fix: request pay copy (#1165) * fix: close kyc modal btn (#1166) * Fix testing github action (#1167) * chore: remove prettier action When commiting it clashes with signature verification rules * chore: update test action setup version * fix: install first * fix: actually make sure that cancelledDate is a Date (#1170) * fix: icon and margin (#1171) * Hide pay with wallet button in Daimo component (#1172) * hide pay with wallet button * improve targeted css approach * Fix: Daimo bug and activity receipt bug (#1175) * sligify chain name * fix: stale state issue * hide row if tokenData is not present * Fix/conflicts (#1177) * HOTFIX - IBAN country detection and incorrect bank acc details (#1094) * Fix: Iban country detection and incorrect bank acc details * Fix: update IBAN country validation to use correct locale string comparison * add validations for US and mexican bank accounts * fix typo * fix claim flow and create a reusable function for getting 3 letter code * fix country code mismatch * fix: show error below input field * remove unnecessary checks * remove unnecessary CLABE check * Prod LP v2.1 (#1098) * feat: lpv2.1 * fix: gigaclouds, font and exchange widget * fixes and improvements * remove duplicate export * remove unused component * Fix: Landing page hero section responsiveness issue (#1107) * fix: hero section responsiveness issue * fix: stars position * fix height on desktop * remove unused code * fix margins (#1113) * [TASK-14052] Prod release 105 (#1122) * feat: handle send link claims to bank account for peanut users (#1078) * reafactor: create reusable country list component and use it for all the flows * feat: reusable user accounts components * feat: handle different cases based on kyc status for bank claim * fix: account creation * chore: add docstring to hooks * chore: better comments for bank flow manager * fix: kyc modal closing after tos acceptance issue * fix: remove bank acc caching from withdraw flow * fix: update confirm claim modal copy * fix: remove bank acc caching from claim flow * fix: navheader title * remove duplicate debounce code and use `useDebounce` hook instead (#1079) * Landing page v2.1 (#1089) * lpv2.1 part 1 * Add exchange widget * add and integrate exchange API * add yourMoney component bg * update landing countries svg * integrate frankfurter API * fixes and improvements * decrease hero section height * allow max 2 decimal places * Add `/exchange` route * fix: overlay * make destination amount editable and bugg fixes * some fixes & currency improvements * crucial commit * fix checkmark, font size and weight --------- Co-authored-by: Hugo Montenegro <[email protected]> * [TASK-13186] refactor: use networkName instead of axelarChainName (#1095) * refactor: use networkName instead of axelarChainName * fix: types * fix: onramp currency (#1096) * fix: stretched favicon (#1099) * [TASK-13971] fix: scientific notation in eip681 parsing (#1097) * fix: scientific notation in eip681 parsing * fix: qr handling tests * fix: peanut sdk mock * pull iban hotfix (#1100) * fix: claim flow bugs (#1102) * fix: cross chain claim * fix: full name issue on confirm bank claim view * fix: back navigation on desktop views * Fix back button not working on /profile (#1101) * Fix back button not working * fix public profile page * extract internal navigation logic to utility function * fix: send link claims to us bank accounts (#1108) * fix: usa bank account claims * fix: show bank account details in confirm claim view * Sync Landing page changes (#1111) * reduce clouds size and update font * fix: hero section responsiveness issue * fix: formatting errors * add currency animation * fix: us bank claims after kyc for logged in users (#1112) * fix: trim account form inputs for spaces (#1114) * [TASK-14107] fix: don't allow claiming on xChain if route is not found (#1115) * fix: don't allow claiming on xChain if route is not found * fix(claim): use correct decimals for min receive amount * feat: handle redirect uri when on unsupported browsers (#1117) * feat: handle redirect uri when on unsupported browsers * fix: confirm bank claim ui rows for iban guest claim * remove animation (#1118) * fix: formatting --------- Co-authored-by: Kushagra Sarathe <[email protected]> Co-authored-by: Mohd Zishan <[email protected]> Co-authored-by: Hugo Montenegro <[email protected]> * fix: bank claim flow runtime error (#1138) * hotfix: make iban non optional (#1139) * fix: bank claim flow runtime error * fix: dont have iban as optional * fix: merge conflicts * fix: merge external account with bank details (#1140) * fix: add id to external account (#1142) * added tg footer (#1144) * Hotfix : add missing countries - claim as guest flow (#1146) * fix: add missing countries * remove duplicate comment * fix: show error on dynamic bank account form (#1147) * fix: Invalid IBAN for UK (#1151) --------- Co-authored-by: Mohd Zishan <[email protected]> Co-authored-by: Juan José Ramírez <[email protected]> Co-authored-by: Hugo Montenegro <[email protected]> Co-authored-by: Hugo Montenegro <[email protected]> --------- Co-authored-by: Mohd Zishan <[email protected]> Co-authored-by: Hugo Montenegro <[email protected]> Co-authored-by: Juan José Ramírez <[email protected]> Co-authored-by: Juan José Ramírez <[email protected]> Co-authored-by: Hugo Montenegro <[email protected]>
Uh oh!
There was an error while loading. Please reload this page.