import { HelpCircleIcon } from "lucide-react"; import React from "react"; import { useNavigate } from "react-router"; import { toast } from "sonner"; import AppHeader from "src/components/AppHeader"; import Loading from "src/components/Loading"; import ResponsiveExternalLinkButton from "src/components/ResponsiveExternalLinkButton"; import { LoadingButton } from "src/components/ui/custom/loading-button"; import { Input } from "src/components/ui/input"; import { Label } from "src/components/ui/label"; import { MAX_FREE_SUBWALLETS, SUBWALLET_APPSTORE_APP_ID } from "src/constants"; import { useAlbyMe } from "src/hooks/useAlbyMe"; import { useApps } from "src/hooks/useApps"; import { useInfo } from "src/hooks/useInfo"; import { createApp } from "src/requests/createApp"; import { CreateAppRequest } from "src/types"; import { handleRequestError } from "src/utils/handleRequestError"; export function NewSubwallet() { const navigate = useNavigate(); const [name, setName] = React.useState(""); const { data: subwalletAppsData } = useApps(undefined, undefined, { subWallets: true, }); const { data: info } = useInfo(); const { data: albyMe, error: albyMeError } = useAlbyMe(); const [isLoading, setLoading] = React.useState(false); if ( !info || !subwalletAppsData || (info.albyAccountConnected && !albyMe && !albyMeError) ) { return ; } const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); setLoading(true); try { if ( !albyMe?.subscription.plan_code && subwalletAppsData.totalCount >= MAX_FREE_SUBWALLETS ) { throw new Error( "Max limit reached. Please upgrade to Pro to create more sub-wallets." ); } const createAppRequest: CreateAppRequest = { name, scopes: [ "get_balance", "get_info", "list_transactions", "lookup_invoice", "make_invoice", "notifications", "pay_invoice", ], isolated: true, metadata: { app_store_app_id: SUBWALLET_APPSTORE_APP_ID, }, }; const createAppResponse = await createApp(createAppRequest); navigate("/sub-wallets/created", { state: createAppResponse, }); toast("New sub-wallet created for " + name); } catch (error) { handleRequestError("Failed to create app", error); } setLoading(false); }; return ( > } /> Sub-wallet name setName(e.target.value)} required autoComplete="off" /> Name your friend, family member or coworker Create Sub-wallet ); }
Name your friend, family member or coworker