From cd173e67e4e0514271371f4a5e5136f7f61d06d1 Mon Sep 17 00:00:00 2001 From: Max Nanis Date: Tue, 29 Sep 2026 11:47:48 -0700 Subject: Redemption Modal. Redemption Magic flow. User Account Icon --- jb-ui/.vscode/launch.json | 7 +- jb-ui/src/JBApp.tsx | 25 +- jb-ui/src/api_fsb/.openapi-generator/FILES | 16 +- jb-ui/src/api_fsb/api.ts | 1307 ++++++++++++------- jb-ui/src/api_fsb/docs/AccessControlEvent.md | 26 + jb-ui/src/api_fsb/docs/AccessControlEventBody.md | 20 + jb-ui/src/api_fsb/docs/Amount1.md | 19 + .../api_fsb/docs/BrokerageProductPayoutEvent.md | 4 +- .../src/api_fsb/docs/CashoutMethodForeignValue.md | 2 +- .../docs/CashoutMethodForeignValueResponse.md | 2 +- jb-ui/src/api_fsb/docs/CashoutMethodOut.md | 4 +- jb-ui/src/api_fsb/docs/CashoutMethodResponse.md | 2 +- jb-ui/src/api_fsb/docs/CashoutMethodsResponse.md | 2 +- jb-ui/src/api_fsb/docs/CashoutRequestDetail.md | 38 + jb-ui/src/api_fsb/docs/CashoutRequestResponse.md | 4 +- jb-ui/src/api_fsb/docs/CashoutRequestSummary.md | 37 + jb-ui/src/api_fsb/docs/CashoutRequestsResponse.md | 32 + jb-ui/src/api_fsb/docs/GeoIPInformation.md | 65 +- jb-ui/src/api_fsb/docs/LeaderboardResponse.md | 2 +- .../src/api_fsb/docs/LeaderboardWinnerResponse.md | 2 +- jb-ui/src/api_fsb/docs/PayoutCategory.md | 16 + jb-ui/src/api_fsb/docs/PayoutType.md | 2 + jb-ui/src/api_fsb/docs/ProfilingInfoResponse.md | 2 +- jb-ui/src/api_fsb/docs/StatusResponse.md | 2 +- jb-ui/src/api_fsb/docs/THLApi.md | 117 +- jb-ui/src/api_fsb/docs/TaskAdjustmentEvent.md | 40 + jb-ui/src/api_fsb/docs/TaskAdjustmentEventBody.md | 20 + jb-ui/src/api_fsb/docs/UpkQuestionResponse.md | 2 +- jb-ui/src/api_fsb/docs/UserInfoResponse.md | 2 +- .../docs/UserLedgerTransactionAttemptCredit.md | 34 + .../docs/UserLedgerTransactionTypesSummary.md | 2 + .../docs/UserLedgerTransactionUserPayoutCancel.md | 34 + .../api_fsb/docs/UserLedgerTransactionsResponse.md | 2 +- ...rLedgerTransactionsResponseTransactionsInner.md | 6 +- jb-ui/src/api_fsb/docs/UserProfile.md | 2 + jb-ui/src/api_fsb/docs/UserProfileResponse.md | 2 +- jb-ui/src/api_fsb/docs/UserProfilesResponse.md | 2 +- .../src/api_fsb/docs/UserWalletBalanceResponse.md | 2 +- jb-ui/src/api_fsb/docs/WalletApi.md | 133 +- jb-ui/src/api_fsb/openapi.json | 2 +- jb-ui/src/api_jb/.gitignore | 4 + jb-ui/src/api_jb/.npmignore | 1 + jb-ui/src/api_jb/.openapi-generator-ignore | 23 + jb-ui/src/api_jb/.openapi-generator/FILES | 26 + jb-ui/src/api_jb/.openapi-generator/VERSION | 1 + jb-ui/src/api_jb/README.md | 11 + jb-ui/src/api_jb/api.ts | 1341 ++++++++++++++++++++ jb-ui/src/api_jb/base.ts | 62 + jb-ui/src/api_jb/common.ts | 127 ++ jb-ui/src/api_jb/configuration.ts | 121 ++ jb-ui/src/api_jb/docs/APIApi.md | 97 ++ jb-ui/src/api_jb/docs/AccountLogin.md | 20 + jb-ui/src/api_jb/docs/AmtAccountLink.md | 22 + jb-ui/src/api_jb/docs/AuthApi.md | 368 ++++++ jb-ui/src/api_jb/docs/CashoutConfirmation.md | 20 + jb-ui/src/api_jb/docs/CashoutPostback.md | 20 + jb-ui/src/api_jb/docs/CashoutRequest.md | 22 + jb-ui/src/api_jb/docs/CashoutRequestInfo.md | 37 + jb-ui/src/api_jb/docs/DefaultApi.md | 191 +++ jb-ui/src/api_jb/docs/HTTPValidationError.md | 20 + jb-ui/src/api_jb/docs/LocationInner.md | 18 + jb-ui/src/api_jb/docs/MagicLinkExchangeRequest.md | 20 + jb-ui/src/api_jb/docs/PayoutStatus.md | 19 + jb-ui/src/api_jb/docs/PayoutType.md | 31 + jb-ui/src/api_jb/docs/User.md | 27 + jb-ui/src/api_jb/docs/ValidationError.md | 24 + jb-ui/src/api_jb/docs/WalletApi.md | 167 +++ jb-ui/src/api_jb/git_push.sh | 54 + jb-ui/src/api_jb/index.ts | 18 + jb-ui/src/api_jb/openapi.json | 1 + jb-ui/src/api_jb/openapitools.json | 7 + jb-ui/src/components/Redemption.tsx | 981 +++++++++++++- jb-ui/src/components/UserAccount.tsx | 25 + jb-ui/src/lib/utils.ts | 4 + jb-ui/src/models/app.ts | 10 + jb-ui/src/models/appSlice.ts | 34 + jb-ui/src/models/authAPI.ts | 21 +- jb-ui/src/models/cashoutMethodsSlice.ts | 58 +- jb-ui/src/models/cashoutRequests.ts | 32 + jb-ui/src/pages/MagicLink.tsx | 10 +- jb-ui/src/pages/MagicWallet.tsx | 58 + jb-ui/src/pages/Work.tsx | 11 +- jb-ui/src/store.ts | 5 +- jb-ui/src/vite-env.d.ts | 1 + jb-ui/vite.config.ts | 15 +- scripts/__init__.py | 0 scripts/unreject.py | 26 - scripts/wallet.ipynb | 153 --- 88 files changed, 5645 insertions(+), 759 deletions(-) create mode 100644 jb-ui/src/api_fsb/docs/AccessControlEvent.md create mode 100644 jb-ui/src/api_fsb/docs/AccessControlEventBody.md create mode 100644 jb-ui/src/api_fsb/docs/Amount1.md create mode 100644 jb-ui/src/api_fsb/docs/CashoutRequestDetail.md create mode 100644 jb-ui/src/api_fsb/docs/CashoutRequestSummary.md create mode 100644 jb-ui/src/api_fsb/docs/CashoutRequestsResponse.md create mode 100644 jb-ui/src/api_fsb/docs/PayoutCategory.md create mode 100644 jb-ui/src/api_fsb/docs/TaskAdjustmentEvent.md create mode 100644 jb-ui/src/api_fsb/docs/TaskAdjustmentEventBody.md create mode 100644 jb-ui/src/api_fsb/docs/UserLedgerTransactionAttemptCredit.md create mode 100644 jb-ui/src/api_fsb/docs/UserLedgerTransactionUserPayoutCancel.md create mode 100644 jb-ui/src/api_jb/.gitignore create mode 100644 jb-ui/src/api_jb/.npmignore create mode 100644 jb-ui/src/api_jb/.openapi-generator-ignore create mode 100644 jb-ui/src/api_jb/.openapi-generator/FILES create mode 100644 jb-ui/src/api_jb/.openapi-generator/VERSION create mode 100644 jb-ui/src/api_jb/README.md create mode 100644 jb-ui/src/api_jb/api.ts create mode 100644 jb-ui/src/api_jb/base.ts create mode 100644 jb-ui/src/api_jb/common.ts create mode 100644 jb-ui/src/api_jb/configuration.ts create mode 100644 jb-ui/src/api_jb/docs/APIApi.md create mode 100644 jb-ui/src/api_jb/docs/AccountLogin.md create mode 100644 jb-ui/src/api_jb/docs/AmtAccountLink.md create mode 100644 jb-ui/src/api_jb/docs/AuthApi.md create mode 100644 jb-ui/src/api_jb/docs/CashoutConfirmation.md create mode 100644 jb-ui/src/api_jb/docs/CashoutPostback.md create mode 100644 jb-ui/src/api_jb/docs/CashoutRequest.md create mode 100644 jb-ui/src/api_jb/docs/CashoutRequestInfo.md create mode 100644 jb-ui/src/api_jb/docs/DefaultApi.md create mode 100644 jb-ui/src/api_jb/docs/HTTPValidationError.md create mode 100644 jb-ui/src/api_jb/docs/LocationInner.md create mode 100644 jb-ui/src/api_jb/docs/MagicLinkExchangeRequest.md create mode 100644 jb-ui/src/api_jb/docs/PayoutStatus.md create mode 100644 jb-ui/src/api_jb/docs/PayoutType.md create mode 100644 jb-ui/src/api_jb/docs/User.md create mode 100644 jb-ui/src/api_jb/docs/ValidationError.md create mode 100644 jb-ui/src/api_jb/docs/WalletApi.md create mode 100644 jb-ui/src/api_jb/git_push.sh create mode 100644 jb-ui/src/api_jb/index.ts create mode 100644 jb-ui/src/api_jb/openapi.json create mode 100644 jb-ui/src/api_jb/openapitools.json create mode 100644 jb-ui/src/components/UserAccount.tsx create mode 100644 jb-ui/src/models/cashoutRequests.ts create mode 100644 jb-ui/src/pages/MagicWallet.tsx delete mode 100644 scripts/__init__.py delete mode 100644 scripts/unreject.py delete mode 100644 scripts/wallet.ipynb diff --git a/jb-ui/.vscode/launch.json b/jb-ui/.vscode/launch.json index 1feeaca..5d6fc0c 100644 --- a/jb-ui/.vscode/launch.json +++ b/jb-ui/.vscode/launch.json @@ -10,7 +10,8 @@ "run", "dev" ], - "autoAttachChildProcesses": true + "autoAttachChildProcesses": true, + "console": "integratedTerminal" }, { "name": "React: Launch Chrome", @@ -19,7 +20,7 @@ "url": "http://localhost:5173", "webRoot": "${workspaceFolder}/src", "sourceMaps": true, - "preLaunchTask": "npm: dev" + "preLaunchTask": "npm: dev", }, { "name": "React: Attach to Chrome", @@ -27,7 +28,7 @@ "request": "attach", "port": 9222, "url": "http://localhost:5173", - "webRoot": "${workspaceFolder}/src" + "webRoot": "${workspaceFolder}/src", }, { "name": "Jest: Run Tests", diff --git a/jb-ui/src/JBApp.tsx b/jb-ui/src/JBApp.tsx index 67b8dfc..3031a00 100644 --- a/jb-ui/src/JBApp.tsx +++ b/jb-ui/src/JBApp.tsx @@ -14,7 +14,6 @@ import { UserLedgerWallets, UserLedgerWalletAccountTypeEnum, WalletApi, - CashoutMethodsResponse, } from "@/api_fsb"; import Footer from "@/components/Footer"; import { useAppDispatch } from "@/hooks"; @@ -28,13 +27,12 @@ import { setUserAttemptCreditWallet, } from "@/models/appSlice"; -import { addCashoutMethods } from "@/models/cashoutMethodsSlice"; - import { addEvent } from "@/models/grlEventsSlice"; import { addStatsData } from "@/models/grlStatsSlice"; import CashoutConfirmation from "@/pages/CashoutConfirmation"; import MagicLink from "@/pages/MagicLink"; import MagicAMTLink from "@/pages/MagicAMTLink"; +import MagicWallet from "@/pages/MagicWallet"; import Result from "@/pages/Result"; import clsx from "clsx"; @@ -56,8 +54,9 @@ import { useEffect } from "react"; import Wallet from "@/components/Wallet"; import "@/index.css"; import { setTaskStatus, setUserWalletBalance } from "@/models/appSlice"; -import { Profiling } from "./components/Profiling"; -import Redemption from "./components/Redemption"; +import { Profiling } from "@/components/Profiling"; +import Redemption from "@/components/Redemption"; +import UserAccount from "@/components/UserAccount"; type Message = | PingMessage @@ -87,13 +86,6 @@ function QueryParamProcessor() { if (user?.product_user_id) { dispatch(setProductUserID(user.product_user_id)); - new WalletApi() - .getCashoutMethodsProductIdCashoutMethodsGet(bpid, user.product_user_id) - .then((res) => { - const response = res.data as CashoutMethodsResponse; - dispatch(addCashoutMethods(response.cashout_methods)); - }); - new WalletApi() .getUserWalletBalanceProductIdWalletGet( bpid, // productId @@ -111,7 +103,9 @@ function QueryParamProcessor() { const response = res.data as UserLedgerWallets; if (response.displayed_balances) { - dispatch(setUserDisplayedWalletBalance(response.displayed_balances[0])); + dispatch( + setUserDisplayedWalletBalance(response.displayed_balances[0]), + ); } const userWallet = response.wallets?.find( @@ -198,6 +192,8 @@ const Layout = () => { + +