-
Notifications
You must be signed in to change notification settings - Fork 13
[TASK-14052] Prod release 105 #1122
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
* 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
* 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]>
* fix: scientific notation in eip681 parsing * fix: qr handling tests * fix: peanut sdk mock
* fix: cross chain claim * fix: full name issue on confirm bank claim view * fix: back navigation on desktop views
* Fix back button not working * fix public profile page * extract internal navigation logic to utility function
* fix: usa bank account claims * fix: show bank account details in confirm claim view
* reduce clouds size and update font * fix: hero section responsiveness issue * fix: formatting errors * add currency animation
#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 * fix: confirm bank claim ui rows for iban guest claim
The latest updates on your projects. Learn more about Vercel for GitHub.
|
WalkthroughReplaces GuestFlow with ClaimBankFlow across claim and home UIs, adds new bank-claim orchestration and components, standardizes chain display to networkName, updates withdraw/contexts/types accordingly, introduces geolocation/country lists and saved accounts views, revises EIP-681 parsing and debouncing hooks, tweaks KYC flow handling, and updates some metadata/icons and layouts. Changes
Estimated code review effort🎯 5 (Critical) | ⏱️ ~120 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Tip 🔌 Remote MCP (Model Context Protocol) integration is now available!Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats. ✨ 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 (
|
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: 18
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (11)
src/components/LandingPage/CurrencySelect.tsx (1)
19-25
: Normalize flag codes to lowercase to avoid broken flags (tie-in with prior learning).FlagCDN expects lowercase ISO 3166-1 alpha-2 codes in the URL path. Depending on the source data,
mapping.flagCode
may come in different cases. Per our prior learning, some country code maps in this repo use uppercase keys and require normalization. Let’s defensively lowercase here to prevent broken images.Using learnings: Retrieved note indicates uppercase 3-letter codes are used elsewhere and require normalization to uppercase for lookups. While this file uses
flagCode
, normalizing here is still prudent to guarantee FlagCDN compatibility.Apply this diff:
-const currencies = countryCurrencyMappings.map((mapping) => ({ - countryCode: mapping.flagCode, +const currencies = countryCurrencyMappings.map((mapping) => ({ + countryCode: (mapping.flagCode ?? mapping.countryCode ?? '').toLowerCase(), country: mapping.country, currency: mapping.currencyCode, currencyName: mapping.currencyName, comingSoon: mapping.comingSoon || false, }))src/components/0_Bruddle/Button.tsx (1)
209-216
: Dynamic Tailwind class won’t be generated and can produceundefinedpx
at runtime.You interpolate
active:translate-y-[${shadowSize}px]
inside a template string. Two issues:
- Tailwind JIT cannot see dynamic arbitrary values, so the corresponding CSS won’t be emitted unless explicitly safelisted.
- When
shadowSize
is undefined, you renderactive:translate-y-[undefinedpx]
.Refactor to use a static map of allowed classes and pass it conditionally to twMerge.
Apply this diff:
+ const activeTranslateY = + shadowSize + ? ({ '4': 'active:translate-y-[4px]', '6': 'active:translate-y-[6px]', '8': 'active:translate-y-[8px]' } as const)[ + shadowSize + ] + : undefined + const buttonClasses = twMerge( - `btn w-full flex items-center gap-2 transition-all duration-100 active:translate-x-[3px] active:translate-y-[${shadowSize}px] active:shadow-none notranslate`, + `btn w-full flex items-center gap-2 transition-all duration-100 active:translate-x-[3px] active:shadow-none notranslate`, buttonVariants[variant], variant === 'transparent' && props.disabled && 'disabled:bg-transparent disabled:border-transparent', size && buttonSizes[size], shape === 'square' && 'btn-square', shadowSize && buttonShadows[shadowType || 'primary'][shadowSize], + activeTranslateY, className )If you prefer to keep the dynamic form, add the three concrete classes to your Tailwind safelist.
src/components/LandingPage/noFees.tsx (2)
24-27
: Harden query param parsing to avoid NaN propagation.If
amount
exists but is invalid (e.g.,?amount=foo
),parseFloat
yieldsNaN
and gets passed intouseExchangeRate
asinitialSourceAmount
. Depending on the hook implementation, this can surface as unexpected UI behavior. Suggest sanitizing to a safe default.Apply this diff:
-const urlSourceAmount = searchParams.get('amount') ? parseFloat(searchParams.get('amount')!) : 10 +const rawAmount = searchParams.get('amount') +const parsedAmount = rawAmount !== null ? Number(rawAmount) : 10 +const urlSourceAmount = Number.isFinite(parsedAmount) ? parsedAmount : 10
242-249
: Add HTTPS remotePattern for flagcdn.comIt looks like your
next.config.js
already defines a catch-all HTTP pattern:/** @type {import('next').NextConfig} */ let nextConfig = { images: { remotePatterns: [ { protocol: 'http', hostname: '*', /* … */ } ] }, /* … */ }However, your flags are loaded over HTTPS (
src="https://flagcdn.com/…"
) and won’t match a protocol-restricted pattern. To avoid runtime failures, you must explicitly allow HTTPS and (ideally) scope it to theflagcdn.com
host. For example:--- a/next.config.js +++ b/next.config.js @@ images: { - remotePatterns: [ - { - protocol: 'http', - hostname: '*', - port: '', - pathname: '/**', - }, - ], + remotePatterns: [ + // Allow HTTP (if you need it)… + { + protocol: 'http', + hostname: '*', + port: '', + pathname: '/**', + }, + // …and allow HTTPS for flagcdn.com + { + protocol: 'https', + hostname: 'flagcdn.com', + port: '', + pathname: '/w320/**', + }, + ],Alternatively, you can simplify by using
domains
:--- a/next.config.js +++ b/next.config.js @@ images: { - remotePatterns: [ /* … */ ], + domains: ['flagcdn.com'],Either approach will ensure your remote-served flag images load without errors.
src/hooks/useKycFlow.ts (1)
56-57
: Fix optional chaining to prevent runtime crash when user.user is undefinedAccessing
user?.user.username
will throw ifuser.user
is undefined. Chain both levels.- username: user?.user.username ?? undefined, + username: user?.user?.username ?? undefined,src/components/Global/PeanutActionDetailsCard/index.tsx (3)
73-79
: Add icon for ADD_MONEY_BANK_ACCOUNT to keep UX consistent
getIcon
doesn’t handleADD_MONEY_BANK_ACCOUNT
, so the card may render without the down arrow for bank add flows.- if (transactionType === 'ADD_MONEY' || transactionType === 'CLAIM_LINK_BANK_ACCOUNT') return 'arrow-down' + if ( + transactionType === 'ADD_MONEY' || + transactionType === 'ADD_MONEY_BANK_ACCOUNT' || + transactionType === 'CLAIM_LINK_BANK_ACCOUNT' + ) + return 'arrow-down'
81-99
: Title missing for ADD_MONEY_BANK_ACCOUNTCurrently only
ADD_MONEY
sets “You’re adding”. Bank add flows fall through to an empty title.- if (transactionType === 'ADD_MONEY') title = `You're adding` + if (transactionType === 'ADD_MONEY' || transactionType === 'ADD_MONEY_BANK_ACCOUNT') + title = `You're adding`
158-164
: Flag CDN expects lowercase ISO codes — use toLowerCase() to avoid 404s
flagcdn.com
requires lowercase country codes (e.g., us, gb). Passing “US” yields a 404.- src={`https://flagcdn.com/w320/${countryCodeForFlag}.png`} + src={`https://flagcdn.com/w320/${countryCodeForFlag.toLowerCase()}.png`}src/components/Claim/Claim.utils.ts (1)
44-51
: Preserve token decimals if providedHardcoding
decimals: 0
will break formatting/amount math for non-USD chains/tokens. Use token decimals when available.combinedObject.tokens.push({ address: token.address || '', name: token.name || '', symbol: token.symbol || '', - decimals: 0, + decimals: (token as any).decimals ?? 0, logoURI: token.logoURI || '', chainId: chain.chainId || '', })src/components/Claim/Link/Onchain/Confirm.view.tsx (1)
87-95
: Avoid route/context drift: use selectedRoute values for x-chain claim paramsPassing
selectedChainID
/selectedTokenAddress
can drift from the chosenselectedRoute
. Use the route’s own destination values to ensure consistency and prevent mismatched claims.- claimTxHash = await claimLinkXchain({ - address: recipient ? recipient.address : (address ?? ''), - link: claimLinkData.link, - destinationChainId: selectedChainID, - destinationToken: selectedTokenAddress, - }) + claimTxHash = await claimLinkXchain({ + address: recipient ? recipient.address : (address ?? ''), + link: claimLinkData.link, + destinationChainId: String(selectedRoute.rawResponse.route.params.toChain), + destinationToken: selectedRoute.rawResponse.route.estimate.toToken.address, + })src/components/Global/TokenSelector/TokenSelector.tsx (1)
1-704
: Remove remainingaxelarChainName
referencesLegacy uses of the
axelarChainName
property are still present in both runtime code and tests. To prevent regressions, please remove or replace every occurrence with the updatedchainName
(or equivalent) field. Specifically:
- Runtime utilities
src/components/utils/utils.ts
(line 10): remove theaxelarChainName: string
property and update any functions that consume it.- Interface definitions
src/components/Claim/Claim.interfaces.ts
(line 5): drop the optionalaxelarChainName?: string
from the interface and adjust all implementing components or hooks accordingly.- Validation tests
src/lib/validation/token.test.ts
(lines 11, 40, 69): update test fixtures to use the new field instead ofaxelarChainName
.- URL parser tests
src/utils/__tests__/url-parser.test.ts
(line 62): modify the test to expectchainName
(or the current URL-param key) rather thanaxelarChainName
.Ensure you run the full test suite after making these changes to catch any remaining references.
ref={formRef} | ||
country={getCountryCodeForWithdraw(currentCountry.id)} | ||
onSuccess={handleFormSubmit} | ||
initialData={{}} | ||
/> |
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.
Bug: Passing 3-letter code breaks MX handling in DynamicBankAccountForm.
DynamicBankAccountForm treats Mexico as country === 'MX'
. Passing MEX
via getCountryCodeForWithdraw causes MX to be misclassified as IBAN and fails CLABE validation.
Apply:
- <DynamicBankAccountForm
- ref={formRef}
- country={getCountryCodeForWithdraw(currentCountry.id)}
+ <DynamicBankAccountForm
+ ref={formRef}
+ country={countryCodeMap[currentCountry.id] === 'MX' ? 'MX' : currentCountry.id}
onSuccess={handleFormSubmit}
initialData={{}}
/>
…and remove the now-unused import:
-import { getCountryCodeForWithdraw } from '@/utils/withdraw.utils'
Committable suggestion skipped: line range outside the PR's diff.
<CountryList | ||
inputTitle={mainHeading} | ||
viewMode="add-withdraw" | ||
onCountryClick={(country) => { | ||
const countryPath = `${baseRoute}/${country.path}` | ||
router.push(countryPath) | ||
}} | ||
onCryptoClick={() => { | ||
const cryptoPath = `${baseRoute}/crypto` | ||
router.push(cryptoPath) | ||
}} | ||
flow={flow} | ||
/> |
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.
Recents aren’t updated when selecting from the new CountryList (regression).
In the all-methods view, choosing a country/crypto no longer updates recentAddMethods, so the “Recent methods” section can never gain new items.
Apply:
<CountryList
inputTitle={mainHeading}
viewMode="add-withdraw"
onCountryClick={(country) => {
- const countryPath = `${baseRoute}/${country.path}`
- router.push(countryPath)
+ const countryPath = `${baseRoute}/${country.path}`
+ if (flow === 'add') {
+ const prefs = getUserPreferences() || {}
+ const current = prefs.recentAddMethods || []
+ const newEntry: RecentMethod = {
+ id: country.id,
+ type: 'country',
+ title: country.title,
+ description: country.currency,
+ path: countryPath,
+ currency: country.currency,
+ }
+ const filtered = current.filter((m: RecentMethod) => !(m.id === newEntry.id && m.type === newEntry.type))
+ const updated = [newEntry, ...filtered].slice(0, MAX_RECENT_METHODS)
+ updateUserPreferences({ ...prefs, recentAddMethods: updated })
+ }
+ router.push(countryPath)
}}
onCryptoClick={() => {
- const cryptoPath = `${baseRoute}/crypto`
- router.push(cryptoPath)
+ const cryptoPath = `${baseRoute}/crypto`
+ if (flow === 'add') {
+ const prefs = getUserPreferences() || {}
+ const current = prefs.recentAddMethods || []
+ const newEntry: RecentMethod = {
+ id: 'crypto-add',
+ type: 'crypto',
+ title: 'Crypto',
+ description: 'Use an exchange or your wallet',
+ path: cryptoPath,
+ }
+ const filtered = current.filter((m: RecentMethod) => !(m.id === newEntry.id && m.type === newEntry.type))
+ const updated = [newEntry, ...filtered].slice(0, MAX_RECENT_METHODS)
+ updateUserPreferences({ ...prefs, recentAddMethods: updated })
+ }
+ router.push(cryptoPath)
}}
flow={flow}
/>
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
<CountryList | |
inputTitle={mainHeading} | |
viewMode="add-withdraw" | |
onCountryClick={(country) => { | |
const countryPath = `${baseRoute}/${country.path}` | |
router.push(countryPath) | |
}} | |
onCryptoClick={() => { | |
const cryptoPath = `${baseRoute}/crypto` | |
router.push(cryptoPath) | |
}} | |
flow={flow} | |
/> | |
<CountryList | |
inputTitle={mainHeading} | |
viewMode="add-withdraw" | |
- onCountryClick={(country) => { | |
- const countryPath = `${baseRoute}/${country.path}` | |
- router.push(countryPath) | |
onCountryClick={(country) => { | |
const countryPath = `${baseRoute}/${country.path}` | |
if (flow === 'add') { | |
const prefs = getUserPreferences() || {} | |
const current = prefs.recentAddMethods || [] | |
const newEntry: RecentMethod = { | |
id: country.id, | |
type: 'country', | |
title: country.title, | |
description: country.currency, | |
path: countryPath, | |
currency: country.currency, | |
} | |
const filtered = current.filter( | |
(m: RecentMethod) => | |
!(m.id === newEntry.id && m.type === newEntry.type) | |
) | |
const updated = [newEntry, ...filtered].slice( | |
0, | |
MAX_RECENT_METHODS | |
) | |
updateUserPreferences({ | |
...prefs, | |
recentAddMethods: updated, | |
}) | |
} | |
router.push(countryPath) | |
}} | |
onCryptoClick={() => { | |
- const cryptoPath = `${baseRoute}/crypto` | |
const cryptoPath = `${baseRoute}/crypto` | |
if (flow === 'add') { | |
const prefs = getUserPreferences() || {} | |
const current = prefs.recentAddMethods || [] | |
const newEntry: RecentMethod = { | |
id: 'crypto-add', | |
type: 'crypto', | |
title: 'Crypto', | |
description: 'Use an exchange or your wallet', | |
path: cryptoPath, | |
} | |
const filtered = current.filter( | |
(m: RecentMethod) => | |
!(m.id === newEntry.id && m.type === newEntry.type) | |
) | |
const updated = [newEntry, ...filtered].slice( | |
0, | |
MAX_RECENT_METHODS | |
) | |
updateUserPreferences({ | |
...prefs, | |
recentAddMethods: updated, | |
}) | |
} | |
router.push(cryptoPath) | |
}} | |
flow={flow} | |
/> |
🤖 Prompt for AI Agents
In src/components/AddWithdraw/AddWithdrawRouterView.tsx around lines 220 to 232,
selecting a country or crypto from CountryList navigates but does not update
recentAddMethods; before calling router.push, call the existing routine that
records recent add methods (e.g., dispatch the store action or call the
context/helper like updateRecentAddMethods/addRecentMethod) with a properly
shaped method object for the selected country or crypto, then proceed with
router.push so the “Recent methods” list receives the new item; ensure you reuse
the same data shape used elsewhere for recentAddMethods and keep navigation
unchanged.
const minReceived = useMemo<string>(() => { | ||
let amountNumber: number | ||
|
||
// manual 1% slippage calculation based on the deposited token amount | ||
amountNumber = Number(formatUnits(BigInt(claimLinkData.amount), claimLinkData.tokenDecimals)) * 0.99 // subtract 1% | ||
|
||
const formattedAmount = formatTokenAmount(amountNumber) | ||
|
||
return `$ ${formattedAmount}` | ||
if (!selectedRoute || !resolvedTokenSymbol) return '' | ||
const amount = formatUnits( | ||
BigInt(selectedRoute.rawResponse.route.estimate.toAmountMin), | ||
selectedRoute.rawResponse.route.estimate.toToken.decimals | ||
) | ||
return isStableCoin(resolvedTokenSymbol) ? `$ ${amount}` : `${amount} ${resolvedTokenSymbol}` | ||
}, [selectedRoute, resolvedTokenSymbol, claimLinkData]) |
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.
🛠️ Refactor suggestion
Min Received: clamp decimals for readability; avoid long raw strings
formatUnits
may yield long fractional strings. Pipe through formatTokenAmount
for a user-friendly display. Stablecoins should still render with $
.
- const minReceived = useMemo<string>(() => {
- if (!selectedRoute || !resolvedTokenSymbol) return ''
- const amount = formatUnits(
- BigInt(selectedRoute.rawResponse.route.estimate.toAmountMin),
- selectedRoute.rawResponse.route.estimate.toToken.decimals
- )
- return isStableCoin(resolvedTokenSymbol) ? `$ ${amount}` : `${amount} ${resolvedTokenSymbol}`
- }, [selectedRoute, resolvedTokenSymbol, claimLinkData])
+ const minReceived = useMemo<string>(() => {
+ if (!selectedRoute || !resolvedTokenSymbol) return ''
+ const amountStr = formatUnits(
+ BigInt(selectedRoute.rawResponse.route.estimate.toAmountMin),
+ selectedRoute.rawResponse.route.estimate.toToken.decimals
+ )
+ const formatted = formatTokenAmount(Number(amountStr)) ?? amountStr
+ return isStableCoin(resolvedTokenSymbol) ? `$ ${formatted}` : `${formatted} ${resolvedTokenSymbol}`
+ }, [selectedRoute, resolvedTokenSymbol])
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
const minReceived = useMemo<string>(() => { | |
let amountNumber: number | |
// manual 1% slippage calculation based on the deposited token amount | |
amountNumber = Number(formatUnits(BigInt(claimLinkData.amount), claimLinkData.tokenDecimals)) * 0.99 // subtract 1% | |
const formattedAmount = formatTokenAmount(amountNumber) | |
return `$ ${formattedAmount}` | |
if (!selectedRoute || !resolvedTokenSymbol) return '' | |
const amount = formatUnits( | |
BigInt(selectedRoute.rawResponse.route.estimate.toAmountMin), | |
selectedRoute.rawResponse.route.estimate.toToken.decimals | |
) | |
return isStableCoin(resolvedTokenSymbol) ? `$ ${amount}` : `${amount} ${resolvedTokenSymbol}` | |
}, [selectedRoute, resolvedTokenSymbol, claimLinkData]) | |
const minReceived = useMemo<string>(() => { | |
if (!selectedRoute || !resolvedTokenSymbol) return '' | |
const amountStr = formatUnits( | |
BigInt(selectedRoute.rawResponse.route.estimate.toAmountMin), | |
selectedRoute.rawResponse.route.estimate.toToken.decimals | |
) | |
const formatted = formatTokenAmount(Number(amountStr)) ?? amountStr | |
return isStableCoin(resolvedTokenSymbol) | |
? `$ ${formatted}` | |
: `${formatted} ${resolvedTokenSymbol}` | |
}, [selectedRoute, resolvedTokenSymbol]) |
🤖 Prompt for AI Agents
In src/components/Claim/Link/Onchain/Confirm.view.tsx around lines 62 to 69, the
minReceived string uses formatUnits which can produce long fractional strings;
wrap the raw amount with formatTokenAmount to clamp decimals for readability and
then render the stablecoin prefixed with "$" or append the token symbol for
others. Specifically, compute the raw amount as now, pass that value into
formatTokenAmount (using the token decimals or a sensible display precision),
then return isStableCoin(resolvedTokenSymbol) ? `$ ${formattedAmount}` :
`${formattedAmount} ${resolvedTokenSymbol}` to ensure user-friendly display.
const finalBankDetails = { ...rawData, ...(externalAccountResponse as object) } | ||
setLocalBankDetails(finalBankDetails) | ||
setBankDetails(finalBankDetails) | ||
setReceiverFullName(payload.accountOwnerName.firstName + ' ' + payload.accountOwnerName.lastName) |
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.
Potential string concatenation issue with undefined values.
If either firstName
or lastName
in the payload is undefined, the concatenation might produce "undefined undefined". Add a defensive check.
- setReceiverFullName(payload.accountOwnerName.firstName + ' ' + payload.accountOwnerName.lastName)
+ const firstName = payload.accountOwnerName.firstName || ''
+ const lastName = payload.accountOwnerName.lastName || ''
+ setReceiverFullName(`${firstName} ${lastName}`.trim())
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
setReceiverFullName(payload.accountOwnerName.firstName + ' ' + payload.accountOwnerName.lastName) | |
const firstName = payload.accountOwnerName.firstName || '' | |
const lastName = payload.accountOwnerName.lastName || '' | |
setReceiverFullName(`${firstName} ${lastName}`.trim()) |
🤖 Prompt for AI Agents
In src/components/Claim/Link/views/BankFlowManager.view.tsx around line 317, the
current concatenation uses payload.accountOwnerName.firstName + ' ' +
payload.accountOwnerName.lastName which can produce "undefined" parts if names
are missing; update the assignment to defensively handle missing
accountOwnerName/firstName/lastName by reading the properties with optional
chaining, defaulting each to an empty string (or using nullish coalescing),
joining the non-empty parts with a space and trimming the result so you never
set "undefined" in the receiver full name.
return countryCodeMap[bankDetails?.country?.toUpperCase()] ?? bankDetails.country.toUpperCase() | ||
}, [bankDetails.country]) |
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.
Potential crash when country is missing: fallback calls toUpperCase on undefined
The left side safely optional-chains, but the nullish-coalescing fallback dereferences bankDetails.country directly. If country is undefined, this throws.
Apply this safe normalization (also aligns with the uppercase-3-letter normalization requirement):
- const countryCodeForFlag = useMemo(() => {
- return countryCodeMap[bankDetails?.country?.toUpperCase()] ?? bankDetails.country.toUpperCase()
- }, [bankDetails.country])
+ const countryCodeForFlag = useMemo(() => {
+ const iso3 = (bankDetails?.country ?? '').toString().toUpperCase()
+ return countryCodeMap[iso3] ?? iso3
+ }, [bankDetails?.country])
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
return countryCodeMap[bankDetails?.country?.toUpperCase()] ?? bankDetails.country.toUpperCase() | |
}, [bankDetails.country]) | |
const countryCodeForFlag = useMemo(() => { | |
const iso3 = (bankDetails?.country ?? '').toString().toUpperCase() | |
return countryCodeMap[iso3] ?? iso3 | |
}, [bankDetails?.country]) |
🤖 Prompt for AI Agents
In src/components/Claim/Link/views/Confirm.bank-claim.view.tsx around lines
52-53, the fallback currently calls bankDetails.country.toUpperCase() which can
throw if country is undefined; change the expression to safely normalize by
uppercasing a guarded value (e.g. (bankDetails?.country ?? '').toUpperCase())
when indexing countryCodeMap and for the fallback, and update the useMemo
dependency to bankDetails?.country so we don't dereference undefined in the
dependency array.
// copy the redirect uri if it exists, otherwise copy the current url | ||
const redirectUri = searchParams.get('redirect_uri') | ||
const urlToCopy = redirectUri | ||
? `${window.location.origin}${decodeURIComponent(redirectUri)}` | ||
: window.location.href | ||
await copyTextToClipboardWithFallback(urlToCopy) | ||
setCopyButtonText('Copied!') |
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.
Fix redirect_uri handling to avoid malformed links and decoding errors.
Current logic blindly prefixes window.location.origin and always decodeURIComponent, which can:
- Produce invalid URLs if redirect_uri is absolute (common for OAuth-style params).
- Throw on bad/partial percent-encoding, causing the copy to fail.
Normalize safely with URL + guarded decoding; fall back gracefully.
Apply this diff:
- // copy the redirect uri if it exists, otherwise copy the current url
- const redirectUri = searchParams.get('redirect_uri')
- const urlToCopy = redirectUri
- ? `${window.location.origin}${decodeURIComponent(redirectUri)}`
- : window.location.href
- await copyTextToClipboardWithFallback(urlToCopy)
+ // Copy redirect_uri if present (supports absolute and relative), else copy current URL
+ const redirectUriRaw = searchParams.get('redirect_uri')
+ let urlToCopy = window.location.href
+ if (redirectUriRaw) {
+ // Try to decode if it is percent-encoded. Ignore decode errors.
+ let decoded = redirectUriRaw
+ try {
+ decoded = decodeURIComponent(redirectUriRaw)
+ } catch {
+ /* ignore */
+ }
+ // Normalize to absolute URL using URL API; ignore parse errors.
+ try {
+ urlToCopy = new URL(decoded, window.location.origin).toString()
+ } catch {
+ /* ignore */
+ }
+ }
+ await copyTextToClipboardWithFallback(urlToCopy)
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
// copy the redirect uri if it exists, otherwise copy the current url | |
const redirectUri = searchParams.get('redirect_uri') | |
const urlToCopy = redirectUri | |
? `${window.location.origin}${decodeURIComponent(redirectUri)}` | |
: window.location.href | |
await copyTextToClipboardWithFallback(urlToCopy) | |
setCopyButtonText('Copied!') | |
// Copy redirect_uri if present (supports absolute and relative), else copy current URL | |
const redirectUriRaw = searchParams.get('redirect_uri') | |
let urlToCopy = window.location.href | |
if (redirectUriRaw) { | |
// Try to decode if it is percent-encoded. Ignore decode errors. | |
let decoded = redirectUriRaw | |
try { | |
decoded = decodeURIComponent(redirectUriRaw) | |
} catch { | |
/* ignore */ | |
} | |
// Normalize to absolute URL using URL API; ignore parse errors. | |
try { | |
urlToCopy = new URL(decoded, window.location.origin).toString() | |
} catch { | |
/* ignore */ | |
} | |
} | |
await copyTextToClipboardWithFallback(urlToCopy) | |
setCopyButtonText('Copied!') |
<NavHeader | ||
hideLabel | ||
onPrev={() => { | ||
// Check if the referrer is from the same domain (internal navigation) | ||
const isInternalReferrer = checkIfInternalNavigation() | ||
|
||
if (isInternalReferrer && window.history.length > 1) { | ||
router.back() | ||
} else { | ||
router.push('/home') | ||
} | ||
}} | ||
/> |
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.
💡 Verification agent
🧩 Analysis chain
Mirror history behavior: use replace() for the non-internal fallback
Same reasoning as in PublicProfile: when there’s no internal referrer, replace('/home')
avoids an extra history entry and a possible back-and-forth loop.
- router.push('/home')
+ router.replace('/home')
Also verify that the “/home” route exists in the app router or pages router to prevent a broken fallback:
🏁 Script executed:
#!/bin/bash
# Look for an App Router page or Pages Router file for /home
fd -a -t f '(^|/)home(/page\.(tsx|ts|jsx|js)|\.(tsx|ts|jsx|js))$' 2>/dev/null || true
Length of output: 123
Mirror history behavior and ensure valid fallback route
Using router.replace('/home')
prevents an extra history entry on external navigations. However, no /home
page was found in your App or Pages router (only src/components/Global/Icons/home.tsx
was detected), which would lead to a broken link. Please:
- Change
router.push
torouter.replace
for the non-internal fallback. - Add or correct the
/home
route in your App Router (src/app/home/page.tsx
) or Pages Router (src/pages/home.tsx
), or update the fallback to point at an existing route.
- router.push('/home')
+ router.replace('/home')
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
<NavHeader | |
hideLabel | |
onPrev={() => { | |
// Check if the referrer is from the same domain (internal navigation) | |
const isInternalReferrer = checkIfInternalNavigation() | |
if (isInternalReferrer && window.history.length > 1) { | |
router.back() | |
} else { | |
router.push('/home') | |
} | |
}} | |
/> | |
<NavHeader | |
hideLabel | |
onPrev={() => { | |
// Check if the referrer is from the same domain (internal navigation) | |
const isInternalReferrer = checkIfInternalNavigation() | |
if (isInternalReferrer && window.history.length > 1) { | |
router.back() | |
} else { | |
router.replace('/home') | |
} | |
}} | |
/> |
🤖 Prompt for AI Agents
In src/components/Profile/index.tsx around lines 25 to 37, the back handler uses
router.push('/home') for external fallbacks which adds a history entry and
points to a non-existent route; change router.push to router.replace('/home') to
mirror native history behavior and either add a real /home route (create
src/app/home/page.tsx or src/pages/home.tsx depending on your router) or update
the fallback path to an existing route in your app (e.g., '/' or '/dashboard')
so the redirect is valid.
@@ -8,7 +8,7 @@ export type WithdrawView = 'INITIAL' | 'CONFIRM' | 'STATUS' | |||
|
|||
export interface WithdrawData { | |||
token: ITokenPriceData | |||
chain: peanutInterfaces.ISquidChain & { tokens: peanutInterfaces.ISquidToken[] } | |||
chain: peanutInterfaces.ISquidChain & { networkName: string; tokens: peanutInterfaces.ISquidToken[] } |
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.
💡 Verification agent
🧩 Analysis chain
Type expansion for WithdrawData.chain to include networkName looks good; ensure all producers provide it
This aligns with the repo-wide shift to networkName. Please verify that all creators of WithdrawData (and onReview payloads) now supply chain.networkName to prevent runtime casts or undefined access down the line. Also consider a small type alias to avoid repeating the long intersection across files.
Apply this minimal refactor to reduce repetition:
- chain: peanutInterfaces.ISquidChain & { networkName: string; tokens: peanutInterfaces.ISquidToken[] }
+ chain: ISquidChainWithTokens
Add this helper type near the top of the file (outside of the selected range):
type ISquidChainWithTokens = peanutInterfaces.ISquidChain & {
networkName: string
tokens: peanutInterfaces.ISquidToken[]
}
Run this script to confirm there are no lingering old shapes:
🏁 Script executed:
#!/bin/bash
# 1) Find any remaining uses missing `networkName` in chain intersections
rg -nP --type=ts '\bISquidChain\s*&\s*{[^}]*\btokens:\s*interfaces?\.ISquidToken\[\][^}]?}' -g '!**/node_modules/**' | rg -nPv 'networkName\s*:\s*string'
# 2) Check that `getSquidChainsAndTokens` advertises the updated return type
rg -nP --type=ts 'getSquidChainsAndTokens\s*\([^)]*\)\s*:\s*Promise<\s*Record<string,\s*interfaces?\.ISquidChain\s*&\s*{[^}]*networkName\s*:\s*string' src/app/actions/squid.ts -g '!**/node_modules/**'
Length of output: 1245
Ensure all ISquidChain
intersections include networkName
and adopt a shared alias
The grep results show multiple locations still using
interfaces.ISquidChain & { tokens: interfaces.ISquidToken[] }
without the new networkName: string
field. These must be updated—both for correctness and to eliminate repetition via a type alias.
• Define the alias (e.g. at the top of src/context/WithdrawFlowContext.tsx
or in a central types.ts
):
type ISquidChainWithTokens = peanutInterfaces.ISquidChain & {
networkName: string;
tokens: peanutInterfaces.ISquidToken[];
}
• Replace each intersection with the alias:
- src/hooks/useTokenChainIcons.ts:18
- src/lib/url-parser/parser.ts:111, 152
- src/lib/url-parser/types/payment.ts:15
- src/lib/validation/token.ts:79–81
For example:
- chainDetails?: interfaces.ISquidChain & { tokens: interfaces.ISquidToken[] }
+ chainDetails?: ISquidChainWithTokens
• Update the getSquidChainsAndTokens
signature in src/app/actions/squid.ts
to return:
Promise<Record<string, ISquidChainWithTokens>>
This will enforce at compile time that every producer of WithdrawData.chain
(and related payloads) supplies networkName
, and it DRYs up the codebase by centralizing the intersection type.
🤖 Prompt for AI Agents
In src/context/WithdrawFlowContext.tsx around line 11, the code uses an inline
intersection type for ISquidChain with tokens but omits networkName and repeats
this pattern across the codebase; define a shared type alias (e.g.
ISquidChainWithTokens) that extends peanutInterfaces.ISquidChain with
networkName: string and tokens: peanutInterfaces.ISquidToken[] at the top of
this file or a central types.ts, then replace all occurrences of
peanutInterfaces.ISquidChain & { tokens: ... } (and any similar inline
intersections) with that alias in the listed files
(src/hooks/useTokenChainIcons.ts line ~18, src/lib/url-parser/parser.ts lines
~111 and ~152, src/lib/url-parser/types/payment.ts line ~15,
src/lib/validation/token.ts lines ~79–81) and finally update
getSquidChainsAndTokens in src/app/actions/squid.ts to return
Promise<Record<string, ISquidChainWithTokens>> so all producers/consumers
require networkName and tokens consistently.
* Used to get the user's country code from ipapi.co | ||
* @returns {object} An object containing the country code, whether the request is loading, and any error that occurred | ||
*/ | ||
export const useGeoLocaion = () => { |
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.
💡 Verification agent
🧩 Analysis chain
Typo in hook name and file name (useGeoLocaion) — rename to useGeoLocation
Spelling mismatch is easy to miss and will cause import inconsistencies across the app. Recommend renaming the file to useGeoLocation.ts
and the export accordingly, then updating imports.
🏁 Script executed:
#!/bin/bash
# Find current imports and usages to update after rename.
rg -n "useGeoLocaion|useGeoLocation" -C2
Length of output: 1465
Rename useGeoLocaion
to useGeoLocation
The typo exists in both the hook definition and its import. Please apply the following mandatory refactors:
- Rename the file
•src/hooks/useGeoLocaion.ts
→src/hooks/useGeoLocation.ts
- Update the hook’s export in
src/hooks/useGeoLocation.ts
- export const useGeoLocaion = () => { + export const useGeoLocation = () => {
- Update all imports (example in CountryList.tsx):
- import { useGeoLocaion } from '@/hooks/useGeoLocaion' + import { useGeoLocation } from '@/hooks/useGeoLocation'
- Ensure any remaining references (e.g. destructured variables) align with the corrected hook name.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
export const useGeoLocaion = () => { | |
export const useGeoLocation = () => { |
🤖 Prompt for AI Agents
In src/hooks/useGeoLocaion.ts around line 8, the hook and filename are
misspelled as useGeoLocaion; rename the file to src/hooks/useGeoLocation.ts,
change the exported hook identifier to export const useGeoLocation = () => { ...
}, and update all imports and references across the codebase (e.g.,
CountryList.tsx and any destructured variables) to use useGeoLocation so the
filename, export and usage are consistent.
const kycUrl = convertPersonaUrl(apiResponse.kycLink) | ||
setIframeOptions({ | ||
src: kycUrl, |
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.
💡 Verification agent
🧩 Analysis chain
KYC URL converter likely malformed (missing bracket) — will break Persona widget URL
convertPersonaUrl
appears to construct fields[iqt_token
without the closing bracket before =
. That will produce an invalid query string and block the KYC flow. The issue is in src/utils/bridge-accounts.utils.ts
(see provided snippet lines 19-31).
Proposed fix in src/utils/bridge-accounts.utils.ts
:
export const convertPersonaUrl = (url: string) => {
const parsedUrl = new URL(url)
const templateId = parsedUrl.searchParams.get('inquiry-template-id')
const iqtToken = parsedUrl.searchParams.get('fields[iqt_token]')
const developerId = parsedUrl.searchParams.get('fields[developer_id]')
const referenceId = parsedUrl.searchParams.get('reference-id')
const origin = encodeURIComponent(
isInAllowedFrame() ? new URL(document.referrer).origin : window.location.origin
)
return `https://bridge.withpersona.com/widget?environment=production&inquiry-template-id=${templateId}&fields[iqt_token]=${iqtToken}&iframe-origin=${origin}&redirect-uri=${origin}&fields[developer_id]=${developerId}&reference-id=${referenceId}`
}
🏁 Script executed:
#!/bin/bash
# Verify the malformed param in the current branch.
rg -n "convertPersonaUrl" -C3
rg -n "fields\\[iqt_token" -C2 src/utils
Length of output: 3350
Fix malformed fields[iqt_token]
parameter in convertPersonaUrl
The return statement in src/utils/bridge-accounts.utils.ts
incorrectly omits the closing bracket before the =
for the fields[iqt_token]
query parameter, producing:
…&fields[iqt_token=${iqtToken}&…
This generates an invalid URL and will break the Persona widget flow.
• File: src/utils/bridge-accounts.utils.ts
Line: 31 (return statement)
Suggested diff:
- return `https://bridge.withpersona.com/widget?environment=production&inquiry-template-id=${templateId}&fields[iqt_token=${iqtToken}&iframe-origin=${origin}&redirect-uri=${origin}&fields[developer_id]=${developerId}&reference-id=${referenceId}`
+ return `https://bridge.withpersona.com/widget?environment=production&inquiry-template-id=${templateId}&fields[iqt_token]=${iqtToken}&iframe-origin=${origin}&redirect-uri=${origin}&fields[developer_id]=${developerId}&reference-id=${referenceId}`
Please apply this change to ensure the fields[iqt_token]
parameter is correctly formatted.
🤖 Prompt for AI Agents
In src/utils/bridge-accounts.utils.ts around line 31, the return statement
builds a query param for fields[iqt_token] but is missing the closing bracket
before the equals sign, producing "...&fields[iqt_token=${iqtToken}&..."; update
the return string so the parameter is formatted as
"fields[iqt_token]=${iqtToken}" (i.e. add the closing ] before the =). Ensure
the rest of the query string concatenation/encoding remains intact after this
change.
* 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]>
* 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]>
* 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]>
* 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]>
* 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]>
No description provided.