@credenza3/passport-evm 0.3.16 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -8
- package/dist/{App-tKHSD4Kn.js → App-BtqXZ1xE.js} +18 -18
- package/dist/{App-tKHSD4Kn.js.map → App-BtqXZ1xE.js.map} +1 -1
- package/dist/{Button-DCiKyboZ.js → Button-BYqip4Js.js} +4 -4
- package/dist/{Button-DCiKyboZ.js.map → Button-BYqip4Js.js.map} +1 -1
- package/dist/{ButtonBack-l2pouuyt.js → ButtonBack-DkLjJD0s.js} +4 -4
- package/dist/{ButtonBack-l2pouuyt.js.map → ButtonBack-DkLjJD0s.js.map} +1 -1
- package/dist/{ButtonLink-CUjPS0bz.js → ButtonLink-_yLeX73P.js} +3 -3
- package/dist/{ButtonLink-CUjPS0bz.js.map → ButtonLink-_yLeX73P.js.map} +1 -1
- package/dist/{ConfirmAccount-BRg5PYpD.js → ConfirmAccount-CH5-0a7-.js} +9 -9
- package/dist/{ConfirmAccount-BRg5PYpD.js.map → ConfirmAccount-CH5-0a7-.js.map} +1 -1
- package/dist/{ContentHeader-CayTg8kM.js → ContentHeader-erdl7HI3.js} +3 -3
- package/dist/{ContentHeader-CayTg8kM.js.map → ContentHeader-erdl7HI3.js.map} +1 -1
- package/dist/{Error-Bpaw-9z0.js → Error-BQuyaXRN.js} +5 -5
- package/dist/{Error-Bpaw-9z0.js.map → Error-BQuyaXRN.js.map} +1 -1
- package/dist/{Input-C97TgXQB.js → Input-BuyGtqdy.js} +4 -4
- package/dist/{Input-C97TgXQB.js.map → Input-BuyGtqdy.js.map} +1 -1
- package/dist/{Label-Ds2N1teB.js → Label-Cv3WbQU2.js} +3 -3
- package/dist/{Label-Ds2N1teB.js.map → Label-Cv3WbQU2.js.map} +1 -1
- package/dist/{Loader-C-zgzLck.js → Loader-C5FXreU6.js} +3 -3
- package/dist/{Loader-C-zgzLck.js.map → Loader-C5FXreU6.js.map} +1 -1
- package/dist/{Login-C2d4VKkK.js → Login-D-O9JGfO.js} +9 -9
- package/dist/{Login-C2d4VKkK.js.map → Login-D-O9JGfO.js.map} +1 -1
- package/dist/{Logout-DvRWxjDS.js → Logout-C3zWvSiJ.js} +6 -6
- package/dist/{Logout-DvRWxjDS.js.map → Logout-C3zWvSiJ.js.map} +1 -1
- package/dist/{Nav-B97guiir.js → Nav-CQ5SHknn.js} +216 -217
- package/dist/{Nav-B97guiir.js.map → Nav-CQ5SHknn.js.map} +1 -1
- package/dist/{PassportId-C3ZQeGRX.js → PassportId-CO_PCyZ3.js} +6 -6
- package/dist/{PassportId-C3ZQeGRX.js.map → PassportId-CO_PCyZ3.js.map} +1 -1
- package/dist/{Payment-5Z6W2S2Z.js → Payment-CLkfv6eG.js} +212 -213
- package/dist/Payment-CLkfv6eG.js.map +1 -0
- package/dist/{PaymentResult-C81tCa8j.js → PaymentResult-C-4HPlhG.js} +4 -4
- package/dist/{PaymentResult-C81tCa8j.js.map → PaymentResult-C-4HPlhG.js.map} +1 -1
- package/dist/{Profile-D7zQzJwn.js → Profile-CTcyZPK1.js} +7 -7
- package/dist/{Profile-D7zQzJwn.js.map → Profile-CTcyZPK1.js.map} +1 -1
- package/dist/{ProgressVideo-b9Pq9OEy.js → ProgressVideo-BinhNiVf.js} +5 -5
- package/dist/{ProgressVideo-b9Pq9OEy.js.map → ProgressVideo-BinhNiVf.js.map} +1 -1
- package/dist/{RichAlert-D3-5Qi7t.js → RichAlert-CDWETMCT.js} +5 -5
- package/dist/{RichAlert-D3-5Qi7t.js.map → RichAlert-CDWETMCT.js.map} +1 -1
- package/dist/{Scanner-I4xN822J.js → Scanner-CrrR8MPk.js} +6 -6
- package/dist/{Scanner-I4xN822J.js.map → Scanner-CrrR8MPk.js.map} +1 -1
- package/dist/SendTokens-gP53gzEW.js +360 -0
- package/dist/SendTokens-gP53gzEW.js.map +1 -0
- package/dist/{Sign-uEMO_pgj.js → Sign-C5GPQsdv.js} +6 -6
- package/dist/{Sign-uEMO_pgj.js.map → Sign-C5GPQsdv.js.map} +1 -1
- package/dist/{Stripe.service-Dnkm5UnA.js → Stripe.service-Qmgd4nyp.js} +3 -3
- package/dist/{Stripe.service-Dnkm5UnA.js.map → Stripe.service-Qmgd4nyp.js.map} +1 -1
- package/dist/{UpdateProfile-BkzMoTSd.js → UpdateProfile-BzAZCLYQ.js} +10 -10
- package/dist/{UpdateProfile-BkzMoTSd.js.map → UpdateProfile-BzAZCLYQ.js.map} +1 -1
- package/dist/{UserInfo-DqEWseCA.js → UserInfo-CjCM8mcm.js} +4 -4
- package/dist/{UserInfo-DqEWseCA.js.map → UserInfo-CjCM8mcm.js.map} +1 -1
- package/dist/{Wallet-DVDaKNLv.js → Wallet-DvnyF4dQ.js} +7 -7
- package/dist/{Wallet-DVDaKNLv.js.map → Wallet-DvnyF4dQ.js.map} +1 -1
- package/dist/{each-CspjR91w.js → each-CjfYUvq_.js} +2 -2
- package/dist/{each-CspjR91w.js.map → each-CjfYUvq_.js.map} +1 -1
- package/dist/{html-COPb0vI7.js → html-CXNwf8yV.js} +3 -3
- package/dist/{html-COPb0vI7.js.map → html-CXNwf8yV.js.map} +1 -1
- package/dist/{index-CQrnbnoz.js → index-C9Qoc82Y.js} +3963 -3980
- package/dist/{index-CQrnbnoz.js.map → index-C9Qoc82Y.js.map} +1 -1
- package/dist/{index-client-DfEPCtKn.js → index-client-BaarVXQo.js} +2 -2
- package/dist/{index-client-DfEPCtKn.js.map → index-client-BaarVXQo.js.map} +1 -1
- package/dist/{input-Dy2lLICW.js → input-CXcz4D8_.js} +2 -2
- package/dist/{input-Dy2lLICW.js.map → input-CXcz4D8_.js.map} +1 -1
- package/dist/{legacy-Cs2YMqnj.js → legacy-CdJ9S7Uy.js} +2 -2
- package/dist/{legacy-Cs2YMqnj.js.map → legacy-CdJ9S7Uy.js.map} +1 -1
- package/dist/passport.es.js +1 -1
- package/dist/passport.umd.js +75 -75
- package/dist/passport.umd.js.map +1 -1
- package/dist/types/Passport.d.ts +1 -1
- package/dist/types/passport/auth.d.ts +1 -9
- package/package.json +1 -1
- package/dist/Payment-5Z6W2S2Z.js.map +0 -1
- package/dist/SendTokens-D-GXxLSW.js +0 -365
- package/dist/SendTokens-D-GXxLSW.js.map +0 -1
- package/dist/strings-B-rKL311.js +0 -5
- package/dist/strings-B-rKL311.js.map +0 -1
package/dist/types/Passport.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export declare class Passport implements AbstractPassport {
|
|
|
25
25
|
networkType: NetworkTypes.MAINNET | NetworkTypes.TESTNET;
|
|
26
26
|
constructor(opts: TPassportConstructor<TPassportEvmExtension>);
|
|
27
27
|
login: typeof passportAuth.login;
|
|
28
|
-
|
|
28
|
+
setAccessToken: typeof passportAuth.setAccessToken;
|
|
29
29
|
logout: typeof passportAuth.logout;
|
|
30
30
|
openUI: (page?: import('../../utils/types').TPage, pageOpts?: unknown) => Promise<void>;
|
|
31
31
|
close: () => void;
|
|
@@ -4,15 +4,7 @@ export declare function login(this: Passport, provider: AUTH_PROVIDERS, { forceE
|
|
|
4
4
|
forceEmail?: string;
|
|
5
5
|
forcePhone?: string;
|
|
6
6
|
}): Promise<void>;
|
|
7
|
-
export declare function
|
|
8
|
-
validatorId: string;
|
|
9
|
-
idToken: string;
|
|
10
|
-
accessToken?: never;
|
|
11
|
-
} | {
|
|
12
|
-
validatorId: string;
|
|
13
|
-
accessToken: string;
|
|
14
|
-
idToken?: never;
|
|
15
|
-
}): Promise<void>;
|
|
7
|
+
export declare function setAccessToken(this: Passport, accessToken: string): Promise<void>;
|
|
16
8
|
export declare function logout({ shouldRevokeSession }?: {
|
|
17
9
|
shouldRevokeSession?: boolean | undefined;
|
|
18
10
|
}): Promise<void>;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Payment-5Z6W2S2Z.js","sources":["../../ui/images/lock.svg","../../ui/main/payment/PaymentSwitchButton.svelte","../../ui/main/payment/Payment.svelte","../../ui/main/payment/Stripe.svelte","../../ui/main/payment/CredenzaBalance.svelte","../src/app/pages/payment/stripe/wallet-pay/WalletPay.svelte","../src/app/pages/payment/stripe/Stripe.styles.ts","../../utils/lib/scripts/scripts.ts","../../utils/lib/orders/index.ts","../src/app/pages/payment/Payment.service.ts","../src/app/pages/payment/stripe/Stripe.svelte","../src/app/pages/payment/credenza-balance/CredenzaBalance.svelte","../src/app/pages/payment/Payment.svelte"],"sourcesContent":["export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20width='22'%20height='22'%20viewBox='0%200%2024%2024'%3e%3cpath%20fill='%23bbb'%20d='M17%209.761v-4.761c0-2.761-2.238-5-5-5-2.763%200-5%202.239-5%205v4.761c-1.827%201.466-3%203.714-3%206.239%200%204.418%203.582%208%208%208s8-3.582%208-8c0-2.525-1.173-4.773-3-6.239zm-8-4.761c0-1.654%201.346-3%203-3s3%201.346%203%203v3.587c-.927-.376-1.938-.587-3-.587s-2.073.211-3%20.587v-3.587zm4%2011.723v2.277h-2v-2.277c-.596-.347-1-.984-1-1.723%200-1.104.896-2%202-2s2%20.896%202%202c0%20.738-.404%201.376-1%201.723z'/%3e%3c/svg%3e\"","<style>\n .active {\n background-color: #ffff;\n font-weight: 500;\n color: #000;\n }\n .btn-disabled {\n pointer-events: none;\n background-color: #d0d2d5;\n }\n</style>\n\n<script lang=\"ts\">\n import Loader from '../shared/Loader.svelte'\n \n export let onClick: (...args: unknown[]) => unknown\n export let text: string\n export let disabled: boolean = false\n export let isLoading: boolean = false\n export let isActive: boolean = false\n</script>\n\n<button\n type=\"submit\"\n class=\"crtw-flex crtw-justify-center crtw-items-center crtw-w-full crtw-h-[50px] crtw-cursor-pointer crtw-border crtw-border-gray-300\n crtw-rounded crtw-font-['poppins'] crtw-text-gray-600\"\n class:btn-disabled={disabled || isLoading}\n class:active={isActive}\n on:click|preventDefault={onClick}\n>\n {#if isLoading}\n <Loader />\n {:else}\n {text}\n {/if}\n</button>","<script lang=\"ts\">\n import { PaymentViews } from '../../../utils/enums';\n import ButtonBack from '../shared/inputs/button-back/ButtonBack.svelte';\n import LockIcon from '../../images/lock.svg'\n import type { TUser } from '../../../utils/types';\n import PaymentSwitchButton from './PaymentSwitchButton.svelte';\n\n export let isLoading: boolean\n export let options: {\n user: TUser| null\n title: string\n subtitle?: string\n onBackClick: () => void\n isCardDisabled: boolean\n isCredezaValueDisabled: boolean\n }\n \n let { user, title, subtitle, onBackClick, isCardDisabled } = options\n let activeTab = isCardDisabled ? PaymentViews.CREDENZA_BALANCE : PaymentViews.CREDIT_CARD\n\n $: isCredezaValueDisabled = options.isCredezaValueDisabled\n</script>\n\n<div class=\"cpui-payment crtw-text-left crtw-w-full\" class:crtw-hidden={isLoading}>\n <div class=\"crtw-text-right crtw-text-[13px] crtw-text-gray-400 crtw-mb-6\">\n <div class=\"crtw-break-words\">{user?.email || user?.pending?.email || ''}</div>\n <div>{user?.phone || user?.pending?.phone || ''}</div>\n </div>\n <div class=\"crtw-font-bold crtw-text-xl\">{title}</div>\n <div class=\"crtw-flex crtw-justify-between crtw-mb-3 crtw-text-gray-600 crtw-font-bold\">\n {#if subtitle}\n <div>{subtitle}</div>\n {/if}\n </div>\n <div class=\"crtw-flex crtw-bg-gray-200 crtw-rounded-md crtw-p-px\">\n <PaymentSwitchButton\n text=\"Credit Card\"\n onClick={() => (activeTab = PaymentViews.CREDIT_CARD)}\n isActive={activeTab === PaymentViews.CREDIT_CARD}\n disabled={isCardDisabled}\n />\n <PaymentSwitchButton\n text=\"Credenza Balance\"\n onClick={() => (activeTab = PaymentViews.CREDENZA_BALANCE)}\n isActive={activeTab === PaymentViews.CREDENZA_BALANCE}\n disabled={isCredezaValueDisabled}\n />\n </div>\n <hr class=\"crtw-block crtw-border-t-2 crtw-border-gray-200 crtw-w-1/2 crtw-mx-auto crtw-mt-3.5 crtw-mb-[15px]\" />\n {#if activeTab === PaymentViews.CREDIT_CARD}\n <slot name=\"card-provider-switch\" />\n <slot name=\"credit-card\" />\n {:else if activeTab === PaymentViews.CREDENZA_BALANCE}\n <slot name=\"cred-balance\" />\n {/if}\n <div class=\"crtw-flex crtw-w-full crtw-justify-center crtw-items-center\">\n <img src={LockIcon} alt=\"\" /><span class=\"crtw-text-sm crtw-text-gray-400 crtw-ml-1\"\n >Payments are secure and encrypted</span\n >\n </div>\n <div class=\"crtw-mt-1.5\">\n <ButtonBack onClick={onBackClick} />\n </div>\n</div>\n","<script lang=\"ts\">\n import Button from \"../shared/inputs/button/Button.svelte\";\n\n export let options: {\n isCardFocused: boolean\n onPay: () => void\n currencySymbol?: string\n }\n export let isPaymentDisabled: boolean\n export let isLoading: boolean\n export let totalToPay: string\n\n let { isCardFocused, onPay, currencySymbol = '$' } = options\n</script>\n\n<div class=\"crtw-text-base crtw-mb-1.5\">Credit card details</div>\n<div\n id=\"cpui-card-element\"\n class=\"crtw-border crtw-border-gray-300 crtw-rounded crtw-px-2.5 crtw-py-4 crtw-mb-2.5 crtw-w-full\"\n style={isCardFocused ? 'border-color: #121e2b' : ''}\n/>\n<!-- Used to display Element errors. -->\n<div id=\"card-errors\" role=\"alert\" />\n<Button\n text={`Pay ${currencySymbol}${totalToPay}`}\n onClick={onPay}\n disabled={isPaymentDisabled}\n bind:isLoading\n/>","<script lang=\"ts\">\n import Button from \"../shared/inputs/button/Button.svelte\";\n\n export let options: {\n formattedBalance: string\n balance: number\n credAlias: string\n onPay: () => void\n onGetCred: () => void\n totalToPay: string\n isLoading: boolean\n isPaymentDisabled: boolean\n }\n\n let { credAlias, onPay, onGetCred } = options\n\n $: isLoading = options.isLoading\n $: isPaymentDisabled = options.isPaymentDisabled\n $: formattedBalance = options.formattedBalance\n $: totalToPay = options.totalToPay\n $: balance = options.balance\n</script>\n\n<div class=\"crtw-w-full crtw-text-center crtw-my-5\">\n <div class=\"crtw-text-3xl crtw-text-black crtw-font-bold\">\n {#if Number(totalToPay) > balance}\n INSUFFICIENT FUNDS\n {:else}\n {formattedBalance}\n {/if}\n \n </div>\n <div class=\"crtw-mb-5 crtw-text-gray-600\">\n {#if Number(totalToPay) > balance}\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n You do not have enough stored value to make this payment. \n <span\n class=\"crtw-text-black crtw-cursor-pointer\"\n role=\"button\"\n tabindex=\"0\"\n on:click={onGetCred}\n >\n Click to get some {credAlias}\n </span>\n {:else}\n Your balance after purchase\n {/if}\n </div>\n\n <Button\n text={`Pay ${totalToPay} ${credAlias}`}\n onClick={onPay}\n disabled={isPaymentDisabled}\n {isLoading}\n />\n</div>","<script lang=\"ts\">\n import { onMount } from 'svelte'\n import { dispatch, PassportEvents } from '@lib/events/events'\n\n export let doPayment: (stripeTokenId: string) => Promise<void>\n export let stripe: Window['Stripe']\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export let stripeElements: any\n export let priceCents: number\n export let isLoading: boolean\n\n onMount(async () => {\n const paymentRequest = stripe.paymentRequest({\n country: 'US',\n currency: 'usd',\n total: {\n label: 'Apple/Google payment',\n amount: priceCents,\n },\n requestPayerName: true,\n requestPayerEmail: true,\n })\n const canMakePayment = await paymentRequest.canMakePayment()\n if (!canMakePayment) return\n\n const walletPayElement = document.getElementById('ctui-wallet-pay')\n if (walletPayElement) walletPayElement.style.display = 'crtw-block'\n\n const prButton = stripeElements.create('paymentRequestButton', {\n paymentRequest: paymentRequest,\n style: {\n paymentRequestButton: {\n height: '48px',\n },\n },\n })\n prButton.mount('#ctui-payment-request-button')\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n paymentRequest.on('token', async (event: any) => {\n isLoading = true\n try {\n await doPayment(event.token.id)\n await event.complete('success')\n } catch (err) {\n await event.complete('error')\n dispatch(PassportEvents.ERROR, { error: err })\n }\n isLoading = false\n })\n })\n</script>\n\n<div id=\"ctui-wallet-pay\" class=\"crtw-w-full crtw-my-4\" style=\"dispay: none;\">\n <div id=\"ctui-payment-request-button\"></div>\n</div>\n","export const stripeStyles = {\n base: {\n color: '#121e2b',\n fontSize: '12px',\n '::placeholder': {\n color: '#d9d9d9',\n },\n },\n invalid: {\n color: '#fa755a',\n },\n}\n","export const loadScript = (src: string) => {\n return new Promise((resolve, reject) => {\n const script = document.createElement('script')\n script.src = src\n document.body.appendChild(script)\n script.addEventListener('load', () => resolve(script))\n script.addEventListener('error', () => reject(script))\n })\n}\n","import { get } from \"svelte/store\";\nimport { accessTokenStore } from \"../../../stores\";\nimport type { TPaymentReturn } from \"@packages/utils/types\";\n\nexport const getOrderDetails = async (apiUrl: string, orderId: string): Promise<TPaymentReturn> => {\n const res = await fetch(`${apiUrl}/orders/${orderId}`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${get(accessTokenStore)}`,\n },\n method: \"GET\",\n });\n if (!res.ok) throw new Error(\"Failed to get order details\");\n return await res.json();\n}\nexport const getCompmletedOrderDetails = async (\n apiUrl: string,\n orderId: string,\n maxRetries = 5\n) => {\n let attempts = 0;\n\n while (attempts < maxRetries) {\n const res = await fetch(`${apiUrl}/orders/completed/${orderId}`, {\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${get(accessTokenStore)}`,\n },\n method: \"GET\",\n });\n\n if (res.status === 204) {\n attempts++;\n if (attempts < maxRetries) {\n continue;\n } else {\n throw new Error(\"No content received after multiple attempts\");\n }\n }\n\n if (!res.ok) throw new Error(\"Failed to get order details\");\n return await res.json();\n }\n};\n\n\nexport const validateTxs = (txs: string[] | null[], message: string) => {\n if (txs.every((item) => item === null)) {\n throw new Error(`All transactions failed. \\n${message}`);\n }\n}\n\nexport const validateOrderItems = (\n orders: TPaymentReturn[\"items\"],\n): string => {\n const errorMessages = orders\n .filter((item) => item.error)\n .map(\n (item) =>\n `Name: ${item.metadata?.name || item.directive.resource_id}, reason: ${item.error}`\n )\n .join(\"\\n\");\n if (orders?.every(item => item.status === \"ERROR\")) {\n throw new Error(`All transactions failed.}`);\n }\n return errorMessages;\n};\n","import { get } from 'svelte/store'\nimport { accessTokenStore, fn } from '@packages/stores'\nimport { ReceiptTarget } from '@packages/utils/enums'\nimport { configStore } from '@src/stores/config'\nimport { getClientConfigByClientId } from '@lib/clients'\nimport type { TLicensePaymentData, TMembershipPaymentData, TTokenPaymentData } from './oders.types'\nimport { dispatch, PassportEvents } from '@lib/events/events'\nimport { TransactionTypes } from '@packages/utils/enums'\nimport { pageOptsStore, pageStore, userStore } from '@packages/stores'\nimport { Pages } from '@packages/utils/enums'\nimport { analytics } from '@lib/mixpanel/mixpanel'\nimport { waitVideoEnded } from '@components/progress/ProgressVideo.service'\nimport { getAddress } from '@src/passport/blockchain'\nimport { validateOrderItems, validateTxs } from '@lib/orders'\nimport type { TPaymentReturn } from '@packages/utils/types'\n\n\nexport const requestReceipt = async ({\n hash,\n stripeChargeId,\n title,\n subtitle,\n amount,\n currency,\n}: {\n hash?: string\n stripeChargeId?: string\n title?: string\n subtitle?: string\n amount?: number\n currency?: string\n}) => {\n const { credenza, receiptTarget, clientId } = get(configStore)\n\n const targets = !receiptTarget \n ? [ReceiptTarget.EMAIL]\n : receiptTarget.filter(target => {\n const user = get(userStore);\n if(!user) return;\n return user[target]\n }\n );\n let successCount = 0;\n \n for (const target of targets) {\n const result = await fetch(`${credenza.evmApiUrl}/contracts/receipt`, {\n method: 'POST',\n body: JSON.stringify({\n ...(hash ? { tx: hash } : { charge_id: stripeChargeId }),\n ...(amount ? { amount } : {}),\n ...(currency ? { currency } : {}),\n target,\n title,\n subtitle,\n source: getClientConfigByClientId(clientId).name,\n }),\n headers: {\n Authorization: `Bearer ${get(accessTokenStore)}`,\n 'Content-Type': 'application/json',\n },\n })\n\n if (result.ok) {\n successCount++;\n } else {\n console.warn(`Failed to send receipt to ${target}:`, result.status)\n }\n }\n\n return successCount > 0\n}\n\nexport const afterPaymentProcess = async (res: TPaymentReturn, priceCents: number, purchaseConfig: {\n title: string\n subtitle: string\n tokens: TTokenPaymentData[]\n memberships: TMembershipPaymentData[]\n licenses: TLicensePaymentData[]\n}) => {\n const { toastAlert } = get(fn)\n const config = get(configStore)\n\n const failedOrdersMessage = validateOrderItems(res.items)\n if (!!purchaseConfig.tokens?.length || !!purchaseConfig.memberships?.length) validateTxs(res.chain_txs, failedOrdersMessage)\n \n dispatch(PassportEvents.PAYMENT, {\n type: TransactionTypes.CARD,\n results: { ...res, tokens: purchaseConfig.tokens, memberships: purchaseConfig.memberships, licenses: purchaseConfig.licenses },\n })\n toastAlert('Your payment was successful')\n dispatch(PassportEvents.RECHECK_BALANCE, res.chain_txs)\n\n const user = get(userStore)\n if (user) {\n analytics.track('cp_payment_fiat', {\n $email: user.email,\n $phone: user.phone,\n chain: config.chainId,\n clientId: config.clientId,\n address: await getAddress(),\n location: window.location.href,\n tokens: purchaseConfig?.tokens,\n memberships: purchaseConfig?.memberships,\n licenses: purchaseConfig?.licenses,\n total: priceCents / 100,\n description: (purchaseConfig?.title ?? '') + `(${purchaseConfig?.subtitle ?? ''})`,\n })\n }\n\n await waitVideoEnded()\n\n if (priceCents === 0) pageOptsStore.set({ subtitle: 'Your claim was successful!', receipt: false })\n\n if (failedOrdersMessage) {\n pageOptsStore.set({\n title: 'Done!',\n subtitle: 'Your payment was partly successful',\n orders: res.items,\n })\n }\n pageStore.set(Pages.PAYMENT_RESULT)\n}","<script lang=\"ts\">\n import WalletPay from './wallet-pay/WalletPay.svelte'\n import { onMount } from 'svelte'\n import { get } from 'svelte/store'\n import { stripeStyles } from '@pages/payment/stripe/Stripe.styles'\n import { dispatch, PassportEvents } from '@lib/events/events'\n import { loadScript } from '@lib/scripts/scripts'\n import { pageOptsStore, pageStore, fn } from '@packages/stores'\n import { Pages } from '@packages/utils/enums'\n import { Stripe as StripeComponent } from '@packages/ui'\n import { configStore } from '@src/stores/config'\n import { getClientConfigByClientId } from '@lib/clients'\n import { afterPaymentProcess } from '../Payment.service'\n import type { TLicensePaymentData, TMembershipPaymentData, TTokenPaymentData } from '../oders.types'\n\n export let priceCents: number\n export let isLoading: boolean\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export let purchaseConfig: {\n title: string\n subtitle: string\n tokens: TTokenPaymentData[]\n memberships: TMembershipPaymentData[]\n licenses: TLicensePaymentData[]\n }\n export let isPriceLoading: boolean\n\n const { toastAlert } = get(fn)\n const config = get(configStore)\n\n let Stripe: Window['Stripe']\n let stripe: Window['Stripe']\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let stripeElements: any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let cardElement: any\n let isButtonActive: boolean\n\n let isCardFocused = false\n onMount(async () => {\n try {\n if (!Stripe) {\n if (!window.Stripe) {\n await loadScript('https://js.stripe.com/v3/')\n if (!window.Stripe) throw {}\n }\n Stripe = window.Stripe\n }\n } catch (err) {\n return console.log('Please include stripe to use payments.')\n }\n if (stripe) return\n\n const clientName = getClientConfigByClientId(config.clientId).name\n stripe = Stripe(config.stripe.pk[clientName] ?? config.stripe.pk.DEFAULT)\n stripeElements = stripe.elements()\n cardElement = stripeElements.create('card', { style: stripeStyles })\n cardElement.mount('#cpui-card-element')\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n cardElement.on('change', (event: any) => {\n isButtonActive = event.complete && !event.error\n })\n cardElement.on('focus', () => (isCardFocused = true))\n cardElement.on('blur', () => (isCardFocused = false))\n })\n\n const handleSubmit = async () => {\n try {\n if (!isButtonActive) return\n isLoading = true\n const result = await stripe.createToken(cardElement)\n if (result.error) throw result.error\n await doPayment(result.token.id)\n } catch (err) {\n dispatch(PassportEvents.ERROR, { error: err })\n }\n isLoading = false\n }\n\n const doPayment = async (tokenId: string) => {\n try {\n const { processPayment } = await import('@pages/payment/stripe/Stripe.service')\n\n const res = await processPayment(tokenId)\n await afterPaymentProcess(res, priceCents, purchaseConfig)\n } catch (err) {\n toastAlert(`Payment error: ${err.message || err}`, 'failure')\n pageOptsStore.set({ errorMessage: err.message || err })\n pageStore.set(Pages.ERROR)\n dispatch(PassportEvents.ERROR, { error: err })\n }\n }\n\n $: isPaymentDisabled = !isButtonActive || isLoading || isPriceLoading\n $: totalToPay = (priceCents / 100).toFixed(2)\n</script>\n\n<StripeComponent\n bind:isPaymentDisabled\n bind:isLoading\n bind:totalToPay\n options={{\n isCardFocused,\n onPay: handleSubmit,\n }}\n/>\n\n{#if stripe && stripeElements}\n <WalletPay {doPayment} {stripe} {stripeElements} {priceCents} bind:isLoading />\n{/if}\n","<script lang=\"ts\">\n import { ethers } from '@credenza3/core-web-evm-ext'\n import { get } from 'svelte/store'\n import { onMount } from 'svelte'\n import { Pages } from '@packages/utils/enums'\n import { clientPublicStore, fn, pageOptsStore, pageStore, userStore } from '@packages/stores'\n import { dispatch, PassportEvents } from '@lib/events/events'\n import { TransactionTypes } from '@packages/utils/enums'\n import { sendContractTx, getTxScanAddress } from '@src/lib/tx/tx'\n import { requestReceipt } from '@pages/payment/Payment.service'\n import { analytics } from '@lib/mixpanel/mixpanel'\n import { waitVideoEnded } from '@components/progress/ProgressVideo.service'\n import { type TEvmContract, type TPaymentItem } from '@packages/utils/types'\n import { getCryptoCurrencySymbol } from '@lib/strings/strings'\n import { CredenzaBalance } from '@packages/ui'\n import { getAddress } from '@src/passport/blockchain'\n import { configStore, providerStore } from '@src/stores'\n import Loader from '@packages/ui/main/shared/Loader.svelte'\n import { abi as license_abi } from '@credenza3/contracts/artifacts/LicenseNftContract.json'\n\n export let totalPriceToken: number\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n export let purchaseConfig: any\n export let isLoading: boolean\n export let isPriceLoading: boolean\n export let pricesByToken: { [key: string]: number }\n\n const { getCREDContract, toastAlert } = get(fn)\n const { chainId, clientId } = get(configStore)\n\n let isBalanceLoading: boolean = false\n let balance: bigint = BigInt(0)\n let formattedBalance: string\n let symbol: string = ''\n let contract: ethers.Contract\n let decimals: number\n let userAddress: string\n let signer: ethers.Signer\n let credContract: {\n address: string\n decimals: number\n contract: ethers.Contract\n }\n\n const afterPayment = async (index: number, result: ethers.TransactionResponse, priceToken: number) => {\n toastAlert(`<a href=\"${getTxScanAddress(result.hash)}\" target=\"_blank\">Purchase TX #${index}</a> was created`)\n dispatch(PassportEvents.PAYMENT, { type: TransactionTypes.ERC20, data: result })\n dispatch(PassportEvents.RECHECK_BALANCE)\n\n await requestReceipt({\n hash: result.hash,\n title: purchaseConfig.title,\n subtitle: purchaseConfig.subtitle,\n currency: 'CRED',\n amount: +ethers.formatUnits(priceToken, decimals),\n })\n dispatch(PassportEvents.RECEIPT, { hash: result.hash })\n }\n\n const processPaymentItem = async (item: TPaymentItem, index: number) => {\n try {\n const { credenzaSellableMinAbi } = await import('@src/lib/abi')\n const credenzaSellableContract = new ethers.Contract(item.contractAddress, credenzaSellableMinAbi, signer)\n const tokenOrTypeId = item.tokenId ? item.tokenId : (item.typeId as string)\n const priceToken = pricesByToken[`${item.contractAddress}/${tokenOrTypeId}`]\n\n const approveTx = await contract.approve.populateTransaction(\n await credenzaSellableContract.getAddress(),\n priceToken,\n )\n\n await sendContractTx(approveTx, contract)\n const buyTx = await credenzaSellableContract.buyWithToken.populateTransaction(\n tokenOrTypeId,\n item.amount || 1,\n userAddress,\n )\n\n const result = await sendContractTx(buyTx, credenzaSellableContract)\n\n await afterPayment(index, result, priceToken)\n } catch (err) {\n toastAlert(`Payment error: ${err.message || err}`, 'failure')\n pageOptsStore.set({ errorMessage: err.message })\n pageStore.set(Pages.ERROR)\n dispatch(PassportEvents.ERROR, { error: err })\n }\n }\n\n const processLicensePaymentItem = async (item: TPaymentItem, index: number) => {\n if (!item.licenseContractAddress) return\n\n try {\n const licenseContract = new ethers.Contract(item.licenseContractAddress, license_abi, signer)\n const priceToken = pricesByToken[`${item.contractAddress}/${item.contentTokenId}`]\n\n const approveTx = await contract.approve.populateTransaction(\n await licenseContract.getAddress(),\n priceToken,\n )\n\n await sendContractTx(approveTx, contract)\n await new Promise(resolve => setTimeout(resolve, 3000)); // pause for debugging\n\n const buyLicenseWithTokenFunction = licenseContract.interface.getFunction('buyLicenseWithToken', ['uint', 'address', 'uint']);\n if (!buyLicenseWithTokenFunction) throw new Error('buyLicenseWithToken function not found');\n const buyTx =await licenseContract[\n buyLicenseWithTokenFunction.format()\n ].populateTransaction(\n item.contentTokenId,\n userAddress,\n item.licenseType\n )\n\n const result = await sendContractTx(buyTx, licenseContract)\n await afterPayment(index, result, priceToken)\n } catch (err) {\n toastAlert(`Payment error: ${err.message || err}`, 'failure')\n pageOptsStore.set({ errorMessage: err.message })\n pageStore.set(Pages.ERROR)\n dispatch(PassportEvents.ERROR, { error: err })\n }\n }\n\n const payWithCredenza = async () => {\n try {\n if (BigInt(totalPriceToken) > balance) return\n\n isLoading = true\n const tokensAndMembershipsPaymentPromises = [...(purchaseConfig.tokens || []), ...(purchaseConfig.memberships || [])].map(\n (item, index) => processPaymentItem(item, index + 1),\n )\n\n const licensesPaymentPromises = [...(purchaseConfig.licenses || [])].map(\n (item, index) => processLicensePaymentItem(item, index + 1),\n )\n\n await Promise.all([...tokensAndMembershipsPaymentPromises, ...licensesPaymentPromises])\n\n const user = get(userStore)\n if (user) {\n analytics.track('cp_payment_stored_value', {\n $email: user.email,\n $phone: user.phone,\n chain: chainId,\n clientId,\n address: userAddress,\n location: window.location.href,\n tokens: purchaseConfig.tokens,\n memberships: purchaseConfig.memberships,\n total: totalPriceToken,\n description: (purchaseConfig?.title ?? '') + `(${purchaseConfig?.subtitle ?? ''})`,\n })\n }\n\n await waitVideoEnded()\n\n if (totalPriceToken === 0) pageOptsStore.set({ subtitle: 'Your claim was successful!', receipt: false })\n pageStore.set(Pages.PAYMENT_RESULT)\n } catch (err) {\n toastAlert(`Payment error: ${err.message || err}`, 'failure')\n pageOptsStore.set({ errorMessage: err.message })\n pageStore.set(Pages.ERROR)\n dispatch(PassportEvents.ERROR, { error: err })\n } finally {\n isLoading = false\n }\n }\n\n onMount(async () => {\n try {\n isBalanceLoading = true\n credContract = (await getCREDContract()) as TEvmContract\n\n const provider = get(providerStore)\n if(!provider) return\n signer = await provider.getSigner()\n contract = credContract.contract\n decimals = credContract.decimals\n ;[userAddress, symbol] = await Promise.all([getAddress(), contract.symbol()])\n balance = await contract.balanceOf(userAddress)\n\n formattedBalance = `${ethers.formatUnits(BigInt(balance) - BigInt(totalPriceToken), decimals)} ${getCryptoCurrencySymbol(symbol, 'cred')}`\n } catch (err) {\n console.log(err)\n } finally {\n isBalanceLoading = false\n }\n })\n</script>\n\n{#if isBalanceLoading}\n <div class=\"crtw-w-full crtw-justify-items-center crtw-my-5\">\n <Loader />\n </div>\n{:else}\n <CredenzaBalance\n options={{\n formattedBalance,\n balance: Number((+ethers.formatUnits(BigInt(balance), decimals)).toFixed(2)),\n credAlias: $clientPublicStore?.ui_settings.cred_alias,\n onPay: payWithCredenza,\n onGetCred: () => pageStore.set(Pages.WALLET),\n totalToPay: (+ethers.formatUnits(totalPriceToken, decimals)).toFixed(2),\n isLoading,\n isPaymentDisabled: !Number(balance) || BigInt(totalPriceToken) > balance || isPriceLoading,\n }}\n />\n{/if}\n","<script lang=\"ts\">\n import { Pages } from '@packages/utils/enums'\n import { onDestroy } from 'svelte'\n import { get } from 'svelte/store'\n import { ethers } from '@credenza3/core-web-evm-ext'\n\n import { pageOptsStore, userStore, pageStore, fn } from '@packages/stores'\n import { DEFAULT_TOKEN_ID } from '@packages/utils/constants'\n import { dispatch, PassportEvents } from '@lib/events/events'\n import type { TPaymentItem } from '@packages/utils/types'\n import { Payment } from '@packages/ui'\n import Stripe from './stripe/Stripe.svelte'\n import CredenzaBalance from './credenza-balance/CredenzaBalance.svelte'\n import { configStore, providerStore, contractsStore } from '@src/stores'\n import { abi as content_abi } from '@credenza3/contracts/artifacts/ContentNftContract.json'\n\n const { close } = get(fn)\n const chainId = get(configStore).chainId\n\n $: if ($configStore.chainId !== chainId) close()\n\n let totalSumCents: number = 0\n let totalSumToken: number = 0\n let isPriceLoading: boolean = false\n let isLoading: boolean = false\n\n let pricesByToken: { [key: string]: number } = {}\n\n const getTokenPrice = async (contractAddress: string, tokenId: number, licenseType?: string): Promise<[number, number]> => {\n let priceCents = 0\n let priceToken = 0\n if (licenseType) {\n const contract = new ethers.Contract(contractAddress, content_abi, $providerStore)\n priceCents = await contract.getLicensePriceFiat(String(tokenId), licenseType).then((result) => Number(result))\n priceToken = await contract.getLicensePriceToken(String(tokenId), licenseType).then((result) => Number(result))\n return [priceCents, priceToken]\n }\n \n const { credenzaSellableMinAbi } = await import('@src/lib/abi')\n const sellableContract = new ethers.Contract(contractAddress, credenzaSellableMinAbi, $providerStore)\n priceCents = await sellableContract.getPriceFiat(tokenId).then((result) => Number(result))\n priceToken = 0\n\n if (priceCents === 0) {\n ;[priceCents, priceToken] = await Promise.all([\n sellableContract.getPriceFiat(DEFAULT_TOKEN_ID).then((result) => Number(result)),\n sellableContract.getPriceToken(DEFAULT_TOKEN_ID).then((result) => Number(result)),\n ])\n } else {\n priceToken = await sellableContract.getPriceToken(tokenId).then((result) => Number(result))\n }\n\n return [priceCents, priceToken]\n }\n\n const calculateTotalPrice = async (items: TPaymentItem[]): Promise<void> => {\n try {\n isPriceLoading = true\n for (const token of items) {\n if (token.contractAddress === $contractsStore.erc20Cred.address) {\n totalSumCents += token.amount * 100\n } else {\n \n const tokenId = token.tokenId || (token.typeId as string) || (token.contentTokenId as string) || DEFAULT_TOKEN_ID\n\n let [priceCents, priceToken] = await getTokenPrice(token.contractAddress, +tokenId, token.licenseType)\n\n if (token?.amount && token?.amount !== 0) {\n priceCents *= token.amount\n priceToken *= token.amount\n }\n\n totalSumCents += priceCents\n totalSumToken += priceToken\n\n pricesByToken[`${token.contractAddress}/${tokenId}`] = priceToken\n console.log(pricesByToken, totalSumToken)\n }\n }\n } catch (err) {\n dispatch(PassportEvents.ERROR, err)\n } finally {\n isPriceLoading = false\n }\n }\n\n const unsub = pageOptsStore.subscribe(async (store) => {\n if (!store?.tokens?.length && !store?.memberships?.length && !store?.licenses?.length) return\n\n await calculateTotalPrice([...(store?.tokens || []), ...(store?.memberships || []), ...(store?.licenses || [])])\n })\n\n onDestroy(unsub)\n</script>\n\n{#if isLoading}\n {#await import('@components/progress/ProgressVideo.svelte') then module}\n <svelte:component this={module.default} />\n {/await}\n{/if}\n\n<Payment\n bind:isLoading\n options={{\n user: $userStore,\n title: $pageOptsStore.title || `Order Summary`,\n subtitle: $pageOptsStore.subtitle,\n onBackClick: () => pageStore.set(Pages.WALLET),\n isCardDisabled: $pageOptsStore.payments?.card?.disabled,\n isCredezaValueDisabled: !totalSumCents || $pageOptsStore.payments?.credenzaStoredValue?.disabled\n }}\n>\n <div slot=\"credit-card\">\n <Stripe priceCents={totalSumCents} {isPriceLoading} purchaseConfig={$pageOptsStore} bind:isLoading />\n </div>\n <div slot=\"cred-balance\">\n <CredenzaBalance\n {pricesByToken}\n totalPriceToken={totalSumToken}\n {isPriceLoading}\n purchaseConfig={$pageOptsStore}\n bind:isLoading\n />\n </div>\n</Payment>\n"],"names":["LockIcon","onClick","$.prop","$$props","text","disabled","isLoading","$$render","consequent","alternate","isActive","$$args","options","user","title","subtitle","onBackClick","isCardDisabled","activeTab","PaymentViews","isCredezaValueDisabled","isPaymentDisabled","totalToPay","isCardFocused","onPay","currencySymbol","credAlias","onGetCred","formattedBalance","balance","$.get","__awaiter","thisArg","_arguments","P","generator","onMount","stripe","priceCents","paymentRequest","walletPayElement","stripeElements","event","doPayment","err","dispatch","PassportEvents","stripeStyles","loadScript","src","resolve","reject","script","getCompmletedOrderDetails","apiUrl","orderId","maxRetries","attempts","res","get","accessTokenStore","validateTxs","txs","message","item","validateOrderItems","orders","errorMessages","requestReceipt","hash","stripeChargeId","amount","currency","credenza","receiptTarget","clientId","configStore","targets","target","userStore","ReceiptTarget","successCount","result","getClientConfigByClientId","afterPaymentProcess","purchaseConfig","toastAlert","fn","config","failedOrdersMessage","TransactionTypes","analytics","getAddress","waitVideoEnded","pageOptsStore","pageStore","Pages","isPriceLoading","Stripe","$.mutable_source","cardElement","clientName","$.set","_a","isButtonActive","handleSubmit","tokenId","processPayment","pricesByToken","isBalanceLoading","symbol","contract","decimals","userAddress","signer","credContract","afterPayment","index","priceToken","getTxScanAddress","ethers","processPaymentItem","credenzaSellableMinAbi","credenzaSellableContract","tokenOrTypeId","approveTx","sendContractTx","buyTx","processLicensePaymentItem","licenseContract","license_abi","buyLicenseWithTokenFunction","payWithCredenza","totalPriceToken","tokensAndMembershipsPaymentPromises","licensesPaymentPromises","chainId","_b","getCREDContract","provider","providerStore","close","totalSumCents","totalSumToken","getTokenPrice","contractAddress","licenseType","content_abi","$providerStore","sellableContract","DEFAULT_TOKEN_ID","calculateTotalPrice","items","token","$contractsStore","unsub","store","_c","onDestroy","$configStore","$.await","node_1","module","$pageOptsStore"],"mappings":"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"}
|
|
@@ -1,365 +0,0 @@
|
|
|
1
|
-
import { c as $e, p as ue, h as Be, f as ce, i as se, k as Me, r as me, s as Ve, e as je, b as ee, d as Te, u as Re, t as Fe, o as fe, n as ze } from "./legacy-Cs2YMqnj.js";
|
|
2
|
-
import { z as Ee, v as g, I as n, m as s, A as y, J as e, w as Ie, x as Xe, Z as J, E as m, B as _, C as b, D as pe, G as oe, y as De, u as ge, N as ie, M as Se, Q as qe, a3 as G, a1 as Ce, R as Ge, a2 as Je, T as he, V as Ae, a5 as Ke, bg as Qe, O as xe, P as we, bh as We, bi as Ye } from "./index-CQrnbnoz.js";
|
|
3
|
-
import "./scanner.es-DK9KxX60.js";
|
|
4
|
-
import { C as Ze } from "./ContentHeader-CayTg8kM.js";
|
|
5
|
-
import { B as et } from "./ButtonBack-l2pouuyt.js";
|
|
6
|
-
import { B as _e } from "./Button-DCiKyboZ.js";
|
|
7
|
-
import { I as ke } from "./Input-C97TgXQB.js";
|
|
8
|
-
import { S as tt } from "./scanner-Bm3Pvpfs.js";
|
|
9
|
-
import { g as be } from "./strings-B-rKL311.js";
|
|
10
|
-
var nt = ce('<div>ChainId: <span class="crtw-font-bold"> </span></div>'), rt = ce('<label class="crtw-text-[10px] crtw-text-warningTextColor cpui-send-tokens-validation-message" for="recipientAddress">Provided address is not valid.</label>'), at = ce('<div class="crtw-ml-2.5 crtw-w-16 crtw-min-w-16"><!></div>'), st = ce('<!> <div class="crtw-w-full crtw-p-0 crtw-relative"><div id="cpuiCredScanner"></div> <!> <div>Your balance: <span class="crtw-font-bold"><!> </span></div> <div class="crtw-mb-2.5 crtw-flex crtw-items-start crtw-justify-between crtw-w-full"><div class="crtw-flex crtw-flex-col crtw-w-full"><!> <!></div> <div class="crtw-ml-2.5 crtw-cursor-pointer"><img width="53px" alt="" class="crtw-h-[53px]"/></div></div> <div class="crtw-mb-2.5 crtw-flex crtw-items-start crtw-justify-between crtw-w-full"><!> <div class="crtw-ml-2.5 crtw-w-16 crtw-min-w-16"><!></div> <!></div> <!></div> <div class="crtw-mt-0.5 crtw-mb-3 crtw-w-full"><!></div>', 1);
|
|
11
|
-
function Le(K, E) {
|
|
12
|
-
if (new.target) return $e({ component: Le, ...K });
|
|
13
|
-
Ee(E, !1);
|
|
14
|
-
const I = s(), te = s(), U = s(), Q = s(), H = s(), h = s(), N = s(), M = s(), j = s(), F = s();
|
|
15
|
-
let V = ue(E, "recipientAddress", 12), D = ue(E, "amount", 12), a = ue(E, "options", 12), {
|
|
16
|
-
onChangeCurrency: A,
|
|
17
|
-
onSetMaxAmount: l,
|
|
18
|
-
onBackClicked: f,
|
|
19
|
-
onSendTokens: z,
|
|
20
|
-
title: w,
|
|
21
|
-
chainId: x,
|
|
22
|
-
onScannerClicked: X,
|
|
23
|
-
credAlias: T,
|
|
24
|
-
isNativeCurrecyTransferAllowed: k = !0
|
|
25
|
-
} = a();
|
|
26
|
-
const L = (t) => Math.floor(t * 100) / 100;
|
|
27
|
-
g(() => y(a()), () => {
|
|
28
|
-
n(I, a().balance);
|
|
29
|
-
}), g(() => y(a()), () => {
|
|
30
|
-
n(te, a().isLoading);
|
|
31
|
-
}), g(() => y(a()), () => {
|
|
32
|
-
n(U, a().isSubmitDisabled);
|
|
33
|
-
}), g(() => y(a()), () => {
|
|
34
|
-
n(Q, a().isRecipientAddressValid);
|
|
35
|
-
}), g(() => y(a()), () => {
|
|
36
|
-
n(H, a().isScannerHidden);
|
|
37
|
-
}), g(() => y(a()), () => {
|
|
38
|
-
n(h, a().activeCurrency);
|
|
39
|
-
}), g(() => y(a()), () => {
|
|
40
|
-
n(N, a().symbol);
|
|
41
|
-
}), g(() => y(a()), () => {
|
|
42
|
-
n(M, a().nativeSymbol);
|
|
43
|
-
}), g(() => y(a()), () => {
|
|
44
|
-
n(j, a().nativeBalance);
|
|
45
|
-
}), g(() => e(h), () => {
|
|
46
|
-
n(F, be(e(h), T));
|
|
47
|
-
}), Ie(), Be();
|
|
48
|
-
var R = st(), P = Xe(R);
|
|
49
|
-
{
|
|
50
|
-
let t = J(() => e(H) ? "" : "Scan Passport Id");
|
|
51
|
-
Ze(P, {
|
|
52
|
-
get text() {
|
|
53
|
-
return w;
|
|
54
|
-
},
|
|
55
|
-
get description() {
|
|
56
|
-
return e(t);
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
var q = m(P, 2), $ = _(q);
|
|
61
|
-
let ne;
|
|
62
|
-
var re = m($, 2);
|
|
63
|
-
{
|
|
64
|
-
var de = (t) => {
|
|
65
|
-
var o = nt(), O = m(_(o)), ve = _(O, !0);
|
|
66
|
-
b(O), b(o), pe(() => me(ve, x)), ee(t, o);
|
|
67
|
-
};
|
|
68
|
-
se(re, (t) => {
|
|
69
|
-
x && t(de);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
var W = m(re, 2), i = m(_(W)), r = _(i);
|
|
73
|
-
{
|
|
74
|
-
var c = (t) => {
|
|
75
|
-
var o = Fe();
|
|
76
|
-
pe((O) => me(o, `${O ?? ""} ${e(M) ?? ""} /`), [
|
|
77
|
-
() => (e(j), oe(() => L(+e(j))))
|
|
78
|
-
]), ee(t, o);
|
|
79
|
-
};
|
|
80
|
-
se(r, (t) => {
|
|
81
|
-
k && t(c);
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
var v = m(r);
|
|
85
|
-
b(i), b(W);
|
|
86
|
-
var S = m(W, 2), p = _(S), u = _(p);
|
|
87
|
-
ke(u, {
|
|
88
|
-
name: "recipientAddress",
|
|
89
|
-
type: "text",
|
|
90
|
-
placeholder: "Address 0x...",
|
|
91
|
-
get value() {
|
|
92
|
-
return V();
|
|
93
|
-
},
|
|
94
|
-
set value(t) {
|
|
95
|
-
V(t);
|
|
96
|
-
},
|
|
97
|
-
$$legacy: !0
|
|
98
|
-
});
|
|
99
|
-
var Y = m(u, 2);
|
|
100
|
-
{
|
|
101
|
-
var Z = (t) => {
|
|
102
|
-
var o = rt();
|
|
103
|
-
ee(t, o);
|
|
104
|
-
};
|
|
105
|
-
se(Y, (t) => {
|
|
106
|
-
V() && !e(Q) && t(Z);
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
b(p);
|
|
110
|
-
var B = m(p, 2), d = _(B);
|
|
111
|
-
b(B), b(S);
|
|
112
|
-
var C = m(S, 2), ae = _(C);
|
|
113
|
-
{
|
|
114
|
-
let t = J(() => `${e(F)} amount`);
|
|
115
|
-
ke(ae, {
|
|
116
|
-
type: "number",
|
|
117
|
-
min: "0",
|
|
118
|
-
step: "0.001",
|
|
119
|
-
get placeholder() {
|
|
120
|
-
return e(t);
|
|
121
|
-
},
|
|
122
|
-
get value() {
|
|
123
|
-
return D();
|
|
124
|
-
},
|
|
125
|
-
set value(o) {
|
|
126
|
-
D(o);
|
|
127
|
-
},
|
|
128
|
-
$$legacy: !0
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
var le = m(ae, 2), Pe = _(le);
|
|
132
|
-
{
|
|
133
|
-
let t = J(() => +e(I) <= 0);
|
|
134
|
-
_e(Pe, {
|
|
135
|
-
get onClick() {
|
|
136
|
-
return l;
|
|
137
|
-
},
|
|
138
|
-
text: "MAX",
|
|
139
|
-
get disabled() {
|
|
140
|
-
return e(t);
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
b(le);
|
|
145
|
-
var Oe = m(le, 2);
|
|
146
|
-
{
|
|
147
|
-
var Ue = (t) => {
|
|
148
|
-
var o = at(), O = _(o);
|
|
149
|
-
{
|
|
150
|
-
let ve = J(() => !e(h));
|
|
151
|
-
_e(O, {
|
|
152
|
-
get onClick() {
|
|
153
|
-
return A;
|
|
154
|
-
},
|
|
155
|
-
get text() {
|
|
156
|
-
return e(F);
|
|
157
|
-
},
|
|
158
|
-
get disabled() {
|
|
159
|
-
return e(ve);
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
b(o), ee(t, o);
|
|
164
|
-
};
|
|
165
|
-
se(Oe, (t) => {
|
|
166
|
-
k && t(Ue);
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
b(C);
|
|
170
|
-
var He = m(C, 2);
|
|
171
|
-
{
|
|
172
|
-
let t = J(() => `Send ${D() || ""} ${e(F)}`);
|
|
173
|
-
_e(He, {
|
|
174
|
-
get onClick() {
|
|
175
|
-
return z;
|
|
176
|
-
},
|
|
177
|
-
get text() {
|
|
178
|
-
return e(t);
|
|
179
|
-
},
|
|
180
|
-
get isLoading() {
|
|
181
|
-
return e(te);
|
|
182
|
-
},
|
|
183
|
-
get disabled() {
|
|
184
|
-
return e(U);
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
b(q);
|
|
189
|
-
var ye = m(q, 2), Ne = _(ye);
|
|
190
|
-
return et(Ne, {
|
|
191
|
-
get onClick() {
|
|
192
|
-
return f;
|
|
193
|
-
}
|
|
194
|
-
}), b(ye), pe(
|
|
195
|
-
(t, o, O) => {
|
|
196
|
-
ne = Me($, 1, "crtw-absolute crtw-top-0 crtw-bottom-0 crtw-left-0 crtw-right-0 crtw-z-10 crtw-border crtw-border-gray-300 crtw-rounded-lg crtw-backdrop-blur-lg", null, ne, t), me(v, ` ${o ?? ""} ${O ?? ""}`), Ve(d, "src", tt);
|
|
197
|
-
},
|
|
198
|
-
[
|
|
199
|
-
() => ({
|
|
200
|
-
"crtw-hidden": e(H),
|
|
201
|
-
"crtw-z-[-1]": e(H)
|
|
202
|
-
}),
|
|
203
|
-
() => (e(I), oe(() => L(+e(I)))),
|
|
204
|
-
() => (y(be), e(N), oe(() => be(e(N), T)))
|
|
205
|
-
]
|
|
206
|
-
), je("click", d, X), ee(K, R), De({
|
|
207
|
-
get recipientAddress() {
|
|
208
|
-
return V();
|
|
209
|
-
},
|
|
210
|
-
set recipientAddress(t) {
|
|
211
|
-
V(t), ge();
|
|
212
|
-
},
|
|
213
|
-
get amount() {
|
|
214
|
-
return D();
|
|
215
|
-
},
|
|
216
|
-
set amount(t) {
|
|
217
|
-
D(t), ge();
|
|
218
|
-
},
|
|
219
|
-
get options() {
|
|
220
|
-
return a();
|
|
221
|
-
},
|
|
222
|
-
set options(t) {
|
|
223
|
-
a(t), ge();
|
|
224
|
-
},
|
|
225
|
-
$set: Re,
|
|
226
|
-
$on: (t, o) => Te(E, t, o)
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
function it(K, E) {
|
|
230
|
-
if (new.target) return $e({ component: it, ...K });
|
|
231
|
-
Ee(E, !1);
|
|
232
|
-
const [I, te] = ze(), U = () => fe(Se, "$configStore", I), Q = () => fe(Ce, "$providerStore", I), H = () => fe(Ke, "$clientPublicStore", I), h = s(), N = s();
|
|
233
|
-
var M = this && this.__awaiter || function(i, r, c, v) {
|
|
234
|
-
function S(p) {
|
|
235
|
-
return p instanceof c ? p : new c(function(u) {
|
|
236
|
-
u(p);
|
|
237
|
-
});
|
|
238
|
-
}
|
|
239
|
-
return new (c || (c = Promise))(function(p, u) {
|
|
240
|
-
function Y(d) {
|
|
241
|
-
try {
|
|
242
|
-
B(v.next(d));
|
|
243
|
-
} catch (C) {
|
|
244
|
-
u(C);
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
function Z(d) {
|
|
248
|
-
try {
|
|
249
|
-
B(v.throw(d));
|
|
250
|
-
} catch (C) {
|
|
251
|
-
u(C);
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
function B(d) {
|
|
255
|
-
d.done ? p(d.value) : S(d.value).then(Y, Z);
|
|
256
|
-
}
|
|
257
|
-
B((v = v.apply(i, r || [])).next());
|
|
258
|
-
});
|
|
259
|
-
};
|
|
260
|
-
const j = ie(Se), { sendTokens: F, getCREDContract: V, toastAlert: D } = ie(qe);
|
|
261
|
-
let a = "", A = s(""), l = s(), f = s(""), z = 18, w = s("-"), x = s(""), X = 18, T = s("-"), k = s(""), L = s(!0), R = s(!1), P, q, $;
|
|
262
|
-
const ne = () => M(void 0, void 0, void 0, function* () {
|
|
263
|
-
const { Scanner: i } = yield import("./scanner.es-DK9KxX60.js");
|
|
264
|
-
$ = new i({ target: "#cpuiCredScanner" }), We(we.UI_CLOSED, $.close), yield $.scan(), $.on(i.events.CAPTURE, (r) => M(void 0, [r], void 0, function* ({ sub: c }) {
|
|
265
|
-
const { address: v } = yield Ye(c);
|
|
266
|
-
n(A, v), $.close();
|
|
267
|
-
})), $.on(i.events.CANCEL, () => n(L, !0)), $.on(i.events.ERROR, (r) => {
|
|
268
|
-
(r?.message || r).includes("Permission") && alert("In order to scan please allow the current page to access your camera and try again."), n(L, !0);
|
|
269
|
-
}), n(L, !1);
|
|
270
|
-
}), re = () => M(void 0, void 0, void 0, function* () {
|
|
271
|
-
const i = e(f) === e(w);
|
|
272
|
-
n(R, !0);
|
|
273
|
-
try {
|
|
274
|
-
const r = G.parseUnits(String(e(l)), i ? z : X), c = yield F({
|
|
275
|
-
address: e(A),
|
|
276
|
-
amount: r,
|
|
277
|
-
instance: i ? P : void 0
|
|
278
|
-
});
|
|
279
|
-
D(`<a href="${Qe(c.hash)}" target="_blank">Send TX</a> was created`), n(A, ""), n(l, void 0);
|
|
280
|
-
const [v, S] = yield Promise.all([
|
|
281
|
-
P.balanceOf(a),
|
|
282
|
-
q.provider.getBalance(a)
|
|
283
|
-
]);
|
|
284
|
-
n(x, G.formatUnits(v, z)), n(k, parseFloat(G.formatUnits(S, X)).toFixed(4)), xe(we.RECHECK_BALANCE, [c.hash]);
|
|
285
|
-
} catch (r) {
|
|
286
|
-
D(r?.message || r || "An error occurred while sending tokens", "failure"), xe(we.ERROR, { error: r });
|
|
287
|
-
}
|
|
288
|
-
n(R, !1);
|
|
289
|
-
}), de = () => M(void 0, void 0, void 0, function* () {
|
|
290
|
-
var i, r, c, v, S, p;
|
|
291
|
-
const u = ie(Ge);
|
|
292
|
-
n(A, u?.to || ""), n(l, u?.amount || void 0);
|
|
293
|
-
const { decimals: Y, contract: Z } = yield V();
|
|
294
|
-
z = Y, P = Z;
|
|
295
|
-
const B = ie(Ce);
|
|
296
|
-
if (!B) return;
|
|
297
|
-
q = yield B.getSigner(), a = yield Je();
|
|
298
|
-
const d = yield Promise.all([
|
|
299
|
-
P.symbol(),
|
|
300
|
-
P.balanceOf(a),
|
|
301
|
-
B.getBalance(a),
|
|
302
|
-
fetch("https://chainid.network/chains.json").then((C) => C.json()).then((C) => C.find((ae) => String(ae.chainId) === j.chainId))
|
|
303
|
-
]);
|
|
304
|
-
n(w, d[0]), n(x, G.formatUnits(d[1], z)), X = (c = (r = (i = d[3]) === null || i === void 0 ? void 0 : i.nativeCurrency) === null || r === void 0 ? void 0 : r.decimals) !== null && c !== void 0 ? c : 18, n(k, parseFloat(G.formatUnits(d[2], X)).toFixed(4)), n(T, (p = (S = (v = d[3]) === null || v === void 0 ? void 0 : v.nativeCurrency) === null || S === void 0 ? void 0 : S.symbol) !== null && p !== void 0 ? p : "ETH"), n(f, e(w));
|
|
305
|
-
});
|
|
306
|
-
g(() => (U(), Q()), () => {
|
|
307
|
-
U().chainId && Q() && de();
|
|
308
|
-
}), g(() => e(A), () => {
|
|
309
|
-
n(h, !!G.isAddress(e(A)));
|
|
310
|
-
}), g(
|
|
311
|
-
() => (e(R), e(l), e(h), e(f), e(w), e(x), e(T), e(k)),
|
|
312
|
-
() => {
|
|
313
|
-
n(N, e(R) || !e(l) || !e(h) || e(f) === e(w) && e(l) > +e(x) || e(f) === e(T) && e(l) > +e(k));
|
|
314
|
-
}
|
|
315
|
-
), Ie(), Be();
|
|
316
|
-
{
|
|
317
|
-
let i = J(() => (U(), e(L), e(x), e(h), y(he), y(Ae), e(f), e(w), e(T), e(l), e(k), e(R), e(N), H(), oe(() => ({
|
|
318
|
-
title: "Send stored value",
|
|
319
|
-
isNativeCurrecyTransferAllowed: U().transferTokens?.nativeCurrency !== !1,
|
|
320
|
-
isScannerHidden: e(L),
|
|
321
|
-
balance: e(x),
|
|
322
|
-
chainId: j.chainId,
|
|
323
|
-
isRecipientAddressValid: e(h),
|
|
324
|
-
onScannerClicked: ne,
|
|
325
|
-
onSendTokens: re,
|
|
326
|
-
onBackClicked: () => he.set(Ae.WALLET),
|
|
327
|
-
onChangeCurrency: () => e(f) === e(w) ? n(f, e(T)) : n(f, e(w)),
|
|
328
|
-
onSetMaxAmount: () => e(f) === e(w) ? n(l, +e(x)) : n(l, +e(k)),
|
|
329
|
-
isLoading: e(R),
|
|
330
|
-
isSubmitDisabled: e(N),
|
|
331
|
-
credAlias: H()?.ui_settings.cred_alias,
|
|
332
|
-
activeCurrency: e(f),
|
|
333
|
-
symbol: e(w),
|
|
334
|
-
nativeSymbol: e(T),
|
|
335
|
-
nativeBalance: e(k)
|
|
336
|
-
}))));
|
|
337
|
-
Le(K, {
|
|
338
|
-
get options() {
|
|
339
|
-
return e(i);
|
|
340
|
-
},
|
|
341
|
-
get recipientAddress() {
|
|
342
|
-
return e(A);
|
|
343
|
-
},
|
|
344
|
-
set recipientAddress(r) {
|
|
345
|
-
n(A, r);
|
|
346
|
-
},
|
|
347
|
-
get amount() {
|
|
348
|
-
return e(l);
|
|
349
|
-
},
|
|
350
|
-
set amount(r) {
|
|
351
|
-
n(l, r);
|
|
352
|
-
},
|
|
353
|
-
$$legacy: !0
|
|
354
|
-
});
|
|
355
|
-
}
|
|
356
|
-
var W = De({
|
|
357
|
-
$set: Re,
|
|
358
|
-
$on: (i, r) => Te(E, i, r)
|
|
359
|
-
});
|
|
360
|
-
return te(), W;
|
|
361
|
-
}
|
|
362
|
-
export {
|
|
363
|
-
it as default
|
|
364
|
-
};
|
|
365
|
-
//# sourceMappingURL=SendTokens-D-GXxLSW.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SendTokens-D-GXxLSW.js","sources":["../../ui/main/send-tokens/SendTokens.svelte","../src/app/pages/send-tokens/SendTokens.svelte"],"sourcesContent":["<script lang=\"ts\">\n import ContentHeader from \"../shared/ContentHeader.svelte\";\n import ButtonBack from \"../shared/inputs/button-back/ButtonBack.svelte\";\n import Button from \"../shared/inputs/button/Button.svelte\";\n import Input from \"../shared/inputs/input/Input.svelte\";\n import ScanIcon from \"../../images/scanner.svg\";\n\n import { getCryptoCurrencySymbol } from \"../../../utils/lib/strings/strings\";\n\n export let recipientAddress: string;\n export let amount: number | undefined;\n\n export let options: {\n title: string;\n isScannerHidden: boolean;\n balance: string;\n chainId?: string;\n isRecipientAddressValid: boolean;\n onScannerClicked: () => void;\n onSendTokens: () => void;\n onBackClicked: () => void;\n onChangeCurrency: () => void;\n onSetMaxAmount: () => void;\n isLoading: boolean;\n isSubmitDisabled: boolean;\n credAlias: string;\n activeCurrency: string;\n symbol: string;\n nativeSymbol: string;\n nativeBalance: string;\n isNativeCurrecyTransferAllowed?: boolean;\n };\n\n let {\n onChangeCurrency,\n onSetMaxAmount,\n onBackClicked,\n onSendTokens,\n title,\n chainId,\n onScannerClicked,\n credAlias,\n isNativeCurrecyTransferAllowed = true\n } = options;\n\n $: balance = options.balance;\n $: isLoading = options.isLoading;\n $: isSubmitDisabled = options.isSubmitDisabled;\n $: isRecipientAddressValid = options.isRecipientAddressValid;\n $: isScannerHidden = options.isScannerHidden;\n $: activeCurrency = options.activeCurrency;\n $: symbol = options.symbol;\n $: nativeSymbol = options.nativeSymbol;\n $: nativeBalance = options.nativeBalance;\n\n $: activeCurrencySymbol = getCryptoCurrencySymbol(activeCurrency, credAlias);\n const round = (num: number) => Math.floor(num * 100) / 100\n</script>\n\n<ContentHeader\n text={title}\n description={isScannerHidden\n ? ``\n : \"Scan Passport Id\"}\n/>\n<div class=\"crtw-w-full crtw-p-0 crtw-relative\">\n <div\n id=\"cpuiCredScanner\"\n class=\"crtw-absolute crtw-top-0 crtw-bottom-0 crtw-left-0 crtw-right-0 crtw-z-10 crtw-border crtw-border-gray-300 crtw-rounded-lg crtw-backdrop-blur-lg\"\n class:crtw-hidden={isScannerHidden}\n class:crtw-z-[-1]={isScannerHidden}\n ></div>\n {#if chainId}\n <div>ChainId: <span class=\"crtw-font-bold\">{chainId}</span></div>\n {/if}\n <div>\n Your balance: \n <span class=\"crtw-font-bold\">\n {#if isNativeCurrecyTransferAllowed}\n {round(+nativeBalance)} {nativeSymbol} / \n {/if}\n\n {round(+balance)} {getCryptoCurrencySymbol(symbol, credAlias)}\n </span>\n </div>\n <div\n class=\"crtw-mb-2.5 crtw-flex crtw-items-start crtw-justify-between crtw-w-full\"\n >\n <div class=\"crtw-flex crtw-flex-col crtw-w-full\">\n <Input\n name=\"recipientAddress\"\n type=\"text\"\n placeholder=\"Address 0x...\"\n bind:value={recipientAddress}\n />\n {#if recipientAddress && !isRecipientAddressValid}\n <label\n class=\"crtw-text-[10px] crtw-text-warningTextColor cpui-send-tokens-validation-message\"\n for=\"recipientAddress\">Provided address is not valid.</label\n >\n {/if}\n </div>\n\n <div class=\"crtw-ml-2.5 crtw-cursor-pointer\">\n <!-- svelte-ignore a11y-click-events-have-key-events -->\n <!-- svelte-ignore a11y-no-noninteractive-element-interactions -->\n <img\n src={ScanIcon}\n on:click={onScannerClicked}\n width=\"53px\"\n alt=\"\"\n class=\"crtw-h-[53px]\"\n />\n </div>\n </div>\n\n <div\n class=\"crtw-mb-2.5 crtw-flex crtw-items-start crtw-justify-between crtw-w-full\"\n >\n <Input\n type=\"number\"\n min=\"0\"\n step=\"0.001\"\n placeholder={`${activeCurrencySymbol} amount`}\n bind:value={amount}\n />\n <div class=\"crtw-ml-2.5 crtw-w-16 crtw-min-w-16\">\n <Button onClick={onSetMaxAmount} text={`MAX`} disabled={+balance <= 0} />\n </div>\n\n {#if isNativeCurrecyTransferAllowed}\n <div class=\"crtw-ml-2.5 crtw-w-16 crtw-min-w-16\">\n <Button\n onClick={onChangeCurrency}\n text={activeCurrencySymbol}\n disabled={!activeCurrency}\n />\n </div>\n {/if}\n </div>\n <Button\n onClick={onSendTokens}\n text={`Send ${amount || \"\"} ${activeCurrencySymbol}`}\n {isLoading}\n disabled={isSubmitDisabled}\n />\n</div>\n<div class=\"crtw-mt-0.5 crtw-mb-3 crtw-w-full\">\n <ButtonBack onClick={onBackClicked} />\n</div>\n","<script lang=\"ts\">\n import { ethers } from '@credenza3/core-web-evm-ext'\n import { get } from 'svelte/store'\n import { type Scanner } from '@credenza3/scanner-lib'\n\n import { clientPublicStore, fn, pageOptsStore, pageStore } from '@packages/stores'\n import { dispatch, once, PassportEvents } from '@lib/events/events'\n import { Pages } from '@packages/utils/enums'\n import { getTxScanAddress } from '@src/lib/tx/tx'\n import { SendTokens } from '@packages/ui'\n import { getAddress } from '@src/passport/blockchain'\n import { configStore } from '@src/stores/config'\n import type { TEvmContract } from '@packages/utils/types'\n import { providerStore } from '@src/stores'\n import { getUserAddressBySub } from '@src/Passport.service'\n\n const config = get(configStore)\n const { sendTokens, getCREDContract, toastAlert } = get(fn)\n\n let userAddress = ''\n let recipientAddress = ''\n let amount: number | undefined\n\n let activeCurrency = ''\n\n let decimals = 18\n let symbol = '-'\n let balance = ''\n\n let nativeDecimals = 18\n let nativeSymbol = '-'\n let nativeBalance = ''\n\n let isScannerHidden = true\n let isLoading = false\n\n let contract: ethers.Contract\n let signer: ethers.JsonRpcSigner\n let scanner: Scanner\n\n const onScannerClicked = async () => {\n const { Scanner } = await import('@credenza3/scanner-lib')\n scanner = new Scanner({ target: '#cpuiCredScanner' })\n once(PassportEvents.UI_CLOSED, scanner.close)\n await scanner.scan()\n scanner.on(Scanner.events.CAPTURE, async ({ sub }: { sub: string }) => {\n const { address } = await getUserAddressBySub(sub)\n recipientAddress = address\n scanner.close()\n })\n scanner.on(Scanner.events.CANCEL, () => (isScannerHidden = true))\n scanner.on(Scanner.events.ERROR, (err) => {\n const message = err?.message || err\n if (message.includes('Permission'))\n alert('In order to scan please allow the current page to access your camera and try again.')\n isScannerHidden = true\n })\n isScannerHidden = false\n }\n\n const sendTokensToRecipient = async () => {\n const isTCRED = activeCurrency === symbol\n isLoading = true\n try {\n const weiBn = ethers.parseUnits(String(amount), isTCRED ? decimals : nativeDecimals)\n const result = (await sendTokens({\n address: recipientAddress,\n amount: weiBn,\n instance: isTCRED ? contract : undefined,\n })) as { hash: string; wait: () => Promise<void> }\n toastAlert(\n `<a href=\"${getTxScanAddress(result.hash)}\" target=\"_blank\">Send TX</a> was created`,\n )\n recipientAddress = ''\n amount = undefined\n\n const [weiBalance, weiNativeBalance] = await Promise.all([\n contract.balanceOf(userAddress),\n signer.provider.getBalance(userAddress),\n ])\n\n balance = ethers.formatUnits(weiBalance, decimals)\n nativeBalance = parseFloat(ethers.formatUnits(weiNativeBalance, nativeDecimals)).toFixed(4)\n dispatch(PassportEvents.RECHECK_BALANCE, [result.hash])\n } catch (err) {\n toastAlert(err?.message || err || 'An error occurred while sending tokens', 'failure')\n dispatch(PassportEvents.ERROR, { error: err })\n }\n isLoading = false\n }\n\n const init = async () => {\n const pageOpts = get(pageOptsStore)\n recipientAddress = pageOpts?.to || ''\n amount = pageOpts?.amount || undefined\n const { decimals: contractDecimals, contract: credContract } = (await getCREDContract()) as TEvmContract\n decimals = contractDecimals\n contract = credContract\n const provider = get(providerStore)\n if(!provider) return\n signer = await provider.getSigner()\n userAddress = await getAddress()\n const results = await Promise.all([\n contract.symbol(),\n contract.balanceOf(userAddress),\n provider.getBalance(userAddress),\n fetch('https://chainid.network/chains.json')\n .then((result) => result.json())\n .then((networks) =>\n networks.find((network: { chainId: number }) => String(network.chainId) === config.chainId),\n ),\n ])\n symbol = results[0]\n balance = ethers.formatUnits(results[1], decimals)\n nativeDecimals = results[3]?.nativeCurrency?.decimals ?? 18\n nativeBalance = parseFloat(ethers.formatUnits(results[2], nativeDecimals)).toFixed(4)\n nativeSymbol = results[3]?.nativeCurrency?.symbol ?? 'ETH'\n activeCurrency = symbol\n }\n\n $: $configStore.chainId && $providerStore && init()\n $: isRecipientAddressValid = !!ethers.isAddress(recipientAddress)\n $: isSubmitDisabled =\n isLoading ||\n !amount ||\n !isRecipientAddressValid ||\n (activeCurrency === symbol && amount > +balance) ||\n (activeCurrency === nativeSymbol && amount > +nativeBalance)\n</script>\n\n<SendTokens\n bind:recipientAddress\n bind:amount\n options={{\n title: `Send stored value`,\n isNativeCurrecyTransferAllowed: $configStore.transferTokens?.nativeCurrency !== false,\n isScannerHidden,\n balance,\n chainId: config.chainId,\n isRecipientAddressValid,\n onScannerClicked,\n onSendTokens: sendTokensToRecipient,\n onBackClicked: () => pageStore.set(Pages.WALLET),\n onChangeCurrency: () => (activeCurrency === symbol ? (activeCurrency = nativeSymbol) : (activeCurrency = symbol)),\n onSetMaxAmount: () => (activeCurrency === symbol ? (amount = +balance) : (amount = +nativeBalance)),\n isLoading,\n isSubmitDisabled,\n credAlias: $clientPublicStore?.ui_settings.cred_alias,\n activeCurrency,\n symbol,\n nativeSymbol,\n nativeBalance,\n }}\n/>\n"],"names":["$.prop","$$props","amount","options","onChangeCurrency","onSetMaxAmount","onBackClicked","onSendTokens","title","chainId","onScannerClicked","credAlias","isNativeCurrecyTransferAllowed","round","num","isLoading","isSubmitDisabled","isRecipientAddressValid","isScannerHidden","activeCurrency","symbol","nativeSymbol","nativeBalance","$.set","activeCurrencySymbol","getCryptoCurrencySymbol","$.get","$0","$.derived_safe_equal","$$render","consequent","consequent_1","recipientAddress","consequent_2","ScanIcon","balance","__awaiter","thisArg","_arguments","P","generator","config","get","configStore","sendTokens","getCREDContract","toastAlert","fn","userAddress","$.mutable_source","decimals","nativeDecimals","contract","signer","scanner","Scanner","once","PassportEvents","_a","sub","address","getUserAddressBySub","sendTokensToRecipient","isTCRED","weiBn","ethers","result","getTxScanAddress","weiBalance","weiNativeBalance","dispatch","err","init","pageOpts","pageOptsStore","contractDecimals","credContract","provider","providerStore","getAddress","networks","network","_c","_b","results","_f","_e","_d","$configStore","$providerStore","pageStore","Pages"],"mappings":"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"}
|
package/dist/strings-B-rKL311.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"strings-B-rKL311.js","sources":["../../utils/lib/strings/strings.ts"],"sourcesContent":["export const capitalizeFirstLetter = (string: string) => {\n return string.charAt(0).toUpperCase() + string.toLowerCase().slice(1);\n};\n\nexport const getCryptoCurrencySymbol = (symbol: string, alias: string) => {\n if (symbol.toLowerCase() === \"cred\") return alias;\n return symbol;\n};\n"],"names":["getCryptoCurrencySymbol","symbol","alias"],"mappings":"AAIO,MAAMA,IAA0B,CAACC,GAAgBC,MAClDD,EAAO,kBAAkB,SAAeC,IACrCD;"}
|