From 02523837f5a9adc01e2aa8ebda8b5b55d94fc196 Mon Sep 17 00:00:00 2001 From: guillermo dieguez Date: Thu, 12 Feb 2026 17:25:37 -0300 Subject: [PATCH 01/18] =?UTF-8?q?=F0=9F=8C=90=20app:=20adjust=20translatio?= =?UTF-8?q?ns?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/many-balloons-bake.md | 5 +++++ src/i18n/es.json | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 .changeset/many-balloons-bake.md diff --git a/.changeset/many-balloons-bake.md b/.changeset/many-balloons-bake.md new file mode 100644 index 000000000..9d1d0a466 --- /dev/null +++ b/.changeset/many-balloons-bake.md @@ -0,0 +1,5 @@ +--- +"@exactly/mobile": patch +--- + +🌐 adjust translations diff --git a/src/i18n/es.json b/src/i18n/es.json index f6da10b82..e0a47fe66 100644 --- a/src/i18n/es.json +++ b/src/i18n/es.json @@ -366,7 +366,7 @@ "Operation ID copied!": "¡ID de operación copiado!", "Payment details": "Detalles del pago", "Mode": "Modo", - "Pay Later": "Pagar después", + "Pay Later": "Pagar Después", "Fixed rate APR": "TNA fija", "Installments": "Cuotas", "Total": "Total", @@ -383,7 +383,7 @@ "You repay in total": "Pagarás en total", "{{rate}} FIXED APR": "{{rate}} TNA FIJA", "Loan activity": "Actividad de préstamos", - "Any purchases made with Pay Later will show up here.": "Cualquier compra realizada con Pagar después aparecerá aquí.", + "Any purchases made with Pay Later will show up here.": "Cualquier compra realizada con Pagar Después aparecerá aquí.", "Select your funding installment plan": "Selecciona tu plan de cuotas de financiamiento", "Funding failed": "El financiamiento falló", "Funding request sent": "Solicitud de financiamiento enviada", From b3b39169169889d152d7d7095043776192b3f1cb Mon Sep 17 00:00:00 2001 From: guillermo dieguez Date: Tue, 10 Feb 2026 19:16:44 -0300 Subject: [PATCH 02/18] =?UTF-8?q?=F0=9F=92=84=20app:=20unify=20add=20funds?= =?UTF-8?q?=20gap=20value?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/spicy-dragons-raise.md | 5 +++++ src/components/add-funds/AddFunds.tsx | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/spicy-dragons-raise.md diff --git a/.changeset/spicy-dragons-raise.md b/.changeset/spicy-dragons-raise.md new file mode 100644 index 000000000..892d5ce2b --- /dev/null +++ b/.changeset/spicy-dragons-raise.md @@ -0,0 +1,5 @@ +--- +"@exactly/mobile": patch +--- + +💄 unify add funds gap value diff --git a/src/components/add-funds/AddFunds.tsx b/src/components/add-funds/AddFunds.tsx index 4da0f5042..5066cf5dd 100644 --- a/src/components/add-funds/AddFunds.tsx +++ b/src/components/add-funds/AddFunds.tsx @@ -110,7 +110,7 @@ export default function AddFunds() { ) : ( providers && ( - + {Object.entries(providers).flatMap(([providerKey, provider]) => { const currencies = provider.onramp.currencies; return currencies.map((currency) => ( From d9892334eb37fc35a633e9b4b93da76785ec54a6 Mon Sep 17 00:00:00 2001 From: guillermo dieguez Date: Mon, 9 Feb 2026 10:13:06 -0300 Subject: [PATCH 03/18] =?UTF-8?q?=F0=9F=92=84=20app:=20replace=20fonts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/little-hoops-train.md | 5 ++++ app.config.ts | 5 ++-- cspell.json | 4 +-- src/app/_layout.tsx | 10 +++---- src/assets/fonts/BDOGrotesk-DemiBold.otf | Bin 108332 -> 0 bytes src/assets/fonts/BDOGrotesk-Regular.otf | Bin 110764 -> 0 bytes src/assets/fonts/IBMPlexMono-Medm.otf | Bin 84848 -> 0 bytes src/assets/fonts/SplineSans-Regular.otf | Bin 0 -> 48488 bytes src/assets/fonts/SplineSans-SemiBold.otf | Bin 0 -> 53204 bytes src/components/add-funds/AddCrypto.tsx | 2 +- src/components/benefits/BenefitSheet.tsx | 2 +- src/components/card/CardDetails.tsx | 3 -- src/components/card/CardPIN.tsx | 6 ++-- src/components/home/Portfolio.tsx | 1 - src/components/home/PortfolioSummary.tsx | 1 - src/components/pay-mode/PaymentSheet.tsx | 1 - src/components/send-funds/Amount.tsx | 2 +- src/components/send-funds/Asset.tsx | 2 +- src/components/send-funds/Contact.tsx | 2 +- src/components/send-funds/ReviewSheet.tsx | 2 +- src/components/shared/CopyAddressSheet.tsx | 2 +- src/components/shared/ProfileHeader.tsx | 4 +-- src/components/shared/Text.tsx | 21 ++++++------- src/components/shared/TransactionDetails.tsx | 2 +- src/components/swaps/TokenInput.tsx | 1 - tamagui.config.ts | 30 ++++++++----------- 26 files changed, 47 insertions(+), 61 deletions(-) create mode 100644 .changeset/little-hoops-train.md delete mode 100644 src/assets/fonts/BDOGrotesk-DemiBold.otf delete mode 100644 src/assets/fonts/BDOGrotesk-Regular.otf delete mode 100644 src/assets/fonts/IBMPlexMono-Medm.otf create mode 100644 src/assets/fonts/SplineSans-Regular.otf create mode 100644 src/assets/fonts/SplineSans-SemiBold.otf diff --git a/.changeset/little-hoops-train.md b/.changeset/little-hoops-train.md new file mode 100644 index 000000000..05bbc9f8f --- /dev/null +++ b/.changeset/little-hoops-train.md @@ -0,0 +1,5 @@ +--- +"@exactly/mobile": patch +--- + +💄 replace fonts diff --git a/app.config.ts b/app.config.ts index bdbe41dd7..2c7522261 100644 --- a/app.config.ts +++ b/app.config.ts @@ -80,9 +80,8 @@ export default { "expo-font", { fonts: [ - "src/assets/fonts/BDOGrotesk-DemiBold.otf", - "src/assets/fonts/BDOGrotesk-Regular.otf", - "src/assets/fonts/IBMPlexMono-Medm.otf", + "src/assets/fonts/SplineSans-Regular.otf", + "src/assets/fonts/SplineSans-SemiBold.otf", ], } satisfies FontProps, ], diff --git a/cspell.json b/cspell.json index c7935d432..95dfa7379 100644 --- a/cspell.json +++ b/cspell.json @@ -49,7 +49,6 @@ "decisioned", "defi", "delegatecall", - "demi", "deployless", "dieguezguille", "dismissable", @@ -70,12 +69,10 @@ "gitmoji", "gitmojis", "graaljs", - "grotesk", "hdpi", "hexlify", "hideable", "hono", - "IBMPlexMono-Medm", "IERC", "indoc", "infinitism", @@ -146,6 +143,7 @@ "solmate", "sourcify", "spkg", + "splinesans", "spotlightjs", "staticcall", "streamingfast", diff --git a/src/app/_layout.tsx b/src/app/_layout.tsx index 3b59d1a7a..664a39ddf 100644 --- a/src/app/_layout.tsx +++ b/src/app/_layout.tsx @@ -30,9 +30,8 @@ import { WagmiProvider } from "wagmi"; import domain from "@exactly/common/domain"; -import BDOGroteskDemiBold from "../assets/fonts/BDOGrotesk-DemiBold.otf"; -import BDOGroteskRegular from "../assets/fonts/BDOGrotesk-Regular.otf"; -import IBMPlexMonoMedium from "../assets/fonts/IBMPlexMono-Medm.otf"; +import SplineSansRegular from "../assets/fonts/SplineSans-Regular.otf"; +import SplineSansSemiBold from "../assets/fonts/SplineSans-SemiBold.otf"; import AppIcon from "../assets/icon.png"; import ThemeProvider from "../components/context/ThemeProvider"; import Error from "../components/shared/Error"; @@ -135,9 +134,8 @@ export default wrap(function RootLayout() { const navigationContainer = useNavigationContainerRef(); useServerFonts({ - "BDOGrotesk-DemiBold": BDOGroteskDemiBold as FontSource, - "BDOGrotesk-Regular": BDOGroteskRegular as FontSource, - "IBMPlexMono-Medm": IBMPlexMonoMedium as FontSource, + "SplineSans-Regular": SplineSansRegular as FontSource, + "SplineSans-SemiBold": SplineSansSemiBold as FontSource, }); useServerAssets([AppIcon]); useEffect(() => { diff --git a/src/assets/fonts/BDOGrotesk-DemiBold.otf b/src/assets/fonts/BDOGrotesk-DemiBold.otf deleted file mode 100644 index d968f184f6b30a50808ef18e8c7b82373a7aa5c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108332 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%0DQ)%su)y<~x1i@oCviIa{ugK6<@TE^G%VAow9{MK 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 F{{wnESBC%q diff --git a/src/assets/fonts/BDOGrotesk-Regular.otf b/src/assets/fonts/BDOGrotesk-Regular.otf deleted file mode 100644 index 9bfe3ec91a34962b72dec64ff9f47a522c17611a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110764 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

yss=i=a>B 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

f9)tbVk8`3{je<)-UfVsm{S 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 Dv86|8 diff --git a/src/assets/fonts/IBMPlexMono-Medm.otf b/src/assets/fonts/IBMPlexMono-Medm.otf deleted file mode 100644 index f99385d310b1c6e91ab03e3c3e6ea20ff899e9db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84848 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 z 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 skonZ*eva0k^5|yUt~nj8h {address && ( - + {shortenHex(address, 10, 12)} )} diff --git a/src/components/benefits/BenefitSheet.tsx b/src/components/benefits/BenefitSheet.tsx index 3b11e659c..9873327ed 100644 --- a/src/components/benefits/BenefitSheet.tsx +++ b/src/components/benefits/BenefitSheet.tsx @@ -114,7 +114,7 @@ export default function BenefitSheet({ benefit, open, onClose }: BenefitSheetPro {isPaxLoading ? ( ) : paxData ? ( - + {paxData.associateId} ) : ( diff --git a/src/components/card/CardDetails.tsx b/src/components/card/CardDetails.tsx index feef0caa6..a4ff7fd4a 100644 --- a/src/components/card/CardDetails.tsx +++ b/src/components/card/CardDetails.tsx @@ -101,7 +101,6 @@ export default function CardDetails({ open, onClose }: { onClose: () => void; op {details.pan.match(/.{1,4}/g)?.join(" ") ?? ""} @@ -134,7 +133,6 @@ export default function CardDetails({ open, onClose }: { onClose: () => void; op {`${card.expirationMonth}/${card.expirationYear.length === 4 ? card.expirationYear.slice(-2) : card.expirationYear}`} @@ -152,7 +150,6 @@ export default function CardDetails({ open, onClose }: { onClose: () => void; op {details.cvc} diff --git a/src/components/card/CardPIN.tsx b/src/components/card/CardPIN.tsx index faf0dacb6..27d8af433 100644 --- a/src/components/card/CardPIN.tsx +++ b/src/components/card/CardPIN.tsx @@ -106,15 +106,13 @@ function Countdown({ pin, error, onRetry }: { error: unknown; onRetry: () => voi {Array.from({ length: pin.length }).map((_, index) => ( // eslint-disable-next-line @eslint-react/no-array-index-key - + {displayPIN ? pin[index] : "*"} ))} ) : ( - - {t("N/A")} - + {t("N/A")} )} - + {title} + ); })} From 52ac45258e279459313a5f4f29cbe4f70f30bb0b Mon Sep 17 00:00:00 2001 From: guillermo dieguez Date: Mon, 9 Feb 2026 12:35:50 -0300 Subject: [PATCH 10/18] =?UTF-8?q?=F0=9F=8D=B1=20app:=20add=20home=20card?= =?UTF-8?q?=20images?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/images/card-bg.svg | 1 + src/assets/images/exa.svg | 1 + 2 files changed, 2 insertions(+) create mode 100644 src/assets/images/card-bg.svg create mode 100644 src/assets/images/exa.svg diff --git a/src/assets/images/card-bg.svg b/src/assets/images/card-bg.svg new file mode 100644 index 000000000..170f33f67 --- /dev/null +++ b/src/assets/images/card-bg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/exa.svg b/src/assets/images/exa.svg new file mode 100644 index 000000000..97faef5cc --- /dev/null +++ b/src/assets/images/exa.svg @@ -0,0 +1 @@ + \ No newline at end of file From e7b2bfb898778322dfda12966998df1c45ac1464 Mon Sep 17 00:00:00 2001 From: guillermo dieguez Date: Tue, 10 Feb 2026 13:01:52 -0300 Subject: [PATCH 11/18] =?UTF-8?q?=F0=9F=90=9B=20app:=20fix=20protocol=20as?= =?UTF-8?q?set=20logos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/quick-mangos-rescue.md | 5 +++++ src/components/shared/AssetSelector.tsx | 3 +-- src/utils/usePortfolio.ts | 5 +++-- 3 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 .changeset/quick-mangos-rescue.md diff --git a/.changeset/quick-mangos-rescue.md b/.changeset/quick-mangos-rescue.md new file mode 100644 index 000000000..be2ede773 --- /dev/null +++ b/.changeset/quick-mangos-rescue.md @@ -0,0 +1,5 @@ +--- +"@exactly/mobile": patch +--- + +🐛 fix protocol asset logos diff --git a/src/components/shared/AssetSelector.tsx b/src/components/shared/AssetSelector.tsx index 6e41bd05f..77c751b7c 100644 --- a/src/components/shared/AssetSelector.tsx +++ b/src/components/shared/AssetSelector.tsx @@ -75,8 +75,7 @@ export default function AssetSelector({ ), }); - const symbol = - asset.type === "external" ? asset.symbol : asset.symbol.slice(3) === "WETH" ? "ETH" : asset.symbol.slice(3); + const symbol = asset.symbol; const name = asset.type === "external" ? asset.name : asset.assetName === "Wrapped Ether" ? "Ether" : asset.assetName; const isSelected = selectedMarket === (asset.type === "external" ? asset.address : asset.market); diff --git a/src/utils/usePortfolio.ts b/src/utils/usePortfolio.ts index 0a1fb3e10..435631b93 100644 --- a/src/utils/usePortfolio.ts +++ b/src/utils/usePortfolio.ts @@ -94,6 +94,7 @@ export default function usePortfolio(account?: Hex, options?: { sortBy?: "usdcFi .filter(({ floatingDepositAssets }) => floatingDepositAssets > 0n) .map((market) => ({ ...market, + symbol: market.symbol.slice(3) === "WETH" ? "ETH" : market.symbol.slice(3), usdValue: Number((withdrawLimit(markets, market.market) * market.usdPrice) / BigInt(10 ** market.decimals)) / 1e18, type: "protocol" as const, @@ -118,8 +119,8 @@ export default function usePortfolio(account?: Hex, options?: { sortBy?: "usdcFi const combined = [...protocolAssets, ...externalAssets]; return combined.sort((a, b) => { if (options?.sortBy === "usdcFirst") { - const aSymbol = a.type === "protocol" ? a.symbol.slice(3) : a.symbol; - const bSymbol = b.type === "protocol" ? b.symbol.slice(3) : b.symbol; + const aSymbol = a.symbol; + const bSymbol = b.symbol; if (aSymbol === "USDC" && bSymbol !== "USDC") return -1; if (bSymbol === "USDC" && aSymbol !== "USDC") return 1; } From cc13046688fb1ba98a43226b83aa480197bda3e8 Mon Sep 17 00:00:00 2001 From: guillermo dieguez Date: Fri, 6 Feb 2026 12:53:26 -0300 Subject: [PATCH 12/18] =?UTF-8?q?=F0=9F=92=84=20app:=20restyle=20card=20st?= =?UTF-8?q?atus=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/curly-waves-yell.md | 5 + .maestro/flows/local.yaml | 1 + .maestro/subflows/activateCard.yaml | 2 +- .maestro/subflows/readHome.yaml | 67 ++++ .maestro/subflows/repay.yaml | 22 +- .maestro/subflows/rollover.yaml | 19 +- .maestro/subflows/verifyIdentity.yaml | 8 +- src/components/home/CardLimits.tsx | 86 ----- src/components/home/CardStatus.tsx | 314 +++++++++++++++--- src/components/home/CreditLimitSheet.tsx | 70 ++++ src/components/home/Home.tsx | 129 ++++++- src/components/home/InstallmentsSheet.tsx | 155 +++++++++ src/components/home/InstallmentsSpotlight.tsx | 137 ++++++++ src/components/home/PayModeSheet.tsx | 127 +++++++ src/components/home/SpendingLimitSheet.tsx | 70 ++++ src/components/home/SpendingLimitsSheet.tsx | 141 -------- src/i18n/es.json | 24 +- src/utils/queryClient.ts | 7 + src/utils/useInstallmentRates.ts | 73 ++++ 19 files changed, 1142 insertions(+), 315 deletions(-) create mode 100644 .changeset/curly-waves-yell.md create mode 100644 .maestro/subflows/readHome.yaml delete mode 100644 src/components/home/CardLimits.tsx create mode 100644 src/components/home/CreditLimitSheet.tsx create mode 100644 src/components/home/InstallmentsSheet.tsx create mode 100644 src/components/home/InstallmentsSpotlight.tsx create mode 100644 src/components/home/PayModeSheet.tsx create mode 100644 src/components/home/SpendingLimitSheet.tsx delete mode 100644 src/components/home/SpendingLimitsSheet.tsx create mode 100644 src/utils/useInstallmentRates.ts diff --git a/.changeset/curly-waves-yell.md b/.changeset/curly-waves-yell.md new file mode 100644 index 000000000..7e877eb62 --- /dev/null +++ b/.changeset/curly-waves-yell.md @@ -0,0 +1,5 @@ +--- +"@exactly/mobile": patch +--- + +💄 restyle card status component diff --git a/.maestro/flows/local.yaml b/.maestro/flows/local.yaml index bba3d4653..86feba1de 100644 --- a/.maestro/flows/local.yaml +++ b/.maestro/flows/local.yaml @@ -22,4 +22,5 @@ tags: [critical] - runFlow: ../subflows/repay.yaml - runFlow: ../subflows/verifyIdentity.yaml - runFlow: ../subflows/activateCard.yaml +- runFlow: ../subflows/readHome.yaml - runFlow: ../subflows/storeCoverage.yaml diff --git a/.maestro/subflows/activateCard.yaml b/.maestro/subflows/activateCard.yaml index 16ce793ac..ab3b6d493 100644 --- a/.maestro/subflows/activateCard.yaml +++ b/.maestro/subflows/activateCard.yaml @@ -42,4 +42,4 @@ appId: ${APP_ID ?? "app.exactly"} text: \$[\s\d,.\xa0]+ above: Available balance - tapOn: Home -- assertVisible: SPENDING LIMIT +- assertVisible: Spending limit diff --git a/.maestro/subflows/readHome.yaml b/.maestro/subflows/readHome.yaml new file mode 100644 index 000000000..5284d5e42 --- /dev/null +++ b/.maestro/subflows/readHome.yaml @@ -0,0 +1,67 @@ +appId: ${APP_ID ?? "app.exactly"} +--- +- assertVisible: ${output.account.slice(0, 6)}…${output.account.slice(-4)} +- runFlow: + when: { true: "${maestro.platform != 'web'}" } + commands: [{ assertVisible: Settings }] +- runFlow: + when: { platform: web } + commands: [{ assertVisible: { id: Settings } }] +- runFlow: { file: tapAria.yaml, env: { aria: Hide sensitive } } +- assertNotVisible: + text: \$[\s\d,.\xa0]+ + below: Portfolio +- runFlow: { file: tapAria.yaml, env: { aria: Show sensitive } } +- assertVisible: + text: \$[\s\d,.\xa0]+ + below: Portfolio +- assertVisible: Portfolio +- assertVisible: + text: \$[\s\d,.\xa0]+ + below: Portfolio +- assertVisible: Manage portfolio +- runFlow: readPortfolio.yaml +- assertTrue: ${output.portfolio > 0} +- assertVisible: Add funds +- assertVisible: Send +- assertVisible: Swap +- assertVisible: Exa Card pay mode +- assertVisible: Learn more +- assertNotVisible: Getting Started +- scrollUntilVisible: { element: Upcoming payments } +- assertVisible: Benefits +- extendedWaitUntil: + visible: 30 days of free travel insurance + timeout: 15000 +- tapOn: 30 days of free travel insurance +- assertVisible: Copy your ID and get 30 days of travel insurance for free on Pax Assistance. +- tapOn: COPY ID +- runFlow: { file: tapAria.yaml, env: { aria: Close } } +- extendedWaitUntil: + visible: 20% OFF on eSims + timeout: 15000 +- tapOn: 20% OFF on eSims +- assertVisible: Stay connected around the world. +- assertVisible: Terms & conditions +- runFlow: { file: tapAria.yaml, env: { aria: Close } } +- extendedWaitUntil: + visible: Visa Signature benefits + timeout: 15000 +- tapOn: Visa Signature benefits +- assertVisible: Visa Signature Exa Card benefits +- assertVisible: A world of benefits. +- runFlow: { file: tapAria.yaml, env: { aria: Close } } +- assertVisible: Upcoming payments +- assertVisible: + text: \$[\d,]+\.\d{2} + below: Upcoming payments +- scrollUntilVisible: { element: Latest activity } +- assertVisible: Latest activity +- assertVisible: View all +- assertNotVisible: No activity yet +- tapOn: View all +- tapOn: Home +- assertVisible: Portfolio +- assertVisible: + text: \$[\s\d,.\xa0]+ + below: Portfolio diff --git a/.maestro/subflows/repay.yaml b/.maestro/subflows/repay.yaml index cde785b08..7995d7665 100644 --- a/.maestro/subflows/repay.yaml +++ b/.maestro/subflows/repay.yaml @@ -2,18 +2,17 @@ appId: ${APP_ID ?? "app.exactly"} --- - scrollUntilVisible: { element: Upcoming payments } - copyTextFrom: - text: \d+[,.]\d{2} + text: \$[\d,]+\.\d{2} below: Upcoming payments - leftOf: Repay -- evalScript: ${output.debt = Number(maestro.copiedText)} +- evalScript: ${output.debt = Number(maestro.copiedText.replace(/[^\d.]/g, ''))} - copyTextFrom: - text: "[^%.]+" - below: "${maestro.copiedText}" - leftOf: Repay + text: "[^%.$]+" + below: Upcoming payments + leftOf: "${maestro.copiedText}" - evalScript: ${output.maturity = maestro.copiedText} -- tapOn: { text: Repay, rightOf: "${output.maturity}" } +- tapOn: "${output.maturity}" - waitForAnimationToEnd -- tapOn: { text: Repay, leftOf: Rollover } +- tapOn: { text: Pay, leftOf: Rollover } - runFlow: { when: { true: "${!amount}" }, commands: [{ tapOn: Max }] } - runFlow: when: { true: "${amount}" } @@ -50,9 +49,8 @@ appId: ${APP_ID ?? "app.exactly"} commands: - assertVisible: "${output.maturity}" - copyTextFrom: - text: \d+[,.]\d{2} - above: "${output.maturity}" + text: \$[\d,]+\.\d{2} below: Upcoming payments - leftOf: Repay - - assertTrue: ${Math.abs(output.debt - Number(maestro.copiedText) - Number(amount)) < 0.02} + rightOf: "${output.maturity}" + - assertTrue: ${Math.abs(output.debt - Number(maestro.copiedText.replace(/[^\d.]/g, '')) - Number(amount)) < 0.02} - tapOn: Home diff --git a/.maestro/subflows/rollover.yaml b/.maestro/subflows/rollover.yaml index 3f8337b47..b25f4bf71 100644 --- a/.maestro/subflows/rollover.yaml +++ b/.maestro/subflows/rollover.yaml @@ -2,16 +2,14 @@ appId: ${APP_ID ?? "app.exactly"} --- - scrollUntilVisible: { element: Upcoming payments } - copyTextFrom: - text: \d+[,.]\d{2} + text: "[^%.$]+" below: Upcoming payments - leftOf: Repay index: 1 -- copyTextFrom: - text: "[^%.]+" - below: "${maestro.copiedText}" - leftOf: Repay - evalScript: ${output.secondMaturity = maestro.copiedText} -- tapOn: Repay +- copyTextFrom: + text: "[^%.$]+" + below: Upcoming payments +- tapOn: "${maestro.copiedText}" - waitForAnimationToEnd - tapOn: Rollover - runFlow: @@ -28,12 +26,7 @@ appId: ${APP_ID ?? "app.exactly"} env: { aria: Pending proposals, tap: Home } - scrollUntilVisible: { element: Upcoming payments } - copyTextFrom: - text: \d+[,.]\d{2} + text: "[^%.$]+" below: Upcoming payments - leftOf: Repay -- copyTextFrom: - text: "[^%.]+" - below: "${maestro.copiedText}" - leftOf: Repay - assertTrue: ${maestro.copiedText === output.secondMaturity} - tapOn: Home diff --git a/.maestro/subflows/verifyIdentity.yaml b/.maestro/subflows/verifyIdentity.yaml index ba307515f..50b9b4759 100644 --- a/.maestro/subflows/verifyIdentity.yaml +++ b/.maestro/subflows/verifyIdentity.yaml @@ -42,7 +42,7 @@ appId: ${APP_ID ?? "app.exactly"} - runFlow: when: { platform: android } commands: [{ tapOn: Confirmation Code }] - - inputText: "12345" + - inputText: '12345' - hideKeyboard - tapOn: Continue - assertVisible: What is your phone number? @@ -51,14 +51,14 @@ appId: ${APP_ID ?? "app.exactly"} - tapOn: 🇦🇷 Argentina +54 - tapOn: containsChild: { containsChild: { id: textinput_prefix_text } } # cspell:ignore textinput - - inputText: "1199999999" + - inputText: '1199999999' - hideKeyboard - tapOn: Continue - assertVisible: Confirm your phone number - runFlow: # HACK when: { platform: android } commands: [{ tapOn: { id: first } }] - - inputText: "1234" + - inputText: '1234' - hideKeyboard - extendedWaitUntil: { visible: Economic activity } - tapOn: Economic activity @@ -81,6 +81,6 @@ appId: ${APP_ID ?? "app.exactly"} - runScript: ../dist/getAccount.js - runScript: file: ../dist/approveKYC.js - env: { credentialId: "${output.owner}" } + env: { credentialId: '${output.owner}' } - tapOn: Home - assertNotVisible: Getting Started diff --git a/src/components/home/CardLimits.tsx b/src/components/home/CardLimits.tsx deleted file mode 100644 index b244fe191..000000000 --- a/src/components/home/CardLimits.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import React from "react"; -import { useTranslation } from "react-i18next"; - -import { useRouter } from "expo-router"; - -import { ChevronRight, Info } from "@tamagui/lucide-icons"; -import { XStack, YStack } from "tamagui"; - -import { useQuery } from "@tanstack/react-query"; -import { zeroAddress } from "viem"; - -import { marketUSDCAddress, previewerAddress } from "@exactly/common/generated/chain"; -import { useReadPreviewerExactly } from "@exactly/common/generated/hooks"; -import { borrowLimit, WAD, withdrawLimit } from "@exactly/lib"; - -import useAccount from "../../utils/useAccount"; -import AssetLogo from "../shared/AssetLogo"; -import Text from "../shared/Text"; - -import type { CardDetails } from "../../utils/server"; - -export default function CardLimits({ onPress }: { onPress: () => void }) { - const { - t, - i18n: { language }, - } = useTranslation(); - const { address } = useAccount(); - const router = useRouter(); - const { data: card } = useQuery({ queryKey: ["card", "details"] }); - const { data: markets } = useReadPreviewerExactly({ address: previewerAddress, args: [address ?? zeroAddress] }); - const isCredit = card ? card.mode > 0 : false; - return ( - - - - {isCredit ? null : } - - {`$${(markets - ? Number( - isCredit ? borrowLimit(markets, marketUSDCAddress) : withdrawLimit(markets, marketUSDCAddress, WAD), - ) / 1e6 - : 0 - ).toLocaleString(language, { style: "decimal", minimumFractionDigits: 2, maximumFractionDigits: 2 })}`} - - - - - {t("Spending limit")} - - - - - { - router.push("/pay-mode"); - }} - > - - {isCredit ? t("{{count}} installments", { count: card?.mode }) : t("Pay Now")} - - - - - ); -} diff --git a/src/components/home/CardStatus.tsx b/src/components/home/CardStatus.tsx index 59e67a58d..c1c7db1a4 100644 --- a/src/components/home/CardStatus.tsx +++ b/src/components/home/CardStatus.tsx @@ -1,28 +1,56 @@ -import React from "react"; -import { Platform } from "react-native"; +import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Platform, Pressable, StyleSheet, type View as RNView } from "react-native"; -import { useRouter } from "expo-router"; +import { selectionAsync } from "expo-haptics"; -import { XStack, YStack } from "tamagui"; +import { CalendarDays, ChevronRight, CreditCard, Info, Wallet, Zap } from "@tamagui/lucide-icons"; +import { View, XStack, YStack } from "tamagui"; -import { SIGNATURE_PRODUCT_ID } from "@exactly/common/panda"; +import { useQuery } from "@tanstack/react-query"; -import CardLimits from "./CardLimits"; -import SignatureCard from "../../assets/images/card-signature.svg"; -import Card from "../../assets/images/card.svg"; +import CardBg from "../../assets/images/card-bg.svg"; +import Exa from "../../assets/images/exa.svg"; +import reportError from "../../utils/reportError"; +import Amount from "../shared/Amount"; +import Text from "../shared/Text"; -export default function CardStatus({ onInfoPress, productId }: { onInfoPress: () => void; productId: string }) { - const router = useRouter(); +export default function CardStatus({ + collateral, + creditLimit, + spotlightRef, + mode, + onCreditLimitInfoPress, + onDetailsPress, + onInstallmentsPress, + onLearnMorePress, + onModeChange, + onSpendingLimitInfoPress, + spendingLimit, +}: { + collateral: string; + creditLimit: string; + mode: number; + onCreditLimitInfoPress: () => void; + onDetailsPress: () => void; + onInstallmentsPress: () => void; + onLearnMorePress: () => void; + onModeChange: (mode: number) => void; + onSpendingLimitInfoPress: () => void; + spendingLimit: string; + spotlightRef?: React.RefObject; +}) { + const { t } = useTranslation(); return ( - - - + + + {t("Exa Card pay mode")} + + + + {t("Learn more")} + + + + + + + + + + + { + selectionAsync().catch(reportError); + onDetailsPress(); + }} + hitSlop={8} + > + {({ pressed, hovered }) => ( + + + + {t("Details")} + + + )} + + + + - + ); +} + +function PayModeToggle({ + spotlightRef, + mode, + onInstallmentsPress, + onModeChange, +}: { + mode: number; + onInstallmentsPress: () => void; + onModeChange: (mode: number) => void; + spotlightRef?: React.RefObject; +}) { + const { t } = useTranslation(); + const { data: lastInstallments } = useQuery({ queryKey: ["settings", "installments"] }); + const isDebit = mode === 0; + const [width, setWidth] = useState(0); + return ( + { + setWidth(event.nativeEvent.layout.width); + }} + > + + { - router.push("/card"); + if (isDebit) return; + selectionAsync().catch(reportError); + onModeChange(0); }} > - {productId === SIGNATURE_PRODUCT_ID ? ( - - ) : ( - - )} - + + + + {t("Now")} + + + + { + selectionAsync().catch(reportError); + if (mode > 0) onInstallmentsPress(); + else onModeChange(lastInstallments ?? 1); + }} + > + + + + {t("Later in {{count}}", { count: mode > 0 ? mode : (lastInstallments ?? 1) })} + + + ); } + +function LimitPaginator({ + collateral, + creditLimit, + mode, + onCreditLimitInfoPress, + onSpendingLimitInfoPress, + spendingLimit, +}: { + collateral: string; + creditLimit: string; + mode: number; + onCreditLimitInfoPress: () => void; + onSpendingLimitInfoPress: () => void; + spendingLimit: string; +}) { + const { t } = useTranslation(); + const [width, setWidth] = useState(0); + return ( + setWidth(event.nativeEvent.layout.width)}> + 0 ? -width : 0} animation="moderate" animateOnly={["transform"]}> + + + + + {t("Spending limit")} + + + + + + + + $ + + + {spendingLimit.replace("$", "")} + + + + + + + + + {t("Credit limit")} + + + + + + + {t("Collateral {{value}}", { value: collateral })} + + + + + $ + + + {creditLimit.replace("$", "")} + + + + + + ); +} + +const styles = StyleSheet.create({ + details: { position: "absolute", top: 8, right: 8 }, + exa: { position: "absolute", top: 12, left: 16 }, + learnMore: { flexDirection: "row", alignItems: "center", gap: 4 }, + segment: { flex: 1, justifyContent: "center", alignItems: "center" }, +}); diff --git a/src/components/home/CreditLimitSheet.tsx b/src/components/home/CreditLimitSheet.tsx new file mode 100644 index 000000000..56d5891b3 --- /dev/null +++ b/src/components/home/CreditLimitSheet.tsx @@ -0,0 +1,70 @@ +import React from "react"; +import { Trans, useTranslation } from "react-i18next"; +import { Pressable } from "react-native"; + +import { ExternalLink, X } from "@tamagui/lucide-icons"; +import { XStack, YStack } from "tamagui"; + +import { presentArticle } from "../../utils/intercom"; +import reportError from "../../utils/reportError"; +import Button from "../shared/Button"; +import ModalSheet from "../shared/ModalSheet"; +import Text from "../shared/Text"; + +export default function CreditLimitSheet({ onClose, open }: { onClose: () => void; open: boolean }) { + const { t } = useTranslation(); + return ( + + + + + + + {t("Credit limit")} + + + + + + + + }} + /> + + + {t("It's based on the value of your collateral assets and updates as their value changes.")} + + + + + + + + + {t("Close")} + + + + + + ); +} diff --git a/src/components/home/Home.tsx b/src/components/home/Home.tsx index 990e6aead..b1c2c150f 100644 --- a/src/components/home/Home.tsx +++ b/src/components/home/Home.tsx @@ -1,38 +1,47 @@ import React, { useRef, useState } from "react"; import { useTranslation } from "react-i18next"; -import { RefreshControl } from "react-native"; +import { RefreshControl, type View as RNView } from "react-native"; import { useRouter } from "expo-router"; import { AnimatePresence, ScrollView, YStack } from "tamagui"; import { TimeToFullDisplay } from "@sentry/react-native"; -import { useQuery } from "@tanstack/react-query"; +import { useMutation, useQuery } from "@tanstack/react-query"; import { zeroAddress } from "viem"; import { useBytecode } from "wagmi"; import accountInit from "@exactly/common/accountInit"; -import { exaPluginAddress, exaPreviewerAddress, previewerAddress } from "@exactly/common/generated/chain"; +import { + exaPluginAddress, + exaPreviewerAddress, + marketUSDCAddress, + previewerAddress, +} from "@exactly/common/generated/chain"; import { useReadExaPreviewerPendingProposals, useReadPreviewerExactly, useReadUpgradeableModularAccountGetInstalledPlugins, } from "@exactly/common/generated/hooks"; import { PLATINUM_PRODUCT_ID } from "@exactly/common/panda"; -import { healthFactor, WAD } from "@exactly/lib"; +import { borrowLimit, healthFactor, WAD, withdrawLimit } from "@exactly/lib"; import CardUpgradeSheet from "./card-upgrade/CardUpgradeSheet"; import CardStatus from "./CardStatus"; +import CreditLimitSheet from "./CreditLimitSheet"; import GettingStarted from "./GettingStarted"; import HomeActions from "./HomeActions"; import HomeDisclaimer from "./HomeDisclaimer"; +import InstallmentsSheet from "./InstallmentsSheet"; +import InstallmentsSpotlight from "./InstallmentsSpotlight"; +import PayModeSheet from "./PayModeSheet"; import PortfolioSummary from "./PortfolioSummary"; -import SpendingLimitsSheet from "./SpendingLimitsSheet"; +import SpendingLimitSheet from "./SpendingLimitSheet"; import VisaSignatureBanner from "./VisaSignatureBanner"; import VisaSignatureModal from "./VisaSignatureSheet"; import queryClient from "../../utils/queryClient"; import reportError from "../../utils/reportError"; -import { getActivity, getKYCStatus, type CardDetails } from "../../utils/server"; +import { getActivity, getKYCStatus, setCardMode, type CardDetails } from "../../utils/server"; import useAccount from "../../utils/useAccount"; import usePortfolio from "../../utils/usePortfolio"; import useTabPress from "../../utils/useTabPress"; @@ -57,9 +66,14 @@ export default function Home() { t, i18n: { language }, } = useTranslation(); - const [spendingLimitsInfoSheetOpen, setSpendingLimitsInfoSheetOpen] = useState(false); + const [creditLimitSheetOpen, setCreditLimitSheetOpen] = useState(false); + const [installmentsSheetOpen, setInstallmentsSheetOpen] = useState(false); + const [payModeSheetOpen, setPayModeSheetOpen] = useState(false); + const [spendingLimitSheetOpen, setSpendingLimitSheetOpen] = useState(false); const [visaSignatureModalOpen, setVisaSignatureModalOpen] = useState(false); + const spotlightRef = useRef(null); + const { address: account } = useAccount(); const { data: credential } = useQuery({ queryKey: ["credential"] }); const { data: bytecode, refetch: refetchBytecode } = useBytecode({ @@ -112,8 +126,37 @@ export default function Home() { KYCStatus && "code" in KYCStatus && (KYCStatus.code === "ok" || KYCStatus.code === "legacy kyc"), ); const { data: card } = useQuery({ queryKey: ["card", "details"], enabled: !!account && !!bytecode }); + const { data: spotlightShown } = useQuery({ queryKey: ["settings", "installments-spotlight"] }); + const { mutateAsync: mutateMode } = useMutation({ + mutationKey: ["card", "mode"], + mutationFn: setCardMode, + onMutate: async (newMode) => { + await queryClient.cancelQueries({ queryKey: ["card", "details"] }); + const previous = queryClient.getQueryData(["card", "details"]); + queryClient.setQueryData(["card", "details"], (old: CardDetails) => ({ ...old, mode: newMode })); + return { previous }; + }, + onError: (error, _, context) => { + if (context?.previous) queryClient.setQueryData(["card", "details"], context.previous); + reportError(error); + }, + onSettled: async (data) => { + await queryClient.invalidateQueries({ queryKey: ["card", "details"] }); + if (data && "mode" in data && data.mode > 0) queryClient.setQueryData(["settings", "installments"], data.mode); + }, + }); + + let collateralUSD = 0n; + if (markets) { + for (const market of markets) { + if (market.floatingDepositAssets > 0n) { + collateralUSD += (market.floatingDepositAssets * market.usdPrice) / 10n ** BigInt(market.decimals); + } + } + } const scrollRef = useRef(null); + const scrollOffsetRef = useRef(0); const refresh = () => { refetchActivity().catch(reportError); refetchBytecode().catch(reportError); @@ -138,6 +181,10 @@ export default function Home() { backgroundColor="transparent" contentContainerStyle={{ backgroundColor: "$backgroundMild" }} showsVerticalScrollIndicator={false} + scrollEventThrottle={16} + onScroll={(event) => { + scrollOffsetRef.current = event.nativeEvent.contentOffset.y; + }} refreshControl={} > @@ -162,7 +209,7 @@ export default function Home() { }} /> )} - + {card && ( { - setSpendingLimitsInfoSheetOpen(true); + collateral={`$${(Number(collateralUSD) / 1e18).toLocaleString(language, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`} + creditLimit={`$${(markets ? Number(borrowLimit(markets, marketUSDCAddress)) / 1e6 : 0).toLocaleString(language, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`} + spotlightRef={spotlightRef} + mode={card.mode} + onCreditLimitInfoPress={() => { + setCreditLimitSheetOpen(true); + }} + onDetailsPress={() => { + router.push("/card"); + }} + onInstallmentsPress={() => { + setInstallmentsSheetOpen(true); + }} + onLearnMorePress={() => { + setPayModeSheetOpen(true); + }} + onModeChange={(mode: number) => { + mutateMode(mode).catch(reportError); }} - productId={card.productId} + onSpendingLimitInfoPress={() => { + setSpendingLimitSheetOpen(true); + }} + spendingLimit={`$${(markets ? Number(withdrawLimit(markets, marketUSDCAddress, WAD)) / 1e6 : 0).toLocaleString(language, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`} /> )} @@ -212,10 +278,32 @@ export default function Home() { queryClient.resetQueries({ queryKey: ["card-upgrade"] }).catch(reportError); }} /> - { + setInstallmentsSheetOpen(false); + }} + onModeChange={(mode: number) => { + mutateMode(mode).catch(reportError); + }} + /> + { + setCreditLimitSheetOpen(false); + }} + /> + { + setPayModeSheetOpen(false); + }} + /> + { - setSpendingLimitsInfoSheetOpen(false); + setSpendingLimitSheetOpen(false); }} /> + {card && !spotlightShown && ( + { + queryClient.setQueryData(["settings", "installments-spotlight"], true); + }} + onPress={() => { + setInstallmentsSheetOpen(true); + }} + /> + )} diff --git a/src/components/home/InstallmentsSheet.tsx b/src/components/home/InstallmentsSheet.tsx new file mode 100644 index 000000000..574944f1f --- /dev/null +++ b/src/components/home/InstallmentsSheet.tsx @@ -0,0 +1,155 @@ +import React, { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Dimensions, Pressable, ScrollView, StyleSheet } from "react-native"; + +import { selectionAsync } from "expo-haptics"; +import { useRouter } from "expo-router"; + +import { Check, X } from "@tamagui/lucide-icons"; +import { XStack, YStack } from "tamagui"; + +import MAX_INSTALLMENTS from "@exactly/common/MAX_INSTALLMENTS"; + +import reportError from "../../utils/reportError"; +import useInstallmentRates from "../../utils/useInstallmentRates"; +import Button from "../shared/Button"; +import ModalSheet from "../shared/ModalSheet"; +import SafeView from "../shared/SafeView"; +import Skeleton from "../shared/Skeleton"; +import Text from "../shared/Text"; + +const CARD_SIZE = 104; +const GAP = 8; +const PADDING = 24; +const INSTALLMENTS = Array.from({ length: MAX_INSTALLMENTS }, (_, index) => index + 1); + +export default function InstallmentsSheet({ + mode, + onClose, + onModeChange, + open, +}: { + mode: number; + onClose: () => void; + onModeChange: (mode: number) => void; + open: boolean; +}) { + const { + t, + i18n: { language }, + } = useTranslation(); + const [selected, setSelected] = useState(mode > 0 ? mode : 1); + useEffect(() => { + if (open) setSelected(mode > 0 ? mode : 1); // eslint-disable-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect + }, [mode, open]); + const rates = useInstallmentRates(); + const initial = Math.max(mode, 1); + const initialX = Math.max( + 0, + PADDING + (initial - 1) * (CARD_SIZE + GAP) + CARD_SIZE + PADDING - Dimensions.get("window").width, + ); + return ( + + + + + + + + {t("Set installments")} + + + + + + + {t( + "Choose how many installments to use for future card purchases. You can always change this before each purchase.", + )} + + + + {INSTALLMENTS.map((installment) => { + const isSelected = selected === installment; + return ( + { + setSelected(installment); + selectionAsync().catch(reportError); + }} + > + + {installment} + + {rates?.[installment - 1] === undefined ? ( + + ) : ( + + {t("{{apr}} APR", { + apr: (Number(rates[installment - 1]) / 1e18).toLocaleString(language, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }), + })} + + )} + + ); + })} + + + + + + {t("Installments calculator")} + + + + + + ); +} + +const styles = StyleSheet.create({ + scrollContent: { gap: GAP, paddingHorizontal: PADDING }, +}); diff --git a/src/components/home/InstallmentsSpotlight.tsx b/src/components/home/InstallmentsSpotlight.tsx new file mode 100644 index 000000000..987a9c96f --- /dev/null +++ b/src/components/home/InstallmentsSpotlight.tsx @@ -0,0 +1,137 @@ +import React, { useEffect, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Modal, Pressable, StyleSheet, useWindowDimensions, type View as RNView } from "react-native"; +import SVG, { Defs, Mask, Rect } from "react-native-svg"; + +import { Theme, View, YStack, type ScrollView } from "tamagui"; + +import Text from "../shared/Text"; + +export default function InstallmentsSpotlight({ + onDismiss, + onPress, + scrollOffset, + scrollRef, + targetRef, +}: { + onDismiss: () => void; + onPress: () => void; + scrollOffset: React.RefObject; + scrollRef: React.RefObject; + targetRef: React.RefObject; +}) { + const { t } = useTranslation(); + const { width: screenWidth, height: screenHeight } = useWindowDimensions(); + const [target, setTarget] = useState<{ height: number; width: number; x: number; y: number }>(); + useEffect(() => { + let remeasureTimer: ReturnType; + const timer = setTimeout(() => { + targetRef.current?.measureInWindow((x, y, width, height) => { + if (width > 0 && height > 0 && y >= 0 && y + height <= screenHeight) { + setTarget({ x, y, width, height }); + return; + } + if (width > 0 && height > 0) { + const contentY = scrollOffset.current + y; + scrollRef.current?.scrollTo({ y: Math.max(0, contentY - screenHeight / 3), animated: true }); + } else { + scrollRef.current?.scrollTo({ y: 0, animated: true }); + } + remeasureTimer = setTimeout(() => { + targetRef.current?.measureInWindow((x2, y2, w2, h2) => { + if (w2 > 0 && h2 > 0) setTarget({ x: x2, y: y2, width: w2, height: h2 }); + }); + }, 400); + }); + }, 600); + return () => { + clearTimeout(timer); + clearTimeout(remeasureTimer); + }; + }, [screenHeight, scrollOffset, scrollRef, targetRef]); + if (!target) return null; + const cutout = { + x: target.x - 8, + y: target.y - 8, + width: target.width + 16, + height: target.height + 16, + }; + const cutoutRadius = cutout.height / 2; + const tooltipTop = cutout.y + cutout.height + 12; + const tooltipLeft = Math.max(16, Math.min(cutout.x + cutout.width / 2 - 100, screenWidth - 216)); + const arrowLeft = cutout.x + cutout.width / 2 - tooltipLeft - 6; + return ( + + + + + + + + + + + + + + { + onPress(); + onDismiss(); + }} + /> + + + + + {t("Tap here to change the number of installments")} + + + + + ); +} + +const styles = StyleSheet.create({ cutoutPress: { position: "absolute" } }); diff --git a/src/components/home/PayModeSheet.tsx b/src/components/home/PayModeSheet.tsx new file mode 100644 index 000000000..d6df27bae --- /dev/null +++ b/src/components/home/PayModeSheet.tsx @@ -0,0 +1,127 @@ +import React from "react"; +import { useTranslation } from "react-i18next"; +import { Pressable } from "react-native"; + +import { CalendarDays, ExternalLink, X, Zap } from "@tamagui/lucide-icons"; +import { XStack, YStack } from "tamagui"; + +import MAX_INSTALLMENTS from "@exactly/common/MAX_INSTALLMENTS"; + +import { presentArticle } from "../../utils/intercom"; +import reportError from "../../utils/reportError"; +import Button from "../shared/Button"; +import ModalSheet from "../shared/ModalSheet"; +import Text from "../shared/Text"; + +export default function PayModeSheet({ onClose, open }: { onClose: () => void; open: boolean }) { + const { t } = useTranslation(); + return ( + + + + + + + {t("Exa Card pay mode")} + + + + + + + {t("Change the pay mode before each purchase and pay how you want.")} + + + + + + + + {t("Now")} + + + + {t("Pay instantly using your available USDC.")} + + + + + + + {t("Later")} + + + + {t( + "Pay without selling your crypto. Use it as collateral to unlock a credit limit and split purchases into up to {{max}} installments.", + { max: MAX_INSTALLMENTS }, + )} + + + + + + + + + {t("Close")} + + + + + + ); +} diff --git a/src/components/home/SpendingLimitSheet.tsx b/src/components/home/SpendingLimitSheet.tsx new file mode 100644 index 000000000..a9fcbdef1 --- /dev/null +++ b/src/components/home/SpendingLimitSheet.tsx @@ -0,0 +1,70 @@ +import React from "react"; +import { Trans, useTranslation } from "react-i18next"; +import { Pressable } from "react-native"; + +import { ExternalLink, X } from "@tamagui/lucide-icons"; +import { XStack, YStack } from "tamagui"; + +import { presentArticle } from "../../utils/intercom"; +import reportError from "../../utils/reportError"; +import Button from "../shared/Button"; +import ModalSheet from "../shared/ModalSheet"; +import Text from "../shared/Text"; + +export default function SpendingLimitSheet({ onClose, open }: { onClose: () => void; open: boolean }) { + const { t } = useTranslation(); + return ( + + + + + + + {t("Spending limit")} + + + + + + + + }} + /> + + + {t("It's based on the USDC available in your balance.")} + + + + + + + + + {t("Close")} + + + + + + ); +} diff --git a/src/components/home/SpendingLimitsSheet.tsx b/src/components/home/SpendingLimitsSheet.tsx deleted file mode 100644 index 13348b2c6..000000000 --- a/src/components/home/SpendingLimitsSheet.tsx +++ /dev/null @@ -1,141 +0,0 @@ -import React from "react"; -import { useTranslation } from "react-i18next"; -import { Pressable } from "react-native"; - -import { X } from "@tamagui/lucide-icons"; -import { ScrollView, XStack, YStack } from "tamagui"; - -import { presentArticle } from "../../utils/intercom"; -import reportError from "../../utils/reportError"; -import Button from "../shared/Button"; -import ModalSheet from "../shared/ModalSheet"; -import SafeView from "../shared/SafeView"; -import Text from "../shared/Text"; -import View from "../shared/View"; - -export default function SpendingLimitsSheet({ open, onClose }: { onClose: () => void; open: boolean }) { - const { t } = useTranslation(); - return ( - - - - - - - {t("Spending limit")} - - - {t("Your spending limit is the maximum amount you can spend on your Exa Card.")} - - - - - - - {t("WHEN")} - - - - {t("PAY NOW")} - - - - {t("IS ENABLED")} - - - {t("Only your USDC balance counts toward your spending limit.")} - - - - - {t("WHEN")} - - - - {t("INSTALLMENTS")} - - - - {t("IS ENABLED")} - - - {t("All supported assets count toward your spending limit.")} - - - - - { - presentArticle("9922633").catch(reportError); - }} - > - - {t("Learn more about your spending limit")} - - - - - - - - ); -} diff --git a/src/i18n/es.json b/src/i18n/es.json index 2d863bc5d..aa7dd06c1 100644 --- a/src/i18n/es.json +++ b/src/i18n/es.json @@ -74,6 +74,28 @@ "Select token to pay": "Seleccionar token a pagar", "Select token to receive": "Seleccionar token a recibir", "Spending limit": "Límite de gasto", + "Spending limit info": "Información del límite de gasto", + "Credit limit": "Límite de crédito", + "Credit limit info": "Información del límite de crédito", + "Collateral {{value}}": "Colateral {{value}}", + "Exa Card pay mode": "Exa Card modo de pago", + "Now": "Ahora", + "Later in {{count}}_one": "{{count}} cuota", + "Later in {{count}}_other": "{{count}} cuotas", + "Set installments": "Configurar cuotas", + "Choose how many installments to use for future card purchases. You can always change this before each purchase.": "Elige cuántas cuotas usar para futuras compras con tarjeta. Siempre puedes cambiar esto antes de cada compra.", + "Set Pay Later in {{count}}_one": "Pagar en {{count}} cuota", + "Set Pay Later in {{count}}_other": "Pagar en {{count}} cuotas", + "Installments calculator": "Calculadora de cuotas", + "The maximum amount you can spend using Pay Now.": "El monto máximo que puedes gastar usando Pagar ahora.", + "It's based on the USDC available in your balance.": "Se basa en el USDC disponible en tu balance.", + "The maximum amount you can spend using Pay Later.": "El monto máximo que puedes gastar usando Pagar después.", + "It's based on the value of your collateral assets and updates as their value changes.": "Se basa en el valor de tus activos en garantía y se actualiza a medida que su valor cambia.", + "Change the pay mode before each purchase and pay how you want.": "Cambia el modo de pago antes de cada compra y paga como quieras.", + "Later": "Después", + "Pay instantly using your available USDC.": "Paga instantáneamente usando tu USDC disponible.", + "Pay without selling your crypto. Use it as collateral to unlock a credit limit and split purchases into up to 9 installments.": "Paga sin vender tu cripto. Úsalo como garantía para desbloquear un límite de crédito y dividir compras en hasta 9 cuotas.", + "Tap here to change the number of installments": "Toca aquí para cambiar la cantidad de cuotas", "Pay Now": "Pagar ahora", "{{count}} installments of_one": "{{count}} cuota de", "{{count}} installments of_other": "{{count}} cuotas de", @@ -444,7 +466,7 @@ "Hide sensitive": "Ocultar sensibles", "Pending proposals": "Solicitudes pendientes", "Some of your assets are at risk of being liquidated.": "Algunos de tus activos están en riesgo de ser liquidados.", - "Learn more": "Saber más", + "Learn more": "Aprende más", "An account upgrade is required to access the latest features.": "Es necesaria una actualización de cuenta para acceder a las últimas funciones.", "Processing balance → {{amount}}": "Saldo en procesamiento → {{amount}}", "Pending requests → {{count}}_one": "Solicitud pendiente → {{count}}", diff --git a/src/utils/queryClient.ts b/src/utils/queryClient.ts index 1c268f256..d7c72fdad 100644 --- a/src/utils/queryClient.ts +++ b/src/utils/queryClient.ts @@ -118,6 +118,13 @@ queryClient.setQueryDefaults(["settings", "installments"], { gcTime: Infinity, queryFn: () => queryClient.getQueryData(["settings", "installments"]), }); +queryClient.setQueryDefaults(["settings", "installments-spotlight"], { + initialData: false, + retry: false, + staleTime: Infinity, + gcTime: Infinity, + queryFn: () => queryClient.getQueryData(["settings", "installments-spotlight"]), +}); queryClient.setQueryDefaults(["simulate-purchase", "installments"], { initialData: 1, retry: false, diff --git a/src/utils/useInstallmentRates.ts b/src/utils/useInstallmentRates.ts new file mode 100644 index 000000000..85a44ef01 --- /dev/null +++ b/src/utils/useInstallmentRates.ts @@ -0,0 +1,73 @@ +import { useMemo } from "react"; + +import { marketUSDCAddress } from "@exactly/common/generated/chain"; +import MAX_INSTALLMENTS from "@exactly/common/MAX_INSTALLMENTS"; +import MIN_BORROW_INTERVAL from "@exactly/common/MIN_BORROW_INTERVAL"; +import { + fixedRate, + fixedUtilization, + globalUtilization, + MATURITY_INTERVAL, + splitInstallments, + WAD, +} from "@exactly/lib"; + +import reportError from "./reportError"; +import useAsset from "./useAsset"; + +const AMOUNT = 100_000_000n; + +export default function useInstallmentRates() { + const { market } = useAsset(marketUSDCAddress); + return useMemo(() => { + if (!market) return; + try { + const timestamp = Math.floor(Date.now() / 1000); + const nextMaturity = timestamp - (timestamp % MATURITY_INTERVAL) + MATURITY_INTERVAL; + const firstMaturity = + nextMaturity - timestamp < MIN_BORROW_INTERVAL ? nextMaturity + MATURITY_INTERVAL : nextMaturity; + const { fixedPools, floatingUtilization, totalFloatingDepositAssets, totalFloatingBorrowAssets } = market; + const { floatingBackupBorrowed, interestRateModel } = market; + const uGlobal = globalUtilization(totalFloatingDepositAssets, totalFloatingBorrowAssets, floatingBackupBorrowed); + const { parameters } = interestRateModel; + const result: bigint[] = []; + const borrowImpact = totalFloatingDepositAssets > 0n ? (AMOUNT * WAD - 1n) / totalFloatingDepositAssets + 1n : 0n; + const uFixed1 = + fixedPools + .filter(({ maturity }) => maturity >= firstMaturity && maturity < firstMaturity + MATURITY_INTERVAL) + .map(({ supplied, borrowed }) => fixedUtilization(supplied, borrowed, totalFloatingDepositAssets))[0] ?? 0n; + result.push( + fixedRate( + firstMaturity, + fixedPools.length, + uFixed1 + borrowImpact, + floatingUtilization, + uGlobal + borrowImpact, + parameters, + timestamp, + ), + ); + for (let count = 2; count <= MAX_INSTALLMENTS; count++) { + const uFixed = fixedPools + .filter(({ maturity }) => maturity >= firstMaturity && maturity < firstMaturity + count * MATURITY_INTERVAL) + .map(({ supplied, borrowed }) => fixedUtilization(supplied, borrowed, totalFloatingDepositAssets)); + result.push( + splitInstallments( + AMOUNT, + totalFloatingDepositAssets, + firstMaturity, + fixedPools.length, + uFixed, + floatingUtilization, + uGlobal, + parameters, + timestamp, + ).effectiveRate, + ); + } + return result; + } catch (error) { + reportError(error); + } + }, [market]); +} From e0f758d2b5607ee6d1f7d074771d062bbcfa9060 Mon Sep 17 00:00:00 2001 From: guillermo dieguez Date: Fri, 6 Feb 2026 13:00:20 -0300 Subject: [PATCH 13/18] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20app:=20unify=20card?= =?UTF-8?q?=20mode=20mutation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/jolly-radios-poke.md | 5 ++++ src/components/home/Home.tsx | 33 +++++++------------------ src/components/pay-mode/PaySelector.tsx | 25 ++----------------- src/utils/server.ts | 25 +++++++++++++++++-- 4 files changed, 39 insertions(+), 49 deletions(-) create mode 100644 .changeset/jolly-radios-poke.md diff --git a/.changeset/jolly-radios-poke.md b/.changeset/jolly-radios-poke.md new file mode 100644 index 000000000..d9a39d1ac --- /dev/null +++ b/.changeset/jolly-radios-poke.md @@ -0,0 +1,5 @@ +--- +"@exactly/mobile": patch +--- + +♻️ unify card mode mutation diff --git a/src/components/home/Home.tsx b/src/components/home/Home.tsx index b1c2c150f..4bb01a7e8 100644 --- a/src/components/home/Home.tsx +++ b/src/components/home/Home.tsx @@ -1,4 +1,4 @@ -import React, { useRef, useState } from "react"; +import React, { useMemo, useRef, useState } from "react"; import { useTranslation } from "react-i18next"; import { RefreshControl, type View as RNView } from "react-native"; @@ -41,7 +41,7 @@ import VisaSignatureBanner from "./VisaSignatureBanner"; import VisaSignatureModal from "./VisaSignatureSheet"; import queryClient from "../../utils/queryClient"; import reportError from "../../utils/reportError"; -import { getActivity, getKYCStatus, setCardMode, type CardDetails } from "../../utils/server"; +import { cardModeMutationOptions, getActivity, getKYCStatus, type CardDetails } from "../../utils/server"; import useAccount from "../../utils/useAccount"; import usePortfolio from "../../utils/usePortfolio"; import useTabPress from "../../utils/useTabPress"; @@ -127,33 +127,18 @@ export default function Home() { ); const { data: card } = useQuery({ queryKey: ["card", "details"], enabled: !!account && !!bytecode }); const { data: spotlightShown } = useQuery({ queryKey: ["settings", "installments-spotlight"] }); - const { mutateAsync: mutateMode } = useMutation({ - mutationKey: ["card", "mode"], - mutationFn: setCardMode, - onMutate: async (newMode) => { - await queryClient.cancelQueries({ queryKey: ["card", "details"] }); - const previous = queryClient.getQueryData(["card", "details"]); - queryClient.setQueryData(["card", "details"], (old: CardDetails) => ({ ...old, mode: newMode })); - return { previous }; - }, - onError: (error, _, context) => { - if (context?.previous) queryClient.setQueryData(["card", "details"], context.previous); - reportError(error); - }, - onSettled: async (data) => { - await queryClient.invalidateQueries({ queryKey: ["card", "details"] }); - if (data && "mode" in data && data.mode > 0) queryClient.setQueryData(["settings", "installments"], data.mode); - }, - }); + const { mutateAsync: mutateMode } = useMutation(cardModeMutationOptions); - let collateralUSD = 0n; - if (markets) { + const collateralUSD = useMemo(() => { + if (!markets) return 0n; + let total = 0n; for (const market of markets) { if (market.floatingDepositAssets > 0n) { - collateralUSD += (market.floatingDepositAssets * market.usdPrice) / 10n ** BigInt(market.decimals); + total += (market.floatingDepositAssets * market.usdPrice) / 10n ** BigInt(market.decimals); } } - } + return total; + }, [markets]); const scrollRef = useRef(null); const scrollOffsetRef = useRef(0); diff --git a/src/components/pay-mode/PaySelector.tsx b/src/components/pay-mode/PaySelector.tsx index a5ab43a40..0c6fd2a72 100644 --- a/src/components/pay-mode/PaySelector.tsx +++ b/src/components/pay-mode/PaySelector.tsx @@ -18,7 +18,7 @@ import ManualRepaymentSheet from "./ManualRepaymentSheet"; import { presentArticle } from "../../utils/intercom"; import queryClient from "../../utils/queryClient"; import reportError from "../../utils/reportError"; -import { setCardMode, type CardDetails } from "../../utils/server"; +import { cardModeMutationOptions, type CardDetails } from "../../utils/server"; import useAccount from "../../utils/useAccount"; import useAsset from "../../utils/useAsset"; import useInstallments from "../../utils/useInstallments"; @@ -51,28 +51,7 @@ export default function PaySelector() { const [pendingInstallment, setPendingInstallment] = useState(null); const { data: card } = useQuery({ queryKey: ["card", "details"] }); - const { mutateAsync: mutateMode } = useMutation({ - mutationKey: ["card", "mode"], - mutationFn: setCardMode, - onMutate: async (newMode) => { - await queryClient.cancelQueries({ queryKey: ["card", "details"] }); - const previous = queryClient.getQueryData(["card", "details"]); - queryClient.setQueryData(["card", "details"], (old: CardDetails) => ({ ...old, mode: newMode })); - return { previous }; - }, - onError: (error, _, context) => { - if (context?.previous) { - queryClient.setQueryData(["card", "details"], context.previous); - } - reportError(error); - }, - onSettled: async (data) => { - await queryClient.invalidateQueries({ queryKey: ["card", "details"] }); - if (data && "mode" in data && data.mode > 0) { - queryClient.setQueryData(["settings", "installments"], data.mode); - } - }, - }); + const { mutateAsync: mutateMode } = useMutation(cardModeMutationOptions); function setInstallments(value: number) { if (!card || card.mode === value) return; diff --git a/src/utils/server.ts b/src/utils/server.ts index 483eaed70..db8a65479 100644 --- a/src/utils/server.ts +++ b/src/utils/server.ts @@ -14,7 +14,7 @@ import { Credential } from "@exactly/common/validation"; import { login as loginIntercom, logout as logoutIntercom } from "./intercom"; import { decrypt, decryptPIN, encryptPIN, session } from "./panda"; import queryClient, { APIError, type AuthMethod } from "./queryClient"; -import { isPasskeyExpected } from "./reportError"; +import reportError, { isPasskeyExpected } from "./reportError"; import ownerConfig from "./wagmi/owner"; import type { ExaAPI } from "@exactly/server/api"; // eslint-disable-line @nx/enforce-module-boundaries @@ -126,12 +126,33 @@ export async function setCardStatus(status: "ACTIVE" | "DELETED" | "FROZEN") { return response.json(); } -export async function setCardMode(mode: number) { +async function setCardMode(mode: number) { await auth(); const response = await api.card.$patch({ json: { mode } }); if (!response.ok) throw new APIError(response.status, stringOrLegacy(await response.json())); return response.json(); } +export const cardModeMutationOptions = { + mutationKey: ["card", "mode"] as const, + mutationFn: setCardMode, +}; +queryClient.setMutationDefaults(cardModeMutationOptions.mutationKey, { + ...cardModeMutationOptions, + onMutate: async (newMode: number) => { + await queryClient.cancelQueries({ queryKey: ["card", "details"] }); + const previous = queryClient.getQueryData(["card", "details"]); + queryClient.setQueryData(["card", "details"], (old: CardDetails) => ({ ...old, mode: newMode })); + return { previous }; + }, + onError: (error, _, context) => { + if (context?.previous) queryClient.setQueryData(["card", "details"], context.previous); + reportError(error); + }, + onSettled: async (data) => { + await queryClient.invalidateQueries({ queryKey: ["card", "details"] }); + if (data && "mode" in data && data.mode > 0) queryClient.setQueryData(["settings", "installments"], data.mode); + }, +}); export async function setCardPIN(pin: string) { await auth(); From 98b5f7a3fab27803c4f704bc6e3d6ce40a52a4bd Mon Sep 17 00:00:00 2001 From: guillermo dieguez Date: Mon, 9 Feb 2026 19:49:35 -0300 Subject: [PATCH 14/18] =?UTF-8?q?=F0=9F=92=84=20app:=20apply=20tamagui=20s?= =?UTF-8?q?pacing=20tokens?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/khaki-queens-smash.md | 5 +++++ src/components/activity/Activity.tsx | 2 +- src/components/activity/PendingProposals.tsx | 2 +- src/components/activity/details/ActivityDetails.tsx | 2 +- src/components/add-funds/AddCrypto.tsx | 8 +++++++- src/components/add-funds/AddFunds.tsx | 2 +- src/components/add-funds/Bridge.tsx | 2 +- src/components/add-funds/Onboard.tsx | 2 +- src/components/add-funds/Ramp.tsx | 8 ++++---- src/components/add-funds/Status.tsx | 4 ++-- src/components/card/Card.tsx | 4 ++-- src/components/card/SpendingLimit.tsx | 4 ++-- src/components/getting-started/GettingStarted.tsx | 6 +++--- src/components/home/AssetList.tsx | 8 ++++---- src/components/home/CardStatus.tsx | 4 ++-- src/components/home/GettingStarted.tsx | 2 +- src/components/home/Portfolio.tsx | 9 ++++++++- src/components/loans/Amount.tsx | 9 ++++++++- src/components/loans/Asset.tsx | 11 +++++++++-- src/components/loans/Installments.tsx | 9 ++++++++- src/components/loans/Maturity.tsx | 9 ++++++++- src/components/loans/Receiver.tsx | 13 ++++++++++--- src/components/loans/Review.tsx | 2 +- src/components/pay-mode/Pay.tsx | 6 +++--- src/components/pay-mode/PaySelector.tsx | 6 +++--- src/components/pay-mode/PaymentSheet.tsx | 4 ++-- src/components/pay-mode/PaymentsActions.tsx | 6 +++--- src/components/roll-debt/RollDebt.tsx | 2 +- src/components/send-funds/Amount.tsx | 4 ++-- src/components/send-funds/Asset.tsx | 4 ++-- src/components/send-funds/Receiver.tsx | 4 ++-- src/components/shared/AssetSelector.tsx | 2 +- src/components/shared/InstallmentSelector.tsx | 2 +- src/components/shared/LiquidationAlert.tsx | 8 ++++---- src/components/shared/ProfileHeader.tsx | 4 ++-- src/components/swaps/Swaps.tsx | 4 ++-- 36 files changed, 118 insertions(+), 65 deletions(-) create mode 100644 .changeset/khaki-queens-smash.md diff --git a/.changeset/khaki-queens-smash.md b/.changeset/khaki-queens-smash.md new file mode 100644 index 000000000..56a9a5012 --- /dev/null +++ b/.changeset/khaki-queens-smash.md @@ -0,0 +1,5 @@ +--- +"@exactly/mobile": patch +--- + +💄 apply tamagui spacing tokens diff --git a/src/components/activity/Activity.tsx b/src/components/activity/Activity.tsx index e1e1c188e..456b32cd9 100644 --- a/src/components/activity/Activity.tsx +++ b/src/components/activity/Activity.tsx @@ -80,7 +80,7 @@ export default function Activity() { ListHeaderComponent={ <> - + {t("All Activity")} diff --git a/src/components/activity/PendingProposals.tsx b/src/components/activity/PendingProposals.tsx index 0b8298a6b..65548554f 100644 --- a/src/components/activity/PendingProposals.tsx +++ b/src/components/activity/PendingProposals.tsx @@ -146,7 +146,7 @@ export default function PendingProposals() { return ( - + { if (router.canGoBack()) { diff --git a/src/components/activity/details/ActivityDetails.tsx b/src/components/activity/details/ActivityDetails.tsx index c5296ebac..83551a219 100644 --- a/src/components/activity/details/ActivityDetails.tsx +++ b/src/components/activity/details/ActivityDetails.tsx @@ -27,7 +27,7 @@ export default function ActivityDetails() { if (!item) return null; return ( - + { if (router.canGoBack()) { diff --git a/src/components/add-funds/AddCrypto.tsx b/src/components/add-funds/AddCrypto.tsx index 50ee5ee10..6d431eca7 100644 --- a/src/components/add-funds/AddCrypto.tsx +++ b/src/components/add-funds/AddCrypto.tsx @@ -72,7 +72,13 @@ export default function AddCrypto() { - + {t("Your {{chain}} address", { chain: chain.name })} diff --git a/src/components/add-funds/AddFunds.tsx b/src/components/add-funds/AddFunds.tsx index 5066cf5dd..5fe957b94 100644 --- a/src/components/add-funds/AddFunds.tsx +++ b/src/components/add-funds/AddFunds.tsx @@ -56,7 +56,7 @@ export default function AddFunds() { - + { if (router.canGoBack()) { diff --git a/src/components/add-funds/Bridge.tsx b/src/components/add-funds/Bridge.tsx index fcba9e221..b40633aa5 100644 --- a/src/components/add-funds/Bridge.tsx +++ b/src/components/add-funds/Bridge.tsx @@ -566,7 +566,7 @@ export default function Bridge() { - + { if (router.canGoBack()) { diff --git a/src/components/add-funds/Ramp.tsx b/src/components/add-funds/Ramp.tsx index b143b9928..b42a3c6c2 100644 --- a/src/components/add-funds/Ramp.tsx +++ b/src/components/add-funds/Ramp.tsx @@ -106,9 +106,9 @@ export default function Ramp() { return ( - - - + + + { if (router.canGoBack()) { @@ -129,7 +129,7 @@ export default function Ramp() { - + diff --git a/src/components/add-funds/Status.tsx b/src/components/add-funds/Status.tsx index 4a5eb7184..db1382693 100644 --- a/src/components/add-funds/Status.tsx +++ b/src/components/add-funds/Status.tsx @@ -36,9 +36,9 @@ export default function Status() { return ( - + - + diff --git a/src/components/card/Card.tsx b/src/components/card/Card.tsx index a13d099e0..775d7a85b 100644 --- a/src/components/card/Card.tsx +++ b/src/components/card/Card.tsx @@ -271,11 +271,11 @@ export default function Card() { - + {t("My Exa Card")} - + { diff --git a/src/components/card/SpendingLimit.tsx b/src/components/card/SpendingLimit.tsx index 4296e432d..19f2d5f0e 100644 --- a/src/components/card/SpendingLimit.tsx +++ b/src/components/card/SpendingLimit.tsx @@ -27,7 +27,7 @@ export default function SpendingLimit({ return ( - + {title} @@ -42,7 +42,7 @@ export default function SpendingLimit({ )} - + {limit ? ( {t("{{amount}} left", { diff --git a/src/components/getting-started/GettingStarted.tsx b/src/components/getting-started/GettingStarted.tsx index 343271de3..dd6dab158 100644 --- a/src/components/getting-started/GettingStarted.tsx +++ b/src/components/getting-started/GettingStarted.tsx @@ -44,9 +44,9 @@ export default function GettingStarted() { const { steps } = useOnboardingSteps({ hasKYC, isDeployed }); return ( - - - + + + - + @@ -46,7 +46,7 @@ function AssetRow({ asset }: { asset: AssetItem }) { - + {rate === undefined ? ( asset.market ? ( <> @@ -73,7 +73,7 @@ function AssetRow({ asset }: { asset: AssetItem }) { )} - + {`$${(Number(usdValue) / 1e18).toLocaleString(language, { style: "decimal", minimumFractionDigits: 2, maximumFractionDigits: 2 })}`} @@ -94,7 +94,7 @@ function AssetRow({ asset }: { asset: AssetItem }) { function AssetSection({ title, assets }: { assets: AssetItem[]; title: string }) { if (assets.length === 0) return null; return ( - + {title} diff --git a/src/components/home/CardStatus.tsx b/src/components/home/CardStatus.tsx index c1c7db1a4..3bb84aa09 100644 --- a/src/components/home/CardStatus.tsx +++ b/src/components/home/CardStatus.tsx @@ -240,7 +240,7 @@ function LimitPaginator({ 0 ? -width : 0} animation="moderate" animateOnly={["transform"]}> - + {t("Spending limit")} @@ -260,7 +260,7 @@ function LimitPaginator({ - + {t("Credit limit")} diff --git a/src/components/home/GettingStarted.tsx b/src/components/home/GettingStarted.tsx index 61b6fae52..f936ec1da 100644 --- a/src/components/home/GettingStarted.tsx +++ b/src/components/home/GettingStarted.tsx @@ -50,7 +50,7 @@ export default function GettingStarted({ isDeployed, hasKYC }: { hasKYC: boolean {t("Getting Started")} - + { diff --git a/src/components/home/Portfolio.tsx b/src/components/home/Portfolio.tsx index 652085e5c..089dfd0a3 100644 --- a/src/components/home/Portfolio.tsx +++ b/src/components/home/Portfolio.tsx @@ -41,7 +41,14 @@ export default function Portfolio() { return ( - + { if (router.canGoBack()) { diff --git a/src/components/loans/Amount.tsx b/src/components/loans/Amount.tsx index 4b5c44bec..cef586c02 100644 --- a/src/components/loans/Amount.tsx +++ b/src/components/loans/Amount.tsx @@ -60,7 +60,14 @@ export default function Amount() { }, []); return ( - + { queryClient.setQueryData(["loan"], (old: Loan) => ({ ...old, amount: null })); diff --git a/src/components/loans/Asset.tsx b/src/components/loans/Asset.tsx index 14b2741bf..e7fcf0714 100644 --- a/src/components/loans/Asset.tsx +++ b/src/components/loans/Asset.tsx @@ -30,7 +30,14 @@ export default function Asset() { const { data: markets } = useReadPreviewerExactly({ address: previewerAddress, args: [address ?? zeroAddress] }); return ( - + { if (router.canGoBack()) { @@ -89,7 +96,7 @@ export default function Asset() { height={16} backgroundColor={selected ? "$interactiveBaseBrandDefault" : "$uiNeutralSecondary"} borderRadius="$r_0" - padding={4} + padding="$s2" alignItems="center" justifyContent="center" > diff --git a/src/components/loans/Installments.tsx b/src/components/loans/Installments.tsx index 73cdde9e3..43b7d5096 100644 --- a/src/components/loans/Installments.tsx +++ b/src/components/loans/Installments.tsx @@ -38,7 +38,14 @@ export default function Installments() { }, []); return ( - + { if (router.canGoBack()) { diff --git a/src/components/loans/Maturity.tsx b/src/components/loans/Maturity.tsx index 273a0a346..66429dfb3 100644 --- a/src/components/loans/Maturity.tsx +++ b/src/components/loans/Maturity.tsx @@ -46,7 +46,14 @@ export default function Maturity() { }, []); return ( - + { queryClient.setQueryData(["loan"], (old: Loan) => ({ ...old, maturity: undefined })); diff --git a/src/components/loans/Receiver.tsx b/src/components/loans/Receiver.tsx index b5e876e38..20f66e478 100644 --- a/src/components/loans/Receiver.tsx +++ b/src/components/loans/Receiver.tsx @@ -70,7 +70,14 @@ export default function Receiver() { }, []); return ( - + { queryClient.setQueryData(["loan"], (old: Loan) => ({ ...old, receiver: undefined })); @@ -128,7 +135,7 @@ export default function Receiver() { > {receiverType === "internal" && } - + {t("Your Exa account")} {t("Deposit {{symbol}} into your Exa App wallet", { symbol })} @@ -159,7 +166,7 @@ export default function Receiver() { > {receiverType === "external" && } - + {t("External address on {{chain}}", { chain: chain.name })} {t("Deposit {{symbol}} directly to an external wallet", { symbol })} diff --git a/src/components/loans/Review.tsx b/src/components/loans/Review.tsx index 76a7d2627..9c47028ab 100644 --- a/src/components/loans/Review.tsx +++ b/src/components/loans/Review.tsx @@ -199,7 +199,7 @@ export default function Review() { - + { @@ -592,7 +592,7 @@ export default function Pay() { {t("Subtotal")} - + {isRouteFetching ? ( @@ -669,7 +669,7 @@ export default function Pay() { {t("You will pay")} - + {isRouteFetching ? ( diff --git a/src/components/pay-mode/PaySelector.tsx b/src/components/pay-mode/PaySelector.tsx index 0c6fd2a72..79e2bf21e 100644 --- a/src/components/pay-mode/PaySelector.tsx +++ b/src/components/pay-mode/PaySelector.tsx @@ -90,7 +90,7 @@ export default function PaySelector() { <> - + {t("Pay Mode")} @@ -166,7 +166,7 @@ export default function PaySelector() { - + - + {Array.from({ length: MAX_INSTALLMENTS }, (_, index) => index + 1).map((installment) => ( )} - - + + - - {t("Installments calculator")} - + { + onClose(); + router.push("/calculator"); + }} + > + + {t("Installments calculator")} + + diff --git a/src/components/pay-mode/InstallmentsCalculator.tsx b/src/components/pay-mode/InstallmentsCalculator.tsx new file mode 100644 index 000000000..4063109ab --- /dev/null +++ b/src/components/pay-mode/InstallmentsCalculator.tsx @@ -0,0 +1,288 @@ +import React, { useMemo, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Pressable } from "react-native"; + +import { useRouter } from "expo-router"; + +import { ArrowLeft, CircleHelp } from "@tamagui/lucide-icons"; +import { ScrollView, XStack, YStack } from "tamagui"; + +import { formatUnits, parseUnits } from "viem"; + +import { marketUSDCAddress } from "@exactly/common/generated/chain"; +import MAX_INSTALLMENTS from "@exactly/common/MAX_INSTALLMENTS"; +import MIN_BORROW_INTERVAL from "@exactly/common/MIN_BORROW_INTERVAL"; +import { + fixedRate, + fixedUtilization, + globalUtilization, + MATURITY_INTERVAL, + splitInstallments, + WAD, +} from "@exactly/lib"; + +import { presentArticle } from "../../utils/intercom"; +import reportError from "../../utils/reportError"; +import useAsset from "../../utils/useAsset"; +import useInstallmentRates from "../../utils/useInstallmentRates"; +import Input from "../shared/Input"; +import SafeView from "../shared/SafeView"; +import Skeleton from "../shared/Skeleton"; +import Text from "../shared/Text"; +import View from "../shared/View"; + +const INSTALLMENTS = Array.from({ length: MAX_INSTALLMENTS }, (_, index) => index + 1); + +export default function InstallmentsCalculator() { + const router = useRouter(); + const { + t, + i18n: { language }, + } = useTranslation(); + const [input, setInput] = useState("100"); + const assets = useMemo(() => parseUnits(input.replaceAll(/\D/g, ".").replaceAll(/\.(?=.*\.)/g, ""), 6), [input]); + const { market } = useAsset(marketUSDCAddress); + const rates = useInstallmentRates(); + const installmentData = useMemo(() => { + if (!market) return; + const calculationAssets = assets > 0n ? assets : 100_000_000n; + const timestamp = Math.floor(Date.now() / 1000); + const nextMaturity = timestamp - (timestamp % MATURITY_INTERVAL) + MATURITY_INTERVAL; + const firstMaturity = + nextMaturity - timestamp < MIN_BORROW_INTERVAL ? nextMaturity + MATURITY_INTERVAL : nextMaturity; + const { + fixedPools, + floatingBackupBorrowed, + floatingUtilization, + interestRateModel: { parameters }, + totalFloatingBorrowAssets, + totalFloatingDepositAssets, + } = market; + const uGlobal = globalUtilization(totalFloatingDepositAssets, totalFloatingBorrowAssets, floatingBackupBorrowed); + const borrowImpact = + totalFloatingDepositAssets > 0n ? (calculationAssets * WAD - 1n) / totalFloatingDepositAssets + 1n : 0n; + try { + const result = INSTALLMENTS.map((count) => { + const uFixed = fixedPools + .filter(({ maturity }) => maturity >= firstMaturity && maturity < firstMaturity + count * MATURITY_INTERVAL) + .map(({ supplied, borrowed }) => fixedUtilization(supplied, borrowed, totalFloatingDepositAssets)); + if (uFixed.length === 0) return { count, installments: undefined, totalAmount: 0n }; + if (count === 1) { + const rate = fixedRate( + firstMaturity, + fixedPools.length, + (uFixed[0] ?? 0n) + borrowImpact, + floatingUtilization, + uGlobal + borrowImpact, + parameters, + timestamp, + ); + const time = BigInt(firstMaturity - timestamp); + const fee = (calculationAssets * rate * time) / (WAD * 31_536_000n); + const total = calculationAssets + fee; + return { count, installments: [total], totalAmount: total }; + } + const { installments } = splitInstallments( + calculationAssets, + totalFloatingDepositAssets, + firstMaturity, + fixedPools.length, + uFixed, + floatingUtilization, + uGlobal, + parameters, + timestamp, + ); + return { count, installments, totalAmount: installments.reduce((a, b) => a + b, 0n) }; + }); + return { result, firstMaturity }; + } catch (error) { + reportError(error); + } + }, [market, assets]); + + const bestAprIndex = useMemo(() => { + if (!rates) return; + let minIndex = 0; + for (let index = 1; index < rates.length; index++) { + if ((rates[index] ?? 0n) < (rates[minIndex] ?? 0n)) minIndex = index; + } + return minIndex; + }, [rates]); + + return ( + + + + + + { + if (router.canGoBack()) router.back(); + }} + > + + + + {t("Installments calculator")} + + { + presentArticle("11541409").catch(reportError); + }} + > + + + + + + + + {t("Enter a purchase amount")} + + + {t("to estimate installments cost")} + + + + + $ + + + + + + + + {INSTALLMENTS.map((count) => { + const data = installmentData?.result[count - 1]; + const isBestAPR = bestAprIndex === count - 1; + return ( + + + {data?.installments ? ( + + + {count}x{" "} + + $ + {Number(formatUnits(data.installments[0] ?? 0n, 6)).toLocaleString(language, { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })} + + ) : ( + + )} + + {rates?.[count - 1] === undefined ? ( + + ) : ( + <> + + {t("{{apr}} APR", { + apr: (Number(rates[count - 1]) / 1e18).toLocaleString(language, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }), + })} + + {isBestAPR && ( + + + {t("BEST APR")} + + + )} + + )} + + + {data?.installments ? ( + + $ + {Number(formatUnits(data.totalAmount, 6)).toLocaleString(language, { + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })} + + ) : ( + + )} + + ); + })} + + {installmentData && ( + + {t("First due date: {{date}} - then every 28 days.", { + date: new Date(installmentData.firstMaturity * 1000).toLocaleDateString(language, { + year: "numeric", + month: "short", + day: "numeric", + }), + })} + + )} + + + + + ); +} diff --git a/src/i18n/es.json b/src/i18n/es.json index aa7dd06c1..21e3c4211 100644 --- a/src/i18n/es.json +++ b/src/i18n/es.json @@ -87,6 +87,9 @@ "Set Pay Later in {{count}}_one": "Pagar en {{count}} cuota", "Set Pay Later in {{count}}_other": "Pagar en {{count}} cuotas", "Installments calculator": "Calculadora de cuotas", + "Enter a purchase amount": "Ingresa un monto de compra", + "to estimate installment options": "para estimar las opciones de cuotas", + "BEST APR": "MEJOR TNA", "The maximum amount you can spend using Pay Now.": "El monto máximo que puedes gastar usando Pagar ahora.", "It's based on the USDC available in your balance.": "Se basa en el USDC disponible en tu balance.", "The maximum amount you can spend using Pay Later.": "El monto máximo que puedes gastar usando Pagar después.", From a7af38d9fc7905ef5f95209907ee7f513ef7be4e Mon Sep 17 00:00:00 2001 From: guillermo dieguez Date: Wed, 11 Feb 2026 12:57:54 -0300 Subject: [PATCH 16/18] =?UTF-8?q?=F0=9F=92=84=20app:=20restyle=20overdue?= =?UTF-8?q?=20and=20upcoming=20payments?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/shiny-badgers-sleep.md | 5 + src/components/pay-mode/OverduePayments.tsx | 131 +++++----------- src/components/pay-mode/UpcomingPayments.tsx | 148 +++++++------------ src/i18n/es.json | 13 +- 4 files changed, 110 insertions(+), 187 deletions(-) create mode 100644 .changeset/shiny-badgers-sleep.md diff --git a/.changeset/shiny-badgers-sleep.md b/.changeset/shiny-badgers-sleep.md new file mode 100644 index 000000000..8cedafdcf --- /dev/null +++ b/.changeset/shiny-badgers-sleep.md @@ -0,0 +1,5 @@ +--- +"@exactly/mobile": patch +--- + +💄 restyle overdue and upcoming payments diff --git a/src/components/pay-mode/OverduePayments.tsx b/src/components/pay-mode/OverduePayments.tsx index 019b15a42..f9d19f0ec 100644 --- a/src/components/pay-mode/OverduePayments.tsx +++ b/src/components/pay-mode/OverduePayments.tsx @@ -1,14 +1,16 @@ import React from "react"; import { useTranslation } from "react-i18next"; +import { selectionAsync } from "expo-haptics"; + import { ChevronRight } from "@tamagui/lucide-icons"; -import { XStack, YStack } from "tamagui"; +import { Separator, XStack, YStack } from "tamagui"; import { isBefore } from "date-fns"; import { zeroAddress } from "viem"; import { useBytecode } from "wagmi"; -import { exaPreviewerAddress, previewerAddress } from "@exactly/common/generated/chain"; +import { exaPreviewerAddress, marketUSDCAddress, previewerAddress } from "@exactly/common/generated/chain"; import { useReadExaPreviewerPendingProposals, useReadPreviewerExactly } from "@exactly/common/generated/hooks"; import ProposalType, { decodeCrossRepayAtMaturity, @@ -17,8 +19,8 @@ import ProposalType, { } from "@exactly/common/ProposalType"; import { WAD } from "@exactly/lib"; +import reportError from "../../utils/reportError"; import useAccount from "../../utils/useAccount"; -import AssetLogo from "../shared/AssetLogo"; import Text from "../shared/Text"; import View from "../shared/View"; @@ -39,6 +41,7 @@ export default function OverduePayments({ onSelect }: { onSelect: (maturity: big args: [address ?? zeroAddress], query: { enabled: !!address && !!bytecode, refetchInterval: 30_000 }, }); + const exaUSDC = markets?.find(({ market }) => market === marketUSDCAddress); const overduePayments = new Map(); if (markets) { for (const { fixedBorrowPositions } of markets) { @@ -58,14 +61,12 @@ export default function OverduePayments({ onSelect }: { onSelect: (maturity: big const payments = [...overduePayments]; if (payments.length === 0) return null; return ( - - - - {t("Overdue payments")} - - - - {payments.map(([maturity, { amount, discount }]) => { + + + {t("Overdue payments")} + + + {payments.map(([maturity, { amount, discount }], index) => { const isRepaying = pendingProposals?.some(({ proposal }) => { const { proposalType: type, data } = proposal; const isRepayProposal = @@ -86,95 +87,45 @@ export default function OverduePayments({ onSelect }: { onSelect: (maturity: big }); const processing = isRepaying || isRollingDebt; //eslint-disable-line @typescript-eslint/prefer-nullish-coalescing return ( - { - if (processing) return; - onSelect(maturity); - }} - > - - - - - - {(Number(amount) / 1e6).toLocaleString(language, { - minimumFractionDigits: 2, - maximumFractionDigits: 2, - })} - - - + + {index > 0 && } + { + if (processing) return; + selectionAsync().catch(reportError); + onSelect(maturity); + }} + > + + {new Date(Number(maturity) * 1000).toLocaleDateString(language, { - year: "numeric", + year: "2-digit", month: "short", day: "numeric", })} - - {processing ? ( - - - {t("Processing")} - - - ) : null} - - - {processing ? null : ( - - - {t("Penalties {{percent}}", { - percent: Math.abs(discount).toLocaleString(language, { + + {processing + ? t("Processing") + : `+${Math.abs(discount).toLocaleString(language, { style: "percent", minimumFractionDigits: 2, maximumFractionDigits: 2, - }), - })} - - - )} - - {t("Repay")} + })}`} + + + + {(Number(amount) / 10 ** (exaUSDC?.decimals ?? 6)).toLocaleString(language, { + style: "currency", + currency: "USD", + })} - + - + ); })} diff --git a/src/components/pay-mode/UpcomingPayments.tsx b/src/components/pay-mode/UpcomingPayments.tsx index 75e2de252..d175db2d4 100644 --- a/src/components/pay-mode/UpcomingPayments.tsx +++ b/src/components/pay-mode/UpcomingPayments.tsx @@ -1,10 +1,12 @@ import React from "react"; import { useTranslation } from "react-i18next"; +import { selectionAsync } from "expo-haptics"; + import { ChevronRight } from "@tamagui/lucide-icons"; -import { XStack, YStack } from "tamagui"; +import { Separator, XStack, YStack } from "tamagui"; -import { isBefore } from "date-fns"; +import { isBefore, isToday, isTomorrow } from "date-fns"; import { zeroAddress } from "viem"; import { useBytecode } from "wagmi"; @@ -17,8 +19,8 @@ import ProposalType, { } from "@exactly/common/ProposalType"; import { WAD } from "@exactly/lib"; +import reportError from "../../utils/reportError"; import useAccount from "../../utils/useAccount"; -import AssetLogo from "../shared/AssetLogo"; import Text from "../shared/Text"; import View from "../shared/View"; @@ -57,15 +59,13 @@ export default function UpcomingPayments({ onSelect }: { onSelect: (maturity: bi } const payments = [...duePayments]; return ( - - - - {t("Upcoming payments")} - - - + + + {t("Upcoming payments")} + + {payments.length > 0 ? ( - payments.map(([maturity, { amount, discount }]) => { + payments.map(([maturity, { amount, discount }], index) => { const isRepaying = pendingProposals?.some(({ proposal }) => { const { proposalType: type, data } = proposal; const isRepayProposal = @@ -85,106 +85,62 @@ export default function UpcomingPayments({ onSelect }: { onSelect: (maturity: bi return decoded.repayMaturity === maturity; }); const processing = isRepaying || isRollingDebt; //eslint-disable-line @typescript-eslint/prefer-nullish-coalescing + const maturityDate = new Date(Number(maturity) * 1000); return ( - { - if (processing) return; - onSelect(maturity); - }} - > - - - - - = 0 - ? "$interactiveBaseSuccessDefault" - : "$uiNeutralPrimary" - } - > - {(Number(amount) / 10 ** (exaUSDC?.decimals ?? 6)).toLocaleString(language, { - minimumFractionDigits: 2, - maximumFractionDigits: 2, - })} - - - - {new Date(Number(maturity) * 1000).toLocaleDateString(language, { - year: "numeric", - month: "short", - day: "numeric", - })} + + {index > 0 && } + { + if (processing) return; + selectionAsync().catch(reportError); + onSelect(maturity); + }} + > + + + {isToday(maturityDate) + ? t("Due today") + : isTomorrow(maturityDate) + ? t("Due tomorrow") + : maturityDate.toLocaleDateString(language, { + year: "2-digit", + month: "short", + day: "numeric", + })} - - {processing ? ( - - + {processing ? ( + {t("Processing")} - - ) : null} - - - {processing || discount < 0.001 ? null : ( - - - {t("{{discount}} off", { - discount: discount.toLocaleString(language, { + ) : discount >= 0.001 ? ( + + {t("{{percent}} OFF", { + percent: discount.toLocaleString(language, { style: "percent", minimumFractionDigits: 2, maximumFractionDigits: 2, }), })} - - )} + ) : null} + - {t("Repay")} + {(Number(amount) / 10 ** (exaUSDC?.decimals ?? 6)).toLocaleString(language, { + style: "currency", + currency: "USD", + })} - + - + ); }) ) : ( diff --git a/src/i18n/es.json b/src/i18n/es.json index 21e3c4211..6937cefff 100644 --- a/src/i18n/es.json +++ b/src/i18n/es.json @@ -106,6 +106,15 @@ "{{count}} installments_other": "{{count}} cuotas", "Available for {{count}} installments or less_one": "Disponible para {{count}} cuota", "Available for {{count}} installments or less_other": "Disponible para {{count}} cuotas o menos", + "Total outstanding": "Total pendiente", + "Statements": "Estados de cuenta", + "in {{count}} payments": "en {{count}} pagos", + "in {{count}} payments_one": "en {{count}} pago", + "in {{count}} payments_other": "en {{count}} pagos", + "{{days}} days overdue": "{{days}} días vencido", + "Due in {{days}} days": "Vence en {{days}} días", + "View statement": "Ver estado de cuenta", + "{{percent}} OFF": "{{percent}} OFF", "Overdue payments": "Pagos vencidos", "Processing": "Procesando", "Penalties {{percent}}": "Intereses {{percent}}", @@ -113,8 +122,10 @@ "Repay amount": "Monto de pago", "Repay amount slider": "Control deslizante de monto de pago", "Set maximum repay amount": "Establecer monto máximo de pago", + "Due today": "Vence hoy", + "Due tomorrow": "Vence mañana", "Upcoming payments": "Pagos próximos", - "{{discount}} off": "{{discount}} de descuento", + "{{discount}} off": "{{discount}} off", "Any funding or purchases will show up here.": "Cualquier financiación o compra aparecerá aquí.", "You're all set!": "¡Todo listo!", "You must repay each installment manually before its due date.": "Debes pagar cada cuota manualmente antes de su fecha de vencimiento.", From 8846ab9d5ee0742017c558d900dad5cf9b5d6561 Mon Sep 17 00:00:00 2001 From: guillermo dieguez Date: Wed, 11 Feb 2026 15:07:24 -0300 Subject: [PATCH 17/18] =?UTF-8?q?=E2=9C=A8=20app:=20implement=20new=20pay?= =?UTF-8?q?=20screen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changeset/green-weeks-care.md | 5 + .maestro/subflows/activateCard.yaml | 29 +- src/app/(main)/(home)/_layout.tsx | 2 +- src/app/(main)/(home)/pay-mode.tsx | 1 - src/app/(main)/(home)/pay.tsx | 1 + src/app/(main)/calculator.tsx | 2 +- src/app/(main)/pay/index.tsx | 1 - src/app/(main)/{pay => repay}/_layout.tsx | 0 src/app/(main)/repay/index.tsx | 1 + src/components/home/Home.tsx | 6 +- src/components/loans/Loans.tsx | 4 +- src/components/pay-mode/PayMode.tsx | 98 ----- src/components/pay-mode/PaySelector.tsx | 379 ---------------- src/components/pay-mode/PaymentsActions.tsx | 53 --- .../{pay-mode => pay}/AssetSelectionSheet.tsx | 0 src/components/{pay-mode => pay}/Empty.tsx | 8 +- .../InstallmentsCalculator.tsx | 0 .../ManualRepaymentSheet.tsx | 0 .../{pay-mode => pay}/OverduePayments.tsx | 52 ++- src/components/pay/Pay.tsx | 414 ++++++++++++++++++ .../{pay-mode => pay}/PaymentSheet.tsx | 287 +++++++----- .../{pay-mode/Pay.tsx => pay/Repay.tsx} | 2 +- .../{pay-mode => pay}/RepayAmountSelector.tsx | 0 .../{pay-mode => pay}/UpcomingPayments.tsx | 56 ++- src/components/shared/InfoSheet.tsx | 37 ++ src/i18n/en.json | 4 +- src/i18n/es.json | 14 +- src/utils/useTabPress.ts | 2 +- 28 files changed, 753 insertions(+), 705 deletions(-) create mode 100644 .changeset/green-weeks-care.md delete mode 100644 src/app/(main)/(home)/pay-mode.tsx create mode 100644 src/app/(main)/(home)/pay.tsx delete mode 100644 src/app/(main)/pay/index.tsx rename src/app/(main)/{pay => repay}/_layout.tsx (100%) create mode 100644 src/app/(main)/repay/index.tsx delete mode 100644 src/components/pay-mode/PayMode.tsx delete mode 100644 src/components/pay-mode/PaySelector.tsx delete mode 100644 src/components/pay-mode/PaymentsActions.tsx rename src/components/{pay-mode => pay}/AssetSelectionSheet.tsx (100%) rename src/components/{pay-mode => pay}/Empty.tsx (78%) rename src/components/{pay-mode => pay}/InstallmentsCalculator.tsx (100%) rename src/components/{pay-mode => pay}/ManualRepaymentSheet.tsx (100%) rename src/components/{pay-mode => pay}/OverduePayments.tsx (79%) create mode 100644 src/components/pay/Pay.tsx rename src/components/{pay-mode => pay}/PaymentSheet.tsx (59%) rename src/components/{pay-mode/Pay.tsx => pay/Repay.tsx} (99%) rename src/components/{pay-mode => pay}/RepayAmountSelector.tsx (100%) rename src/components/{pay-mode => pay}/UpcomingPayments.tsx (82%) create mode 100644 src/components/shared/InfoSheet.tsx diff --git a/.changeset/green-weeks-care.md b/.changeset/green-weeks-care.md new file mode 100644 index 000000000..3868574be --- /dev/null +++ b/.changeset/green-weeks-care.md @@ -0,0 +1,5 @@ +--- +"@exactly/mobile": patch +--- + +✨ implement new pay screen diff --git a/.maestro/subflows/activateCard.yaml b/.maestro/subflows/activateCard.yaml index ab3b6d493..5747494df 100644 --- a/.maestro/subflows/activateCard.yaml +++ b/.maestro/subflows/activateCard.yaml @@ -42,4 +42,31 @@ appId: ${APP_ID ?? "app.exactly"} text: \$[\s\d,.\xa0]+ above: Available balance - tapOn: Home -- assertVisible: Spending limit +- runFlow: + when: { visible: Tap here to change the number of installments } + commands: + - tapOn: Tap here to change the number of installments + - assertVisible: Set installments + - tapOn: "3" + - tapOn: Set Pay Later in 3 + - tapOn: Later in 3 + - assertVisible: Set installments + - tapOn: Installments calculator + - assertVisible: Enter a purchase amount + - assertVisible: BEST APR + - runFlow: { file: ../subflows/tapAria.yaml, env: { aria: Go back } } + - assertVisible: Exa Card pay mode +- tapOn: Now +- runFlow: { file: ../subflows/tapAria.yaml, env: { aria: Spending limit info } } +- assertVisible: It's based on the USDC available in your balance. +- tapOn: Close +- tapOn: Later in \d+ +- runFlow: { file: ../subflows/tapAria.yaml, env: { aria: Credit limit info } } +- assertVisible: It's based on the value of your collateral assets and updates as their value changes. +- tapOn: Close +- tapOn: + text: Learn more + rightOf: Exa Card pay mode +- assertVisible: Change the pay mode before each purchase and pay how you want. +- tapOn: Close + diff --git a/src/app/(main)/(home)/_layout.tsx b/src/app/(main)/(home)/_layout.tsx index e749dc178..74b521478 100644 --- a/src/app/(main)/(home)/_layout.tsx +++ b/src/app/(main)/(home)/_layout.tsx @@ -19,7 +19,7 @@ import { emitTabPress } from "../../../utils/useTabPress"; const tabs = [ { name: "index", title: "Home", href: "/", Icon: Home }, { name: "card", title: "Card", href: "/card", Icon: CreditCard }, - { name: "pay-mode", title: "Payments", href: "/pay-mode", Icon: CalendarCheck }, + { name: "pay", title: "Payments", href: "/pay", Icon: CalendarCheck }, { name: "defi", title: "DeFi", href: "/defi", Icon: Boxes }, { name: "activity", title: "Activity", href: "/activity", Icon: History }, ] as const; diff --git a/src/app/(main)/(home)/pay-mode.tsx b/src/app/(main)/(home)/pay-mode.tsx deleted file mode 100644 index a189454b5..000000000 --- a/src/app/(main)/(home)/pay-mode.tsx +++ /dev/null @@ -1 +0,0 @@ -export { default } from "../../../components/pay-mode/PayMode"; diff --git a/src/app/(main)/(home)/pay.tsx b/src/app/(main)/(home)/pay.tsx new file mode 100644 index 000000000..b18566087 --- /dev/null +++ b/src/app/(main)/(home)/pay.tsx @@ -0,0 +1 @@ +export { default } from "../../../components/pay/Pay"; diff --git a/src/app/(main)/calculator.tsx b/src/app/(main)/calculator.tsx index 8a4219158..6475159c8 100644 --- a/src/app/(main)/calculator.tsx +++ b/src/app/(main)/calculator.tsx @@ -1 +1 @@ -export { default } from "../../components/pay-mode/InstallmentsCalculator"; +export { default } from "../../components/pay/InstallmentsCalculator"; diff --git a/src/app/(main)/pay/index.tsx b/src/app/(main)/pay/index.tsx deleted file mode 100644 index bb2725296..000000000 --- a/src/app/(main)/pay/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { default } from "../../../components/pay-mode/Pay"; diff --git a/src/app/(main)/pay/_layout.tsx b/src/app/(main)/repay/_layout.tsx similarity index 100% rename from src/app/(main)/pay/_layout.tsx rename to src/app/(main)/repay/_layout.tsx diff --git a/src/app/(main)/repay/index.tsx b/src/app/(main)/repay/index.tsx new file mode 100644 index 000000000..03ff57645 --- /dev/null +++ b/src/app/(main)/repay/index.tsx @@ -0,0 +1 @@ +export { default } from "../../../components/pay/Repay"; diff --git a/src/components/home/Home.tsx b/src/components/home/Home.tsx index 4bb01a7e8..3529a0021 100644 --- a/src/components/home/Home.tsx +++ b/src/components/home/Home.tsx @@ -46,9 +46,9 @@ import useAccount from "../../utils/useAccount"; import usePortfolio from "../../utils/usePortfolio"; import useTabPress from "../../utils/useTabPress"; import BenefitsSection from "../benefits/BenefitsSection"; -import OverduePayments from "../pay-mode/OverduePayments"; -import PaymentSheet from "../pay-mode/PaymentSheet"; -import UpcomingPayments from "../pay-mode/UpcomingPayments"; +import OverduePayments from "../pay/OverduePayments"; +import PaymentSheet from "../pay/PaymentSheet"; +import UpcomingPayments from "../pay/UpcomingPayments"; import InfoAlert from "../shared/InfoAlert"; import LatestActivity from "../shared/LatestActivity"; import LiquidationAlert from "../shared/LiquidationAlert"; diff --git a/src/components/loans/Loans.tsx b/src/components/loans/Loans.tsx index 7ba224d7d..13aec47a1 100644 --- a/src/components/loans/Loans.tsx +++ b/src/components/loans/Loans.tsx @@ -17,8 +17,8 @@ import { presentArticle } from "../../utils/intercom"; import queryClient from "../../utils/queryClient"; import reportError from "../../utils/reportError"; import useAsset from "../../utils/useAsset"; -import PaymentSheet from "../pay-mode/PaymentSheet"; -import UpcomingPayments from "../pay-mode/UpcomingPayments"; +import PaymentSheet from "../pay/PaymentSheet"; +import UpcomingPayments from "../pay/UpcomingPayments"; import SafeView from "../shared/SafeView"; import Text from "../shared/Text"; import View from "../shared/View"; diff --git a/src/components/pay-mode/PayMode.tsx b/src/components/pay-mode/PayMode.tsx deleted file mode 100644 index 1cc702702..000000000 --- a/src/components/pay-mode/PayMode.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import React, { useRef } from "react"; -import { Trans } from "react-i18next"; -import { RefreshControl } from "react-native"; - -import { useRouter } from "expo-router"; - -import { ScrollView, XStack } from "tamagui"; - -import { zeroAddress } from "viem"; - -import { marketUSDCAddress, previewerAddress } from "@exactly/common/generated/chain"; -import { useReadPreviewerExactly } from "@exactly/common/generated/hooks"; - -import OverduePayments from "./OverduePayments"; -import PaymentSheet from "./PaymentSheet"; -import PaySelector from "./PaySelector"; -import UpcomingPayments from "./UpcomingPayments"; -import { presentCollection } from "../../utils/intercom"; -import openBrowser from "../../utils/openBrowser"; -import queryClient from "../../utils/queryClient"; -import reportError from "../../utils/reportError"; -import useAsset from "../../utils/useAsset"; -import useTabPress from "../../utils/useTabPress"; -import SafeView from "../shared/SafeView"; -import Text from "../shared/Text"; -import View from "../shared/View"; - -export default function PayMode() { - const { account } = useAsset(marketUSDCAddress); - const router = useRouter(); - const { refetch, isPending } = useReadPreviewerExactly({ address: previewerAddress, args: [account ?? zeroAddress] }); - - const scrollRef = useRef(null); - const refresh = () => { - refetch().catch(reportError); - queryClient.refetchQueries({ queryKey: ["activity"] }).catch(reportError); - }; - useTabPress("pay-mode", () => { - scrollRef.current?.scrollTo({ y: 0, animated: true }); - refresh(); - }); - - return ( - - - - } - > - <> - - - router.setParams({ maturity: String(m) })} /> - router.setParams({ maturity: String(m) })} /> - - - { - openBrowser("https://exact.ly/").catch(reportError); - }} - /> - ), - terms: ( - { - presentCollection("10544608").catch(reportError); - }} - /> - ), - }} - /> - - - - - - - - - ); -} diff --git a/src/components/pay-mode/PaySelector.tsx b/src/components/pay-mode/PaySelector.tsx deleted file mode 100644 index 79e2bf21e..000000000 --- a/src/components/pay-mode/PaySelector.tsx +++ /dev/null @@ -1,379 +0,0 @@ -import React, { useMemo, useState } from "react"; -import { Trans, useTranslation } from "react-i18next"; -import { Pressable, StyleSheet } from "react-native"; - -import { Check, CircleHelp } from "@tamagui/lucide-icons"; -import { useToastController } from "@tamagui/toast"; -import { XStack, YStack } from "tamagui"; - -import { useMutation, useQuery } from "@tanstack/react-query"; -import { formatUnits, parseUnits, zeroAddress } from "viem"; - -import { marketUSDCAddress, previewerAddress } from "@exactly/common/generated/chain"; -import { useReadPreviewerExactly, useReadPreviewerPreviewBorrowAtMaturity } from "@exactly/common/generated/hooks"; -import MAX_INSTALLMENTS from "@exactly/common/MAX_INSTALLMENTS"; -import { borrowLimit, WAD, withdrawLimit } from "@exactly/lib"; - -import ManualRepaymentSheet from "./ManualRepaymentSheet"; -import { presentArticle } from "../../utils/intercom"; -import queryClient from "../../utils/queryClient"; -import reportError from "../../utils/reportError"; -import { cardModeMutationOptions, type CardDetails } from "../../utils/server"; -import useAccount from "../../utils/useAccount"; -import useAsset from "../../utils/useAsset"; -import useInstallments from "../../utils/useInstallments"; -import AssetLogo from "../shared/AssetLogo"; -import Input from "../shared/Input"; -import Skeleton from "../shared/Skeleton"; -import Text from "../shared/Text"; -import View from "../shared/View"; - -export default function PaySelector() { - const toast = useToastController(); - const { - t, - i18n: { language }, - } = useTranslation(); - const [input, setInput] = useState("100"); - const assets = useMemo(() => { - return parseUnits(input.replaceAll(/\D/g, ".").replaceAll(/\.(?=.*\.)/g, ""), 6); - }, [input]); - const { address } = useAccount(); - const { data: markets } = useReadPreviewerExactly({ address: previewerAddress, args: [address ?? zeroAddress] }); - const exaUSDC = markets?.find(({ market }) => market === marketUSDCAddress); - const { firstMaturity } = useInstallments({ - totalAmount: assets, - installments: 1, - }); - - const { data: manualRepaymentAcknowledged } = useQuery({ queryKey: ["manual-repayment-acknowledged"] }); - const [manualRepaymentSheetOpen, setManualRepaymentSheetOpen] = useState(false); - const [pendingInstallment, setPendingInstallment] = useState(null); - - const { data: card } = useQuery({ queryKey: ["card", "details"] }); - const { mutateAsync: mutateMode } = useMutation(cardModeMutationOptions); - - function setInstallments(value: number) { - if (!card || card.mode === value) return; - mutateMode(value).catch(reportError); - const message = value === 0 ? t("Pay Now selected") : t("Installments selected", { count: value }); - toast.show(message, { - native: true, - duration: 1000, - burntOptions: { haptic: "success" }, - }); - } - - function handleInstallmentSelection(value: number) { - if (value === 0) { - setInstallments(value); - return; - } - if (!manualRepaymentAcknowledged) { - setPendingInstallment(value); - setManualRepaymentSheetOpen(true); - return; - } - setInstallments(value); - } - - function handleConfirm() { - queryClient.setQueryData(["manual-repayment-acknowledged"], true); - if (pendingInstallment !== null) { - setInstallments(pendingInstallment); - } - setPendingInstallment(null); - setManualRepaymentSheetOpen(false); - } - - return ( - <> - - - - - {t("Pay Mode")} - - { - presentArticle("9465994").catch(reportError); - }} - > - - - - - }} - /> - - - - {t("Simulate a purchase of")} - - - - USDC - - - - - - - - - - {t("INSTANT PAY ({{asset}})", { asset: "USDC" })} - - - - {t("Available limit: {{asset}}", { asset: "USDC" })} - - - {(markets ? Number(withdrawLimit(markets, marketUSDCAddress)) / 1e6 : 0).toLocaleString(language, { - minimumFractionDigits: 2, - maximumFractionDigits: 2, - })} - - - - - - - - - {t("INSTALLMENT PLANS")} - - - - {t("Credit limit: {{asset}}", { asset: "USDC" })} - - - {(markets ? Number(borrowLimit(markets, marketUSDCAddress)) / 1e6 : 0).toLocaleString(language, { - minimumFractionDigits: 2, - maximumFractionDigits: 2, - })} - - - - - {Array.from({ length: MAX_INSTALLMENTS }, (_, index) => index + 1).map((installment) => ( - - ))} - - - {t("First due date: {{date}} - then every 28 days.", { - date: new Date(firstMaturity * 1000).toLocaleDateString(language, { - year: "numeric", - month: "short", - day: "numeric", - }), - })} - - - - { - setManualRepaymentSheetOpen(false); - }} - onActionPress={handleConfirm} - penaltyRate={exaUSDC?.penaltyRate} - /> - - - ); -} - -function InstallmentButton({ - installment, - cardDetails, - onSelect, - assets, -}: { - assets: bigint; - cardDetails?: null | { mode: number }; - installment: number; - onSelect: (installment: number) => void; -}) { - const { - t, - i18n: { language }, - } = useTranslation(); - const { market, account } = useAsset(marketUSDCAddress); - const calculationAssets = assets === 0n ? 100_000_000n : assets; - const { - data: installments, - firstMaturity, - timestamp, - isFetching: isInstallmentsFetching, - } = useInstallments({ - totalAmount: calculationAssets, - installments: installment, - }); - const { data: borrowPreview, isLoading: isBorrowPreviewLoading } = useReadPreviewerPreviewBorrowAtMaturity({ - address: previewerAddress, - args: [market?.market ?? zeroAddress, BigInt(firstMaturity), calculationAssets], - query: { enabled: !!market && !!account && !!firstMaturity && calculationAssets > 0n }, - }); - - const selected = cardDetails?.mode === installment; - - const apr = - installment > 0 - ? installment > 1 && installments - ? Number(installments.effectiveRate) / 1e18 - : borrowPreview - ? Number( - ((borrowPreview.assets - calculationAssets) * WAD * 31_536_000n) / - (calculationAssets * (borrowPreview.maturity - BigInt(timestamp))), - ) / 1e18 - : 0 - : 0; - - return ( - { - onSelect(installment); - }} - > - - - {selected && } - - - - 0 ? "$uiNeutralSecondary" : "$uiNeutralPrimary"}> - {installment > 0 ? `${installment}x` : t("Pay Now")} - - {installment > 0 && } - - {installment > 0 && - (isInstallmentsFetching || (installment === 1 && isBorrowPreviewLoading) ? ( - - ) : ( - - {Number( - formatUnits( - assets - ? installments && installment > 1 - ? (installments.installments[0] ?? 0n) - : (borrowPreview?.assets ?? 0n) - : 0n, - 6, - ), - ).toLocaleString(language, { minimumFractionDigits: 0, maximumFractionDigits: 2 })} - - ))} - - {installment > 0 && - (isInstallmentsFetching || isBorrowPreviewLoading ? ( - - ) : ( - - {t("{{apr}} APR", { - apr: apr.toLocaleString(language, { - style: "percent", - minimumFractionDigits: 2, - maximumFractionDigits: 2, - }), - })} - - ))} - - - - USDC - - - {isInstallmentsFetching || (installment === 1 && isBorrowPreviewLoading) ? ( - - ) : ( - (assets === 0n - ? Number(assets) - : Number( - formatUnits( - installment === 0 - ? assets - : installments && installment > 1 - ? installments.installments.reduce((accumulator, current) => accumulator + current, 0n) - : installment === 1 && borrowPreview - ? borrowPreview.assets - : 0n, - 6, - ), - ) - ).toLocaleString(language, { minimumFractionDigits: 2, maximumFractionDigits: 2 }) - )} - - - - - ); -} - -const styles = StyleSheet.create({ button: { flexGrow: 1 } }); diff --git a/src/components/pay-mode/PaymentsActions.tsx b/src/components/pay-mode/PaymentsActions.tsx deleted file mode 100644 index 715e12ad3..000000000 --- a/src/components/pay-mode/PaymentsActions.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from "react"; -import { useTranslation } from "react-i18next"; -import { Pressable } from "react-native"; - -import { CircleDollarSign, Coins } from "@tamagui/lucide-icons"; -import { styled, Switch } from "tamagui"; - -import Text from "../shared/Text"; -import View from "../shared/View"; - -const StyledAction = styled(View, { - flex: 1, - minHeight: 140, - borderWidth: 1, - padding: 16, - borderRadius: 10, - backgroundColor: "$backgroundSoft", - borderColor: "$borderNeutralSoft", - justifyContent: "space-between", - flexBasis: "50%", -}); - -export default function PaymentsActions() { - const { t } = useTranslation(); - return ( - - - - - - {t("Auto-pay")} - - - - - - - - - - - - {t("Collateral")} - - - {t("Manage")} - - - - - - ); -} diff --git a/src/components/pay-mode/AssetSelectionSheet.tsx b/src/components/pay/AssetSelectionSheet.tsx similarity index 100% rename from src/components/pay-mode/AssetSelectionSheet.tsx rename to src/components/pay/AssetSelectionSheet.tsx diff --git a/src/components/pay-mode/Empty.tsx b/src/components/pay/Empty.tsx similarity index 78% rename from src/components/pay-mode/Empty.tsx rename to src/components/pay/Empty.tsx index 8029f9c58..4668c592b 100644 --- a/src/components/pay-mode/Empty.tsx +++ b/src/components/pay/Empty.tsx @@ -4,7 +4,7 @@ import { StyleSheet } from "react-native"; import { YStack } from "tamagui"; -import Blob from "../../assets/images/exa-card-blob.svg"; +import ExaCardBlob from "../../assets/images/exa-card-blob.svg"; import ExaCard from "../../assets/images/exa-card.svg"; import Text from "../shared/Text"; import View from "../shared/View"; @@ -15,8 +15,8 @@ export default function Empty() { - - + + @@ -27,7 +27,7 @@ export default function Empty() { {t("No payments pending")} - {t("You're all caught up! Start using your card to see payments listed here.")} + {t("You're all caught up! Start using your card in Pay Later mode to see payments listed here.")} diff --git a/src/components/pay-mode/InstallmentsCalculator.tsx b/src/components/pay/InstallmentsCalculator.tsx similarity index 100% rename from src/components/pay-mode/InstallmentsCalculator.tsx rename to src/components/pay/InstallmentsCalculator.tsx diff --git a/src/components/pay-mode/ManualRepaymentSheet.tsx b/src/components/pay/ManualRepaymentSheet.tsx similarity index 100% rename from src/components/pay-mode/ManualRepaymentSheet.tsx rename to src/components/pay/ManualRepaymentSheet.tsx diff --git a/src/components/pay-mode/OverduePayments.tsx b/src/components/pay/OverduePayments.tsx similarity index 79% rename from src/components/pay-mode/OverduePayments.tsx rename to src/components/pay/OverduePayments.tsx index f9d19f0ec..c69cbd46c 100644 --- a/src/components/pay-mode/OverduePayments.tsx +++ b/src/components/pay/OverduePayments.tsx @@ -24,7 +24,13 @@ import useAccount from "../../utils/useAccount"; import Text from "../shared/Text"; import View from "../shared/View"; -export default function OverduePayments({ onSelect }: { onSelect: (maturity: bigint) => void }) { +export default function OverduePayments({ + excludeMaturity, + onSelect, +}: { + excludeMaturity?: bigint; + onSelect: (maturity: bigint) => void; +}) { const { t, i18n: { language }, @@ -49,6 +55,7 @@ export default function OverduePayments({ onSelect }: { onSelect: (maturity: big if (!previewValue) continue; const positionAmount = position.principal + position.fee; if (previewValue === 0n) continue; + if (maturity === excludeMaturity) continue; if (isBefore(new Date(Number(maturity) * 1000), new Date())) { overduePayments.set(maturity, { amount: (overduePayments.get(maturity)?.amount ?? 0n) + previewValue, @@ -61,11 +68,21 @@ export default function OverduePayments({ onSelect }: { onSelect: (maturity: big const payments = [...overduePayments]; if (payments.length === 0) return null; return ( - - - {t("Overdue payments")} - - + + + + {t("Overdue payments")} + + + {payments.map(([maturity, { amount, discount }], index) => { const isRepaying = pendingProposals?.some(({ proposal }) => { const { proposalType: type, data } = proposal; @@ -86,10 +103,22 @@ export default function OverduePayments({ onSelect }: { onSelect: (maturity: big return decoded.repayMaturity === maturity; }); const processing = isRepaying || isRollingDebt; //eslint-disable-line @typescript-eslint/prefer-nullish-coalescing + const formattedDate = new Date(Number(maturity) * 1000).toLocaleDateString(language, { + year: "2-digit", + month: "short", + day: "numeric", + }); + const formattedAmount = (Number(amount) / 10 ** (exaUSDC?.decimals ?? 6)).toLocaleString(language, { + style: "currency", + currency: "USD", + }); return ( {index > 0 && } - {new Date(Number(maturity) * 1000).toLocaleDateString(language, { - year: "2-digit", - month: "short", - day: "numeric", - })} + {formattedDate} {processing @@ -118,10 +143,7 @@ export default function OverduePayments({ onSelect }: { onSelect: (maturity: big - {(Number(amount) / 10 ** (exaUSDC?.decimals ?? 6)).toLocaleString(language, { - style: "currency", - currency: "USD", - })} + {formattedAmount} diff --git a/src/components/pay/Pay.tsx b/src/components/pay/Pay.tsx new file mode 100644 index 000000000..727fb02e7 --- /dev/null +++ b/src/components/pay/Pay.tsx @@ -0,0 +1,414 @@ +import React, { useCallback, useMemo, useRef, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { Pressable, RefreshControl } from "react-native"; + +import { useRouter } from "expo-router"; + +import { Check, Coins, ExternalLink, Eye, EyeOff, FileText, Info, RefreshCw } from "@tamagui/lucide-icons"; +import { ScrollView, XStack, YStack } from "tamagui"; + +import { useQuery } from "@tanstack/react-query"; +import { formatDistance, isBefore } from "date-fns"; +import { enUS, es } from "date-fns/locale"; +import { zeroAddress } from "viem"; +import { optimismSepolia } from "viem/chains"; + +import chain, { marketUSDCAddress, previewerAddress } from "@exactly/common/generated/chain"; +import { useReadPreviewerExactly } from "@exactly/common/generated/hooks"; +import { WAD } from "@exactly/lib"; + +import Empty from "./Empty"; +import OverduePayments from "./OverduePayments"; +import PaymentSheet from "./PaymentSheet"; +import UpcomingPayments from "./UpcomingPayments"; +import { presentArticle } from "../../utils/intercom"; +import openBrowser from "../../utils/openBrowser"; +import queryClient from "../../utils/queryClient"; +import reportError from "../../utils/reportError"; +import useAsset from "../../utils/useAsset"; +import useTabPress from "../../utils/useTabPress"; +import Amount from "../shared/Amount"; +import InfoSheet from "../shared/InfoSheet"; +import SafeView from "../shared/SafeView"; +import Button from "../shared/StyledButton"; +import Text from "../shared/Text"; +import View from "../shared/View"; + +export default function Pay() { + const { + t, + i18n: { language }, + } = useTranslation(); + const router = useRouter(); + const { account, market: exaUSDC } = useAsset(marketUSDCAddress); + const { + data: markets, + refetch, + isPending, + } = useReadPreviewerExactly({ + address: previewerAddress, + args: [account ?? zeroAddress], + query: { refetchInterval: 30_000 }, + }); + + const { data: hidden } = useQuery({ queryKey: ["settings", "sensitive"] }); + const [infoType, setInfoType] = useState<"discount" | "fees" | "total" | null>(null); + const scrollRef = useRef(null); + const refresh = useCallback(() => { + refetch().catch(reportError); + queryClient.refetchQueries({ queryKey: ["activity"] }).catch(reportError); + }, [refetch]); + useTabPress("pay", () => { + scrollRef.current?.scrollTo({ y: 0, animated: true }); + refresh(); + }); + + const allMaturities = useMemo(() => { + if (!markets) return []; + const map = new Map(); + for (const { fixedBorrowPositions } of markets) { + for (const { maturity, previewValue, position } of fixedBorrowPositions) { + if (!previewValue || previewValue === 0n) continue; + const positionAmount = position.principal + position.fee; + const existing = map.get(maturity); + map.set(maturity, { + previewValue: (existing?.previewValue ?? 0n) + previewValue, + positionAmount: (existing?.positionAmount ?? 0n) + positionAmount, + isOverdue: isBefore(new Date(Number(maturity) * 1000), new Date()), + }); + } + } + return [...map].sort(([a], [b]) => Number(a - b)); + }, [markets]); + + const hasPayments = allMaturities.length > 0; + const firstMaturity = allMaturities[0]; + + const totalOutstandingUSD = useMemo(() => { + if (!exaUSDC) return 0; + const total = allMaturities.reduce((sum, [, { previewValue }]) => sum + previewValue, 0n); + return Number(total) / 10 ** exaUSDC.decimals; + }, [allMaturities, exaUSDC]); + + const viewStatement = useCallback(() => { + openBrowser( + `https://${{ [optimismSepolia.id]: "testnet" }[chain.id] ?? "app"}.exact.ly/dashboard?account=${account}&tab=b`, + ).catch(reportError); + }, [account]); + + const onSelect = useCallback( + (maturity: bigint) => { + router.setParams({ maturity: String(maturity) }); + }, + [router], + ); + + return ( + + + + } + > + {hasPayments ? ( + <> + + + {t("Payments")} + + { + queryClient.setQueryData(["settings", "sensitive"], !hidden); + }} + hitSlop={15} + > + {hidden ? : } + + + setInfoType("total")} + onStatementsPress={viewStatement} + /> + + {firstMaturity && exaUSDC && ( + setInfoType(firstMaturity[1].isOverdue ? "fees" : "discount")} + onPay={() => onSelect(firstMaturity[0])} + onRollover={() => { + router.setParams({ maturity: String(firstMaturity[0]) }); + }} + /> + )} + + + + + setInfoType(null)} title={t("Total outstanding")}> + + {t("This total includes all your purchases, loans, interest, and any applicable late fees.")} + + + + setInfoType(null)} + title={t("Early repayment discount")} + > + + {t( + "You can repay early and save on interest. The final amount updates automatically before you confirm.", + )} + + + setInfoType(null)} + > + {t("Close")} + + + setInfoType(null)} title={t("Late payment fees")}> + + {t( + "Late fees are charged daily after the due date. The rate applies to your full balance (principal + interest) and keeps adding up until you pay.", + )} + + + {t("Example: On a $100 balance, a 0.45% daily fee adds $0.45 per day.")} + + + setInfoType(null)} + > + {t("Close")} + + + + ) : ( + + )} + + + + ); +} + +function TotalOutstandingCard({ + amount, + count, + onInfoPress, + onStatementsPress, + t, +}: { + amount: number; + count: number; + onInfoPress: () => void; + onStatementsPress: () => void; + t: (key: string, options?: Record) => string; +}) { + return ( + + + + + {t("Total outstanding")} + + + + + + + + {t("Statements")} + + + + + + + {count > 0 && ( + + {t("in {{count}} payments", { count })} + + )} + + + ); +} + +function FirstMaturityCard({ + data, + decimals: assetDecimals, + language, + maturity, + onInfoPress, + onPay, + onRollover, + t, +}: { + data: { isOverdue: boolean; positionAmount: bigint; previewValue: bigint }; + decimals: number; + language: string; + maturity: bigint; + onInfoPress: () => void; + onPay: () => void; + onRollover: () => void; + t: (key: string, options?: Record) => string; +}) { + const { previewValue, positionAmount, isOverdue } = data; + const maturityDate = new Date(Number(maturity) * 1000); + const now = new Date(); + const dateFnsLocale = language === "es" ? es : enUS; + const timeDistance = formatDistance(isOverdue ? maturityDate : now, isOverdue ? now : maturityDate, { + locale: dateFnsLocale, + }); + + const discount = Number(WAD - (previewValue * WAD) / positionAmount) / 1e18; + const penaltyPercent = isOverdue ? Math.abs(discount) : discount; + const originalAmount = Number(positionAmount) / 10 ** assetDecimals; + + return ( + + + + + + {isOverdue + ? t("{{time}} past due", { time: timeDistance }) + : t("Due in {{time}}", { time: timeDistance })} + + + + + {t("View statement")} + + + + + + {maturityDate.toLocaleDateString(language, { year: "numeric", month: "short", day: "numeric" })} + {` - ${maturityDate.toLocaleTimeString(language, { hour: "2-digit", minute: "2-digit", timeZoneName: "short" })}`} + + + + + + {isOverdue ? ( + <> + + {penaltyPercent.toLocaleString(language, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })} + + + {t("Late payment fee")} + + + ) : discount >= 0.001 ? ( + <> + + {`$${originalAmount.toLocaleString(language, { style: "decimal", minimumFractionDigits: 2, maximumFractionDigits: 2 })}`} + + + {t("{{percent}} OFF", { + percent: discount.toLocaleString(language, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }), + })} + + + ) : null} + + + + + + + + + + + + + ); +} diff --git a/src/components/pay-mode/PaymentSheet.tsx b/src/components/pay/PaymentSheet.tsx similarity index 59% rename from src/components/pay-mode/PaymentSheet.tsx rename to src/components/pay/PaymentSheet.tsx index c88641e0a..97f4b1db2 100644 --- a/src/components/pay-mode/PaymentSheet.tsx +++ b/src/components/pay/PaymentSheet.tsx @@ -7,15 +7,16 @@ import { useLocalSearchParams, useRouter } from "expo-router"; import { ArrowRight, Calendar, - ChevronRight, CirclePercent, Coins, + ExternalLink, + FileText, Info, RefreshCw, Siren, } from "@tamagui/lucide-icons"; import { useToastController } from "@tamagui/toast"; -import { Separator, XStack, YStack } from "tamagui"; +import { Separator, XStack, YStack, type YStackProps } from "tamagui"; import { useQuery } from "@tanstack/react-query"; import { formatDistance, isAfter } from "date-fns"; @@ -35,25 +36,28 @@ import queryClient from "../../utils/queryClient"; import reportError from "../../utils/reportError"; import useAccount from "../../utils/useAccount"; import useAsset from "../../utils/useAsset"; +import Amount from "../shared/Amount"; +import InfoSheet from "../shared/InfoSheet"; import ModalSheet from "../shared/ModalSheet"; -import SafeView from "../shared/SafeView"; import Button from "../shared/StyledButton"; import Text from "../shared/Text"; import View from "../shared/View"; import type { Credential } from "@exactly/common/validation"; -function Frame({ children }: { children: React.ReactNode }) { +function Frame({ children, ...properties }: YStackProps & { children: React.ReactNode }) { return ( - {children} - + ); } @@ -61,14 +65,21 @@ function NotAvailableView({ onClose }: { onClose: () => void }) { const { t } = useTranslation(); return ( - + {t("This payment is no longer available")} - + ); } @@ -77,14 +88,14 @@ function RolloverIntroView({ isLatestPlugin, onContinue }: { isLatestPlugin: boo const { t } = useTranslation(); const toast = useToastController(); return ( - + - + @@ -99,19 +110,19 @@ function RolloverIntroView({ isLatestPlugin, onContinue }: { isLatestPlugin: boo - + {t("Avoid penalties by extending your deadline")} - + {t("Refinance at a better rate")} - + {t("Get more time to repay")} @@ -137,120 +148,117 @@ function RolloverIntroView({ isLatestPlugin, onContinue }: { isLatestPlugin: boo - + ); } function DetailsView({ borrow, - hidden, language, + onInfoPress, onRepayPress, onRolloverPress, onViewStatement, }: { borrow: { discount: number; - discountLabel: string; dueDate: Date; dueStatus: string; isUpcoming: boolean; positionValue: bigint; previewValue: bigint; }; - hidden: boolean; language: string; + onInfoPress: () => void; onRepayPress: () => void; onRolloverPress: () => void; onViewStatement: () => void; }) { const { t } = useTranslation(); - const { previewValue, positionValue, discount, dueDate, isUpcoming, dueStatus, discountLabel } = borrow; + const { previewValue, positionValue, discount, dueDate, isUpcoming, dueStatus } = borrow; + + const penaltyPercent = Math.abs(discount); + const originalAmount = Number(positionValue) / 1e18; + return ( - - - - - {dueStatus} - - {" - "} - {dueDate.toLocaleDateString(language, { year: "numeric", month: "short", day: "numeric" })} - - - { - presentArticle("10245778").catch(reportError); - }} - hitSlop={15} - > - - - - - - {`$${(Number(previewValue) / 1e18).toLocaleString(language, { style: "decimal", minimumFractionDigits: 2, maximumFractionDigits: 2 })}`} - - {discount >= 0 && ( - - {`$${(Number(positionValue) / 1e18).toLocaleString(language, { style: "decimal", minimumFractionDigits: 2, maximumFractionDigits: 2 })}`} + + + + + + {dueStatus} - )} - {!hidden && ( - = 0 ? "$interactiveBaseSuccessSoftDefault" : "$interactiveBaseErrorSoftDefault" - } - color={discount >= 0 ? "$uiSuccessSecondary" : "$uiErrorSecondary"} - > - {discountLabel} - - )} - - - - - - - + + + {t("View statement")} + + + + + {dueDate.toLocaleDateString(language, { year: "numeric", month: "short", day: "numeric" })} + {` - ${dueDate.toLocaleTimeString(language, { hour: "2-digit", minute: "2-digit", timeZoneName: "short" })}`} + + + + + + {isUpcoming ? ( + discount >= 0.001 ? ( + <> + + {`$${originalAmount.toLocaleString(language, { style: "decimal", minimumFractionDigits: 2, maximumFractionDigits: 2 })}`} + + + {t("{{percent}} OFF", { + percent: discount.toLocaleString(language, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2, + }), + })} + + + ) : null + ) : ( + <> + + {penaltyPercent.toLocaleString(language, { + style: "percent", + minimumFractionDigits: 2, + maximumFractionDigits: 2, + })} + + + {t("Late payment fee")} + + + )} - - + + + + + + + + + + + ); } @@ -261,12 +269,12 @@ export default function PaymentSheet() { const { maturity } = parameters; const { address } = useAccount(); const { market: USDCMarket } = useAsset(marketUSDCAddress); + const [infoOpen, setInfoOpen] = useState(false); const [rolloverIntroOpen, setRolloverIntroOpen] = useState(false); const [open, setOpen] = useState(() => !!maturity); const [displayMaturity, setDisplayMaturity] = useState(maturity); const toast = useToastController(); const { data: credential } = useQuery({ queryKey: ["credential"] }); - const { data: hidden } = useQuery({ queryKey: ["settings", "sensitive"] }); const { data: rolloverIntroShown } = useQuery({ queryKey: ["settings", "rollover-intro-shown"] }); const { data: installedPlugins } = useReadUpgradeableModularAccountGetInstalledPlugins({ address, @@ -292,7 +300,6 @@ export default function PaymentSheet() { | undefined | { discount: number; - discountLabel: string; dueDate: Date; dueStatus: string; isUpcoming: boolean; @@ -318,16 +325,7 @@ export default function PaymentSheet() { const dueStatus = isUpcoming ? t("Due in {{time}}", { time: timeDistance }) : t("{{time}} past due", { time: timeDistance }); - const discountPercentDisplay = (discount >= 0 ? discount : discount * -1).toLocaleString(language, { - style: "percent", - minimumFractionDigits: 2, - maximumFractionDigits: 2, - }); - const discountLabel = - discount >= 0 - ? t("PAY NOW AND SAVE {{percent}}", { percent: discountPercentDisplay }) - : t("DAILY PENALTIES {{percent}}", { percent: discountPercentDisplay }); - return { discount, discountLabel, dueDate, dueStatus, isUpcoming, positionValue, previewValue }; + return { discount, dueDate, dueStatus, isUpcoming, positionValue, previewValue }; }, [displayMaturity, USDCMarket, dateFnsLocale, t, language]); const close = useCallback(() => { @@ -348,7 +346,7 @@ export default function PaymentSheet() { const navigateToRepay = useCallback(() => { close(); - router.navigate({ pathname: "/pay", params: { maturity: displayMaturity } }); + router.navigate({ pathname: "/repay", params: { maturity: displayMaturity } }); }, [close, router, displayMaturity]); const navigateToRollover = useCallback(() => { @@ -370,14 +368,12 @@ export default function PaymentSheet() { const renderContent = () => { if (!displayMaturity || !USDCMarket || !borrow) return ; - if (rolloverIntroOpen) { - return ; - } + if (rolloverIntroOpen) return ; return (