Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
5a56b95
feat: add recover funds page
jjramirezn Sep 8, 2025
f969a82
fix(recover-funds): correct naming for layout
jjramirezn Sep 9, 2025
6ecda60
fix(recover-funds): reset state when recovering funds fails
jjramirezn Sep 9, 2025
e0a8849
refactor(recover-funds): change success message
jjramirezn Sep 9, 2025
b4261d5
fix(recover-funds): small fixes
jjramirezn Sep 9, 2025
7ccfe71
fix(recover-funds): update copy
jjramirezn Sep 9, 2025
452773f
feat(confirmation-modal): add token and network icons
jjramirezn Sep 9, 2025
76e07dd
fixed twitter username and some other fixes
Hugo0 Sep 11, 2025
a72a391
Merge pull request #1203 from peanutprotocol/chore/twitter-username-u…
Hugo0 Sep 11, 2025
6a267c1
thx @kushagra
Hugo0 Sep 11, 2025
69f0744
Merge pull request #1204 from peanutprotocol/chore/twitter-username-u…
Hugo0 Sep 11, 2025
9ba3498
add identity verification button in profile page
Zishan-7 Sep 2, 2025
a23ee65
fix: route typo and add kyc error and loading states
Zishan-7 Sep 2, 2025
aa4cf42
Merge pull request #1200 from peanutprotocol/feat/recover-funds-prod
Hugo0 Sep 11, 2025
c1cec18
hotfix: handle guest link claim issue
kushagrasarathe Sep 12, 2025
9096316
Update src/app/actions/external-accounts.ts
Hugo0 Sep 12, 2025
67d221f
Merge pull request #1209 from peanutprotocol/hotfix/poland-claim
Hugo0 Sep 12, 2025
e2a8111
fix: increase min claim amount to 2 usd
kushagrasarathe Sep 12, 2025
d7d34ab
Merge pull request #1210 from peanutprotocol/hotfix/poland-claim
Hugo0 Sep 12, 2025
8915aa2
Merge branch 'peanut-wallet' into sync/prod
kushagrasarathe Sep 12, 2025
025e01d
fix: increase min bank claim limit to
kushagrasarathe Sep 12, 2025
c1cad8b
Update public/game/peanut-game.html
Hugo0 Sep 15, 2025
5ff374e
Update src/components/Profile/index.tsx
Hugo0 Sep 15, 2025
566d919
Merge branch 'peanut-wallet-dev' into sync/prod
kushagrasarathe Sep 15, 2025
252b32f
Merge branch 'sync/prod' of https://github.com/peanutprotocol/peanut-…
kushagrasarathe Sep 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Live at: [peanut.to](https://peanut.me) | [staging.peanut.me](https://staging.peanut.to)
Live at: [peanut.me](https://peanut.me) | [staging.peanut.me](https://staging.peanut.me)

## Getting Started

Expand Down
6 changes: 3 additions & 3 deletions public/game/peanut-game.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
<meta name="description" content="Peanut game based on Chrome Dino game" />
<meta property="og:title" content="Peanut tries to escape hungry squirrels" />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://www.peanut.to" />
<meta property="og:url" content="https://peanut.me" />

<meta name="twitter:site" content="@peanutprotocol" />
<meta name="twitter:creator" content="@peanutprotocol" />
<meta name="twitter:site" content="@joinpeanut" />
<meta name="twitter:creator" content="@joinpeanut" />
<meta name="twitter:title" content="Check out the cool hidden game from Google Chrome!" />
<meta name="twitter:description" content="Check out the cool hidden game from Google Chrome!" />
<script src="https://apis.google.com/js/platform.js" async defer></script>
Expand Down
2 changes: 1 addition & 1 deletion redirects.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[
{
"source": "/docs",
"destination": "https://docs.peanut.to",
"destination": "https://docs.peanut.me",
"permanent": false,
"basePath": false
},
Expand Down
8 changes: 7 additions & 1 deletion src/app/actions/external-accounts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const API_URL = process.env.PEANUT_API_URL!
export async function createBridgeExternalAccountForGuest(
customerId: string,
accountDetails: AddBankAccountPayload
): Promise<IBridgeAccount | { error: string }> {
): Promise<IBridgeAccount | { error: string; source?: string }> {
try {
const response = await fetchWithSentry(`${API_URL}/bridge/customers/${customerId}/external-accounts`, {
method: 'POST',
Expand All @@ -23,6 +23,12 @@ export async function createBridgeExternalAccountForGuest(

const data = await response.json()

if (data?.code === 'invalid_parameters') {
const source =
typeof data.source === 'string' ? data.source : data?.source?.key
return { error: data?.message ?? 'Invalid parameters', source }
}

if (!response.ok) {
return { error: data.error || 'Failed to create external account.' }
}
Expand Down
7 changes: 5 additions & 2 deletions src/components/AddWithdraw/DynamicBankAccountForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -443,8 +443,11 @@ export const DynamicBankAccountForm = forwardRef<{ handleSubmit: () => void }, D
>
Review
</Button>
{submissionError && <ErrorAlert description={submissionError} />}
{error && <ErrorAlert description={error} />}
{submissionError ? (
<ErrorAlert description={submissionError} />
) : (
error && <ErrorAlert description={error} />
)}
</form>
</div>
</div>
Expand Down
10 changes: 7 additions & 3 deletions src/components/Claim/Link/views/BankFlowManager.view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,6 @@ export const BankFlowManager = (props: IClaimScreenProps) => {
try {
const addBankAccountResponse = await addBankAccount(payload)
if (addBankAccountResponse.error) {
setError(addBankAccountResponse.error)
return { error: addBankAccountResponse.error }
}
if (addBankAccountResponse.data?.id) {
Expand Down Expand Up @@ -321,9 +320,15 @@ export const BankFlowManager = (props: IClaimScreenProps) => {
}
if (!senderInfo.bridgeCustomerId) throw new Error('Sender bridge customer ID not found')

const threeLetterCountryCode = getCountryCodeForWithdraw(selectedCountry.id)
const payloadWithCountry = {
...payload,
country: selectedCountry.id,
countryCode: threeLetterCountryCode,
address: {
...payload.address,
country: threeLetterCountryCode,
},
country: threeLetterCountryCode,
}
Comment thread
Hugo0 marked this conversation as resolved.

const externalAccountResponse = await createBridgeExternalAccountForGuest(
Expand Down Expand Up @@ -363,7 +368,6 @@ export const BankFlowManager = (props: IClaimScreenProps) => {
return {}
} catch (e: any) {
const errorString = ErrorHandler(e)
setError(errorString)
Sentry.captureException(e)
return { error: errorString }
} finally {
Expand Down
7 changes: 3 additions & 4 deletions src/components/Common/ActionList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ import Divider from '../0_Bruddle/Divider'
import { Button } from '../0_Bruddle'
import { PEANUT_LOGO_BLACK } from '@/assets/illustrations'
import Image from 'next/image'
import { saveRedirectUrl } from '@/utils'
import { usePathname, useRouter, useSearchParams } from 'next/navigation'
import { useRouter } from 'next/navigation'
import { PEANUTMAN_LOGO } from '@/assets/peanut'
import { BankClaimType, useDetermineBankClaimType } from '@/hooks/useDetermineBankClaimType'
import useSavedAccounts from '@/hooks/useSavedAccounts'
Expand Down Expand Up @@ -62,7 +61,7 @@ export default function ActionList({ claimLinkData, isLoggedIn, flow, requestLin
const handleMethodClick = async (method: PaymentMethod) => {
if (flow === 'claim' && claimLinkData) {
const amountInUsd = parseFloat(formatUnits(claimLinkData.amount, claimLinkData.tokenDecimals))
if (method.id === 'bank' && amountInUsd < 1) {
if (method.id === 'bank' && amountInUsd < 5) {
setShowMinAmountError(true)
return
}
Expand Down Expand Up @@ -177,7 +176,7 @@ export default function ActionList({ claimLinkData, isLoggedIn, flow, requestLin
visible={showMinAmountError}
onClose={() => setShowMinAmountError(false)}
title="Minimum Amount "
description={'The minimum amount for a bank transaction is $1. Please try a different method.'}
description={'The minimum amount for a bank transaction is $5. Please try a different method.'}
icon="alert"
ctas={[{ text: 'Close', shadowSize: '4', onClick: () => setShowMinAmountError(false) }]}
iconContainerClassName="bg-yellow-400"
Expand Down
6 changes: 3 additions & 3 deletions src/components/Global/Footer/consts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import * as icons from '@/assets/icons'
export const SOCIALS = [
{
name: 'twitter',
url: 'https://twitter.com/peanutprotocol',
url: 'https://twitter.com/joinpeanut',
logoSrc: icons.TWITTER_ICON.src,
},
{
Expand All @@ -18,7 +18,7 @@ export const SOCIALS = [
},
{
name: 'gitbook',
url: 'https://docs.peanut.to',
url: 'https://docs.peanut.me',
logoSrc: icons.GITBOOK_ICON.src,
},
{
Expand All @@ -31,7 +31,7 @@ export const SOCIALS = [
export const LINKS = [
{
name: 'Docs',
url: 'https://docs.peanut.to',
url: 'https://docs.peanut.me',
},
{
name: 'Terms & Privacy',
Expand Down
5 changes: 3 additions & 2 deletions src/components/Global/Icons/Icon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ import { ProcessingIcon } from './processing'
import { FailedIcon } from './failed'
import { ChevronDownIcon } from './chevron-down'
import { DoubleCheckIcon } from './double-check'
import { ShieldIcon } from './shield'
import { QuestionMarkIcon } from './question-mark'
import { ShieldIcon } from './shield'

// available icon names
export type IconName =
Expand Down Expand Up @@ -122,6 +122,7 @@ export type IconName =
| 'chevron-down'
| 'shield'
| 'question-mark'
| 'shield'

export interface IconProps extends SVGProps<SVGSVGElement> {
name: IconName
Expand Down Expand Up @@ -188,8 +189,8 @@ const iconComponents: Record<IconName, ComponentType<SVGProps<SVGSVGElement>>> =
processing: ProcessingIcon,
failed: FailedIcon,
'chevron-down': ChevronDownIcon,
shield: ShieldIcon,
'question-mark': QuestionMarkIcon,
shield: ShieldIcon,
}

export const Icon: FC<IconProps> = ({ name, size = 24, width, height, ...props }) => {
Expand Down
2 changes: 1 addition & 1 deletion src/components/LandingPage/Footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ const Footer = () => {
<Image src={TELEGRAM_ICON} alt="Telegram" width={20} height={20} />
</a>
<a
href="https://x.com/PeanutProtocol"
href="https://x.com/joinpeanut"
target="_blank"
rel="noopener noreferrer"
aria-label="Follow us on Twitter"
Expand Down
2 changes: 1 addition & 1 deletion src/components/Profile/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export const Profile = () => {
{/* <ProfileMenuItem
icon="smile"
label="Invite friends to Peanut"
href="https://docs.peanut.to/how-to-use-peanut-links/referrals"
href="https://docs.peanut.me/how-to-use-peanut-links/referrals"
position="single"
isExternalLink
/> */}
Expand Down
2 changes: 1 addition & 1 deletion src/components/Profile/views/IdentityVerification.view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { KycVerificationInProgressModal } from '@/components/Kyc/KycVerification
import { useAuth } from '@/context/authContext'
import { useKycFlow } from '@/hooks/useKycFlow'
import { useRouter } from 'next/navigation'
import React, { useEffect, useMemo, useRef, useState } from 'react'
import { useEffect, useMemo, useRef, useState } from 'react'

const IdentityVerificationView = () => {
const { user, fetchUser } = useAuth()
Expand Down
2 changes: 1 addition & 1 deletion src/components/Setup/Views/SetupPasskey.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ const SetupPasskey = () => {
rel="noopener noreferrer"
target="_blank"
className="underline underline-offset-2"
href="https://docs.peanut.to/passkeys"
href="https://docs.peanut.me/passkeys"
>
Learn more about what Passkeys are
</Link>{' '}
Expand Down
2 changes: 1 addition & 1 deletion src/config/wagmi.config.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const projectId = process.env.NEXT_PUBLIC_WC_PROJECT_ID ?? ''
const metadata = {
name: 'Peanut Protocol',
description: 'Peanut protocol - send crypto with links',
url: process.env.NEXT_PUBLIC_BASE_URL || 'https://peanut.to', // origin must match your domain & subdomain
url: process.env.NEXT_PUBLIC_BASE_URL || 'https://peanut.me', // origin must match your domain & subdomain
icons: [`${process.env.NEXT_PUBLIC_BASE_URL}/favicon.ico`],
}
Comment thread
kushagrasarathe marked this conversation as resolved.

Expand Down
4 changes: 2 additions & 2 deletions src/constants/tooltips.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ export const TOOLTIPS = {

For US bank accounts, enter just your bank account number, no routing number.

<a href="https://docs.peanut.to/cashout/supported-geographies" target="_blank" class="underline text-blue-600">Supported regions</a>`,
<a href="https://docs.peanut.me/cashout/supported-geographies" target="_blank" class="underline text-blue-600">Supported regions</a>`,

CLAIM_RECIPIENT_INFO: `You can claim your funds to:
• Any Ethereum wallet address
• ENS domain (.eth)
• EU bank account (IBAN)
• US bank account

<a href="https://docs.peanut.to/cashout/supported-geographies" target="_blank" class="underline text-blue-600">Learn more about supported regions</a>`,
<a href="https://docs.peanut.me/cashout/supported-geographies" target="_blank" class="underline text-blue-600">Learn more about supported regions</a>`,

CASHOUT_FAQ: `• What currencies can I cash out?
Most popular tokens and stablecoins are supported.
Expand Down
2 changes: 1 addition & 1 deletion src/utils/sdkErrorHandler.utils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ export const ErrorHandler = (error: any) => {
} else if (error.toString().includes('The operation either timed out or was not allowed')) {
return 'Please confirm the transaction.'
} else {
return 'Something failed. Please try again.'
return 'There was an issue with your request. Please contact support.'
}
}
}
Loading