@credenza3/passport-sui 0.2.3 → 0.2.5

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.
Files changed (78) hide show
  1. package/dist/{App-DMjoqoZI.js → App-DE7zgdZp.js} +18 -18
  2. package/dist/{App-DMjoqoZI.js.map → App-DE7zgdZp.js.map} +1 -1
  3. package/dist/{Button-69xpr_s2.js → Button-Dh2RgV-h.js} +4 -4
  4. package/dist/{Button-69xpr_s2.js.map → Button-Dh2RgV-h.js.map} +1 -1
  5. package/dist/{ButtonBack-eiZlUP5b.js → ButtonBack-C6vkhqVj.js} +4 -4
  6. package/dist/{ButtonBack-eiZlUP5b.js.map → ButtonBack-C6vkhqVj.js.map} +1 -1
  7. package/dist/{ButtonLink-0xz3HRlH.js → ButtonLink-D7E36Lqo.js} +3 -3
  8. package/dist/{ButtonLink-0xz3HRlH.js.map → ButtonLink-D7E36Lqo.js.map} +1 -1
  9. package/dist/{ConfirmAccount-xgFv9hNK.js → ConfirmAccount-Co8Svvz_.js} +9 -9
  10. package/dist/{ConfirmAccount-xgFv9hNK.js.map → ConfirmAccount-Co8Svvz_.js.map} +1 -1
  11. package/dist/{ContentHeader-36qt_g7F.js → ContentHeader-Bgsb8pVQ.js} +3 -3
  12. package/dist/{ContentHeader-36qt_g7F.js.map → ContentHeader-Bgsb8pVQ.js.map} +1 -1
  13. package/dist/{Error-BK7ZLiVO.js → Error-BU6Kbq9c.js} +5 -5
  14. package/dist/{Error-BK7ZLiVO.js.map → Error-BU6Kbq9c.js.map} +1 -1
  15. package/dist/{Input-DAxd1tLB.js → Input-BaRebb7l.js} +4 -4
  16. package/dist/{Input-DAxd1tLB.js.map → Input-BaRebb7l.js.map} +1 -1
  17. package/dist/{Label-DepYgrao.js → Label-Dbv4Ebou.js} +3 -3
  18. package/dist/{Label-DepYgrao.js.map → Label-Dbv4Ebou.js.map} +1 -1
  19. package/dist/{Loader-D4rTMy8b.js → Loader-BZFi8LA-.js} +3 -3
  20. package/dist/{Loader-D4rTMy8b.js.map → Loader-BZFi8LA-.js.map} +1 -1
  21. package/dist/{Login-B2s1dHJz.js → Login-Cot1ebHV.js} +9 -9
  22. package/dist/{Login-B2s1dHJz.js.map → Login-Cot1ebHV.js.map} +1 -1
  23. package/dist/{Logout-C6NAooAk.js → Logout-DOMxPZ1X.js} +6 -6
  24. package/dist/{Logout-C6NAooAk.js.map → Logout-DOMxPZ1X.js.map} +1 -1
  25. package/dist/{Nav-DOV6cYcx.js → Nav-rBuuSOJK.js} +5 -5
  26. package/dist/{Nav-DOV6cYcx.js.map → Nav-rBuuSOJK.js.map} +1 -1
  27. package/dist/{PassportId-oKWNLelI.js → PassportId-Cz7h8ktt.js} +7 -7
  28. package/dist/{PassportId-oKWNLelI.js.map → PassportId-Cz7h8ktt.js.map} +1 -1
  29. package/dist/Payment-BDYquFOe.js +1188 -0
  30. package/dist/Payment-BDYquFOe.js.map +1 -0
  31. package/dist/{PaymentResult-B2r8rxy0.js → PaymentResult-COaQ1V9L.js} +4 -4
  32. package/dist/{PaymentResult-B2r8rxy0.js.map → PaymentResult-COaQ1V9L.js.map} +1 -1
  33. package/dist/{Profile-D2bpRbfe.js → Profile-Bz6nV20E.js} +33 -33
  34. package/dist/{Profile-D2bpRbfe.js.map → Profile-Bz6nV20E.js.map} +1 -1
  35. package/dist/{ProgressVideo-01D-uEhA.js → ProgressVideo-D4kaRPKo.js} +6 -6
  36. package/dist/{ProgressVideo-01D-uEhA.js.map → ProgressVideo-D4kaRPKo.js.map} +1 -1
  37. package/dist/{ProgressVideo.service-D6suMNMc.js → ProgressVideo.service-CX-GekTX.js} +2 -2
  38. package/dist/{ProgressVideo.service-D6suMNMc.js.map → ProgressVideo.service-CX-GekTX.js.map} +1 -1
  39. package/dist/{RichAlert-vukUSrZA.js → RichAlert-C616RHkC.js} +5 -5
  40. package/dist/{RichAlert-vukUSrZA.js.map → RichAlert-C616RHkC.js.map} +1 -1
  41. package/dist/{Scanner-CWBrtSO-.js → Scanner-D0jh5SEU.js} +7 -7
  42. package/dist/{Scanner-CWBrtSO-.js.map → Scanner-D0jh5SEU.js.map} +1 -1
  43. package/dist/SendTokens-DD05cvbj.js +350 -0
  44. package/dist/SendTokens-DD05cvbj.js.map +1 -0
  45. package/dist/{Sign-Z4_JUSR-.js → Sign-D9VySmcS.js} +7 -7
  46. package/dist/{Sign-Z4_JUSR-.js.map → Sign-D9VySmcS.js.map} +1 -1
  47. package/dist/{Stripe.service-BkXnxKqQ.js → Stripe.service-BQSwN-WH.js} +3 -3
  48. package/dist/{Stripe.service-BkXnxKqQ.js.map → Stripe.service-BQSwN-WH.js.map} +1 -1
  49. package/dist/{UpdateProfile-CnE6y3Pf.js → UpdateProfile-Dt4tDRo9.js} +10 -10
  50. package/dist/{UpdateProfile-CnE6y3Pf.js.map → UpdateProfile-Dt4tDRo9.js.map} +1 -1
  51. package/dist/{UserInfo-DdRVoH0D.js → UserInfo-CeAUiqYr.js} +4 -4
  52. package/dist/{UserInfo-DdRVoH0D.js.map → UserInfo-CeAUiqYr.js.map} +1 -1
  53. package/dist/{Wallet-Cwo66Q1r.js → Wallet-Cae3eUz7.js} +8 -8
  54. package/dist/{Wallet-Cwo66Q1r.js.map → Wallet-Cae3eUz7.js.map} +1 -1
  55. package/dist/{each-BNaL_Vtx.js → each-CViAVHEw.js} +2 -2
  56. package/dist/{each-BNaL_Vtx.js.map → each-CViAVHEw.js.map} +1 -1
  57. package/dist/{html-u5owNQ_k.js → html-ZqiVgKIh.js} +3 -3
  58. package/dist/{html-u5owNQ_k.js.map → html-ZqiVgKIh.js.map} +1 -1
  59. package/dist/{index-CzZFSuqM.js → index-DhyNP7l2.js} +4173 -4173
  60. package/dist/{index-CzZFSuqM.js.map → index-DhyNP7l2.js.map} +1 -1
  61. package/dist/{index-client-GmX4pXIJ.js → index-client-fpY_J5KV.js} +2 -2
  62. package/dist/{index-client-GmX4pXIJ.js.map → index-client-fpY_J5KV.js.map} +1 -1
  63. package/dist/{input-Dlpr9jGf.js → input-H9baEii1.js} +2 -2
  64. package/dist/{input-Dlpr9jGf.js.map → input-H9baEii1.js.map} +1 -1
  65. package/dist/{legacy-BNwW5YWH.js → legacy-DlRLjVlK.js} +2 -2
  66. package/dist/{legacy-BNwW5YWH.js.map → legacy-DlRLjVlK.js.map} +1 -1
  67. package/dist/passport.es.js +1 -1
  68. package/dist/passport.umd.js +145 -145
  69. package/dist/passport.umd.js.map +1 -1
  70. package/dist/{socket-io-C6E3tcOo.js → socket-io-DaOgnRY5.js} +2 -2
  71. package/dist/{socket-io-C6E3tcOo.js.map → socket-io-DaOgnRY5.js.map} +1 -1
  72. package/package.json +1 -1
  73. package/dist/Payment-exJAIgZE.js +0 -1233
  74. package/dist/Payment-exJAIgZE.js.map +0 -1
  75. package/dist/SendTokens-QbdToxL9.js +0 -355
  76. package/dist/SendTokens-QbdToxL9.js.map +0 -1
  77. package/dist/strings-B-rKL311.js +0 -5
  78. package/dist/strings-B-rKL311.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"Payment-exJAIgZE.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/order.service.ts","../src/app/pages/payment/paystack/Paystack.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 isPriceLoading: boolean\n totalSumCents: number,\n currencySymbol?: string\n }\n\n \n let { user, title, subtitle, onBackClick, isCardDisabled, currencySymbol = '$' } = options\n let activeTab = isCardDisabled ? PaymentViews.CREDENZA_BALANCE : PaymentViews.CREDIT_CARD\n\n $: isPriceLoading = options.isPriceLoading\n $: totalSumCents = options.totalSumCents\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 {#if isPriceLoading}\n <div>Getting price...</div>\n {:else if totalSumCents}\n <div>{currencySymbol}{(+totalSumCents / 100).toFixed(2)}</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 / 100,\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 { ReceiptTarget, TransactionTypes } from '@packages/utils/enums'\nimport { accessTokenStore } from '@packages/stores'\nimport { get } from 'svelte/store'\nimport { configStore } from '@src/stores/config'\nimport { getClientConfigByClientId } from '@lib/clients'\nimport { initSuiClient } from '@src/libs/sui'\nimport type { TPaymentAsset } from './payment.constants'\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 type { TPaymentReturn } from '@packages/utils/types'\nimport { validateOrderItems, validateTxs } from '@lib/orders'\nimport { dispatch, PassportEvents } from '@lib/events/events'\n\n\nexport const requestSuiReceipt = async ({\n stripeChargeId,\n title,\n digest,\n subtitle,\n amount,\n currency,\n}: {\n stripeChargeId?: string\n digest?: string\n amount?: number\n currency?: string\n title: string\n subtitle: 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\n let successCount = 0;\n \n for (const target of targets) {\n const result = await fetch(`${credenza.suiApiUrl}/tokens/receipt`, {\n method: 'POST',\n body: JSON.stringify({\n ...(stripeChargeId ? { charge_id: stripeChargeId } : {}),\n ...(digest ? { digest } : {}),\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 ({\n res,\n priceCents,\n purchaseConfig\n}: {\n res: TPaymentReturn\n priceCents: number,\n purchaseConfig: { assets: TPaymentAsset[], title: string, subtitle: string }\n}) => {\n const config = get(configStore)\n\n const { chain_txs, items } = res\n const failedOrdersMessage = validateOrderItems(items)\n validateTxs(chain_txs, failedOrdersMessage)\n \n dispatch(PassportEvents.PAYMENT, { type: TransactionTypes.CARD })\n dispatch(PassportEvents.RECHECK_BALANCE)\n const user = get(userStore)\n if (user) {\n analytics.track('cp_payment_fiat', {\n $email: user.email,\n $phone: user.phone,\n suiNetwork: config.suiNetwork,\n clientId: config.clientId,\n address: await getAddress(),\n location: window.location.href,\n assets: purchaseConfig?.assets,\n total: priceCents / 100,\n description: (purchaseConfig?.title ?? '') + `(${purchaseConfig?.subtitle ?? ''})`,\n })\n }\n\n await waitVideoEnded()\n\n if (failedOrdersMessage) {\n pageOptsStore.set({\n title: 'Done!',\n subtitle: 'Your payment was partly successful',\n orders: items,\n })\n }\n pageStore.set(Pages.PAYMENT_RESULT)\n}\n\nexport const enrichAssetsWithMetadata = async (\n items: TPaymentReturn['items'], \n) => {\n for (const item of items) {\n const client = await initSuiClient(item?.asset?.packageId as string)\n \n let metadata = null\n if (item?.asset?.assetId) {\n metadata = await client.CredenzaAssetCollection.getAssetMetadata(+item?.asset?.assetId)\n item.asset.metadata = metadata\n }\n }\n}\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\n import { configStore } from '@src/stores/config'\n import { getClientConfigByClientId } from '@lib/clients'\n import type { TPaymentAsset } from '../payment.constants'\n import { afterPaymentProcess } from '../Payment.service'\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: { assets: TPaymentAsset[], title: string, subtitle: string }\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 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 { assets } = purchaseConfig\n if (!assets?.length) throw new Error('No purchase config assets found')\n\n const res = await processPayment(tokenId, assets)\n await afterPaymentProcess({res, priceCents, purchaseConfig})\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 $: 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 { onMount } from 'svelte'\n import { Pages } from '@packages/utils/enums'\n import { pageOptsStore, fn, pageStore, userStore, clientPublicStore } from '@packages/stores'\n import { dispatch, PassportEvents } from '@lib/events/events'\n import { CredenzaBalance } from '@packages/ui'\n import { get } from 'svelte/store'\n import { analytics } from '@lib/mixpanel/mixpanel'\n import { configStore } from '@src/stores/config'\n import { buyWithCred, getAddress, getBalance } from '@src/passport/blockchain'\n import { getCryptoCurrencySymbol } from '@lib/strings/strings'\n import { waitVideoEnded } from '@components/progress/ProgressVideo.service'\n import { requestSuiReceipt } from '../Payment.service'\n\n export let totalPriceToken: number\n export let purchaseConfig: {\n assets: { type: string; packageId: string; assetId?: number; amount?: number }[]\n title: string\n subtitle: string\n }\n export let isLoading: boolean\n export let isPriceLoading: boolean\n export let pricesByAsset: number[] = []\n\n const { toastAlert } = get(fn)\n const config = get(configStore)\n\n let balance = 0\n\n const processPaymentTx = async (\n asset: { type: string; packageId: string; assetId?: number; amount?: number },\n index: number,\n ) => {\n const { type, packageId, assetId, amount } = asset\n const paymentRes = await buyWithCred(type, packageId, { assetId, amount })\n const { title, subtitle } = purchaseConfig\n dispatch(PassportEvents.PAYMENT)\n dispatch(PassportEvents.RECHECK_BALANCE)\n await requestSuiReceipt({\n digest: paymentRes.digest,\n title,\n subtitle,\n amount: pricesByAsset[index],\n currency: 'CRED',\n })\n dispatch(PassportEvents.RECEIPT, { digest: paymentRes.digest })\n }\n\n const payWithCredenza = async () => {\n try {\n if (BigInt(totalPriceToken) > balance) return\n\n isLoading = true\n const { assets } = purchaseConfig\n\n for (const [index, asset] of assets.entries()) {\n await processPaymentTx(asset, index)\n\n await new Promise((resolve) => setTimeout(resolve, 1000))\n }\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 suiNetwork: config.suiNetwork,\n clientId: config.clientId,\n location: window.location.href,\n address: await getAddress(),\n assets,\n total: totalPriceToken,\n description: (purchaseConfig?.title ?? '') + `(${purchaseConfig?.subtitle ?? ''})`,\n })\n }\n await waitVideoEnded()\n\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 balance = Number(await getBalance())\n })\n\n $: formattedBalance = `${(balance - totalPriceToken).toFixed(2)} ${getCryptoCurrencySymbol('cred', 'cred')}`\n</script>\n\n<CredenzaBalance\n options={{\n formattedBalance,\n balance,\n credAlias:$clientPublicStore.ui_settings.cred_alias,\n onPay: payWithCredenza,\n onGetCred: () => pageStore.set(Pages.WALLET),\n totalToPay: String(totalPriceToken),\n isLoading,\n isPaymentDisabled: !Number(balance) || totalPriceToken > balance || isPriceLoading,\n }}\n/>\n","import { accessTokenStore, pageOptsStore } from \"@packages/stores\"\nimport type { TBasicPaymentData } from \"./oder.types\"\nimport { get } from \"svelte/store\"\nimport { configStore } from \"@src/stores/config\"\nimport type { TPaymentReturn } from \"@packages/utils/types\"\nimport { getCompmletedOrderDetails } from \"@lib/orders\"\nimport { enrichAssetsWithMetadata, requestSuiReceipt } from \"./Payment.service\"\nimport { dispatch, PassportEvents } from \"@lib/events/events\"\nimport type { TPaymentAsset } from \"./payment.constants\"\n\n\nexport const createOrder = async (paymentData: TBasicPaymentData): Promise<string> => {\n const { assets, ...rest } = paymentData\n const assetGroups = mapAssetsToGroups(assets)\n const res = await fetch(get(configStore).credenza.suiApiUrl + '/assets/buy', {\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${get(accessTokenStore)}`,\n },\n method: 'POST',\n body: JSON.stringify({...rest, ...assetGroups}),\n })\n if (!res.ok) throw new Error('Failed to create order')\n const { _id }: { _id: string } = await res.json()\n return _id\n}\n\nexport const processOrder = async (orderId: string): Promise<TPaymentReturn> => {\n const config = get(configStore)\n const { title, subtitle } = get(pageOptsStore)\n const data = (await getCompmletedOrderDetails(config.credenza.generalApiUrl, orderId)) as TPaymentReturn\n if (data.items[0].error) throw new Error(data.items[0].error)\n\n if (data.payment_provider_tx && data.payment_provider !== \"paystack\") {\n await requestSuiReceipt({ stripeChargeId: data.payment_provider_tx, title, subtitle, currency: data.currency })\n dispatch(PassportEvents.RECEIPT, { stripeChargeId: data.payment_provider_tx })\n }\n await enrichAssetsWithMetadata(data.items)\n return data\n}\n\nconst mapAssetsToGroups = (assets: TPaymentAsset[]) => {\n const typeMap: { [key: string]: string } = {\n credenza_asset_collection: \"collection\",\n decom: \"decom\",\n cred: \"coin\",\n membership: \"membership\",\n };\n\n const result = assets.reduce((acc: { [key: string]: { asset_type: string; asset_id?: number; amount?: number }[] }, asset) => {\n const key = typeMap[asset.type];\n if (!key) return acc;\n\n const entry: { asset_type: string; asset_id?: number; amount?: number } = {\n asset_type: `${asset.packageId}::${asset.type}::${asset.type.toUpperCase()}`,\n };\n\n if (asset.assetId) {\n entry.asset_id = +asset.assetId\n }\n if (asset.amount) {\n entry.amount = asset.amount\n }\n\n acc[key] = acc[key] || [];\n acc[key].push(entry);\n\n return acc;\n }, { collection: [], decom: [], coin: [], membership: [] });\n\n return result;\n}","<script lang=\"ts\">\n import { dispatch, PassportEvents } from \"@lib/events/events\"\n import { loadScript } from \"@lib/scripts/scripts\"\n import { pageOptsStore, pageStore } from \"@packages/stores\"\n import { Pages } from \"@packages/utils/enums\"\n import { toastAlert } from \"@src/passport/ui\"\n import { onMount } from \"svelte\"\n import { createOrder, processOrder } from \"../order.service\"\n import { afterPaymentProcess } from \"../Payment.service\"\n import { get } from \"svelte/store\"\n import { configStore } from \"@src/stores/config\"\n import Button from \"@packages/ui/main/shared/inputs/button/Button.svelte\"\n import { getClientConfigByClientId } from \"@lib/clients\"\n import { getOrderDetails } from \"@lib/orders\"\n\n let { priceCents, purchaseConfig, isLoading = $bindable() } = $props()\n\n let Paystack: Window['PaystackPop']\n\n onMount(async () => {\n try {\n if (!Paystack) {\n if (!window.PaystackPop) {\n await loadScript('https://js.paystack.co/v2/inline.js')\n }\n Paystack = window.PaystackPop\n }\n\n await doPayment()\n } catch (err) {\n return console.log('Please include paystack to use payments.')\n }\n })\n\n const externalErrorHandler = (err: Error) => {\n isLoading = false\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 const doPayment = async () => {\n try {\n const { assets } = purchaseConfig\n const config = get(configStore)\n if (!assets?.length) throw new Error('No purchase config assets found')\n isLoading = true\n\n const currency = getClientConfigByClientId(get(configStore).clientId).payment.paystack!\n const orderId = await createOrder({assets, payment_provider: \"paystack\", client_id: get(configStore).clientId, currency })\n const res = await getOrderDetails(config.credenza.generalApiUrl, orderId)\n\n if (!res.payment_provider_data?.access_code) throw new Error('Payment is unavailable now')\n const popup = new Paystack()\n \n const result = popup.resumeTransaction(res.payment_provider_data?.access_code)\n result.onSuccess = async () => {\n try {\n const res = await processOrder(orderId);\n await afterPaymentProcess({\n res,\n priceCents,\n purchaseConfig\n });\n } catch (err) {\n externalErrorHandler(err)\n } finally {\n isLoading = false;\n }\n }\n\n result.onError = (err: unknown) => {\n isLoading = false\n throw err\n }\n\n result.onCancel = () => {\n isLoading = false\n throw new Error(\"Payment was not finished\")\n }\n } catch (err) {\n externalErrorHandler(err)\n }\n }\n</script>\n\n\n<div class=\"crtw-w-full crtw-text-center crtw-my-5\">\n <Button\n text={`Pay with Paystack`}\n onClick={doPayment}\n disabled={false}\n isLoading={false}\n />\n</div>\n","<script lang=\"ts\">\n import { Pages } from '@packages/utils/enums'\n import { onDestroy } from 'svelte'\n\n import { pageOptsStore, userStore, pageStore } from '@packages/stores'\n import { dispatch, PassportEvents } from '@lib/events/events'\n import { Payment } from '@packages/ui'\n import Stripe from './stripe/Stripe.svelte'\n import { getSuiCredCoinType, getSellableConfigId, getSuiObject, getAssetPrice } from '@src/utils/blockchain'\n import type { TSuiPaymentItem } from '@app/types'\n import { toastAlert } from '@src/passport/ui'\n import CredenzaBalance from './credenza-balance/CredenzaBalance.svelte'\n import { SUI_CRED_DECIMALS } from '@src/constants/blockchain'\n import { AssetType, CardPaymentProvider } from './payment.constants'\n import { getClientConfigByClientId } from '@lib/clients'\n import { configStore } from '@src/stores/config'\n import { get } from 'svelte/store'\n import Paystack from './paystack/Paystack.svelte'\n import Button from '@packages/ui/main/shared/inputs/button/Button.svelte'\n import { initSuiClient } from '@src/libs/sui'\n\n let isPriceLoading: boolean = false\n let isLoading: boolean = false\n let pricesByAsset: number[] = []\n\n let totalSumCentsUSD: number = 0\n let totalSumCentsGHS: number = 0\n let totalSumCoins: number = 0\n\n let cardPaymentProvider = CardPaymentProvider.STRIPE\n\n const getTokenPrice = async (packageId: string, type: string, assetId?: string): Promise<[number, number]> => {\n if (assetId && type === AssetType.CREDENZA_ASSET_COLLECTION) {\n return await getAssetPrice(packageId, assetId)\n }\n\n const sellableConfigId = await getSellableConfigId(packageId, type)\n const sellableObj = await getSuiObject(sellableConfigId)\n\n const {\n content: {\n fields: { price_fiat, price_coin },\n },\n } = sellableObj\n return [+price_fiat, +price_coin]\n }\n\n const getCredPrice = async (packageId: string, type: string) => {\n const sellableConfigId = await getSellableConfigId(packageId, type)\n const { suiNetwork } = get(configStore)\n const client = await initSuiClient(packageId, suiNetwork)\n\n const priceCentsUSD = await client.Sellable.getPriceFiat(sellableConfigId, \"USD\")\n let priceCentsGHS = 0\n\n if (getClientConfigByClientId(get(configStore).clientId).payment.paystack) {\n priceCentsGHS = await client.Sellable.getPriceFiat(sellableConfigId, \"GHS\")\n }\n return [priceCentsUSD, priceCentsGHS]\n }\n\n const calculateTotalPrice = async (assets: TSuiPaymentItem[]): Promise<void> => {\n try {\n isPriceLoading = true\n\n for (const asset of assets) {\n const { packageId, type, amount, assetId } = asset\n const packageIdWCoinType = `${packageId}::${type}::${type.toUpperCase()}`\n if (packageIdWCoinType === getSuiCredCoinType() && amount) {\n const [priceCentsUSD, priceCentsGHS] = await getCredPrice(packageId, type)\n totalSumCentsUSD += amount * priceCentsUSD\n totalSumCentsGHS += amount * priceCentsGHS\n } else {\n let [cents, coins] = await getTokenPrice(packageId, type, assetId)\n if (amount && amount !== 0) {\n cents *= amount\n coins *= amount\n }\n\n totalSumCentsUSD += cents\n totalSumCoins += coins / SUI_CRED_DECIMALS\n\n pricesByAsset.push(coins / SUI_CRED_DECIMALS)\n }\n }\n } catch (err) {\n console.log(err)\n toastAlert('Error calculating the price', 'failure')\n dispatch(PassportEvents.ERROR, err)\n } finally {\n isPriceLoading = false\n }\n }\n\n const unsub = pageOptsStore.subscribe(async (store) => {\n if (!store?.assets || !store.assets.length) return\n await calculateTotalPrice(store.assets)\n })\n\n const onChangeCardProvider = () => {\n if (cardPaymentProvider === CardPaymentProvider.PAYSTACK) {\n cardPaymentProvider = CardPaymentProvider.STRIPE;\n } else {\n cardPaymentProvider = CardPaymentProvider.PAYSTACK;\n }\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: !totalSumCentsUSD || $pageOptsStore.payments?.credenzaStoredValue?.disabled,\n isPriceLoading,\n totalSumCents: totalSumCentsUSD,\n }}\n>\n <div slot=\"card-provider-switch\" class=\"crtw-mb-[15px]\">\n {#if getClientConfigByClientId(get(configStore).clientId).payment.paystack}\n <Button\n text={`Try another payment provider`}\n onClick={onChangeCardProvider}\n disabled={false}\n isLoading={false}\n />\n {/if}\n </div>\n <div slot=\"credit-card\">\n {#if cardPaymentProvider === CardPaymentProvider.PAYSTACK}\n <Paystack priceCents={totalSumCentsGHS} purchaseConfig={$pageOptsStore} bind:isLoading/>\n {:else if cardPaymentProvider === CardPaymentProvider.STRIPE}\n <Stripe priceCents={totalSumCentsUSD} {isPriceLoading} purchaseConfig={$pageOptsStore} bind:isLoading />\n {/if}\n </div>\n <div slot=\"cred-balance\">\n <CredenzaBalance\n {pricesByAsset}\n totalPriceToken={totalSumCoins}\n {isPriceLoading}\n purchaseConfig={$pageOptsStore}\n bind:isLoading\n />\n </div>\n\n</Payment>\n"],"names":["LockIcon","onClick","$.prop","$$props","text","disabled","isLoading","$$render","consequent","alternate","isActive","$$args","options","subtitle","onBackClick","isCardDisabled","currencySymbol","activeTab","PaymentViews","isPriceLoading","totalSumCents","isCredezaValueDisabled","$0","$.untrack","$.get","consequent_2","consequent_1","user","title","isPaymentDisabled","totalToPay","isCardFocused","onPay","credAlias","onGetCred","formattedBalance","balance","__awaiter","thisArg","_arguments","P","generator","onMount","stripe","priceCents","paymentRequest","walletPayElement","stripeElements","event","doPayment","err","dispatch","PassportEvents","stripeStyles","loadScript","src","resolve","reject","script","getOrderDetails","apiUrl","orderId","res","get","accessTokenStore","getCompmletedOrderDetails","maxRetries","attempts","validateTxs","txs","message","item","validateOrderItems","orders","errorMessages","requestSuiReceipt","stripeChargeId","digest","amount","currency","credenza","receiptTarget","clientId","configStore","targets","target","userStore","ReceiptTarget","successCount","result","getClientConfigByClientId","afterPaymentProcess","purchaseConfig","config","chain_txs","items","failedOrdersMessage","TransactionTypes","analytics","getAddress","waitVideoEnded","pageOptsStore","pageStore","Pages","enrichAssetsWithMetadata","client","initSuiClient","metadata","fn","Stripe","$.mutable_source","cardElement","isButtonActive","clientName","$.set","_a","handleSubmit","tokenId","processPayment","assets","totalPriceToken","pricesByAsset","asset","index","type","packageId","assetId","paymentRes","buyWithCred","payWithCredenza","_b","toastAlert","getBalance","getCryptoCurrencySymbol","$clientPublicStore","createOrder","paymentData","rest","assetGroups","mapAssetsToGroups","_id","processOrder","data","typeMap","acc","key","entry","Paystack","externalErrorHandler","totalSumCentsUSD","totalSumCentsGHS","totalSumCoins","cardPaymentProvider","CardPaymentProvider","getTokenPrice","AssetType","getAssetPrice","sellableConfigId","getSellableConfigId","sellableObj","getSuiObject","price_fiat","price_coin","getCredPrice","suiNetwork","priceCentsUSD","priceCentsGHS","getSuiCredCoinType","cents","coins","SUI_CRED_DECIMALS","unsub","store","calculateTotalPrice","onChangeCardProvider","onDestroy","module","$.component","node_2","$$anchor","$$component","$userStore","$pageOptsStore","consequent_3"],"mappings":"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"}
@@ -1,355 +0,0 @@
1
- import { c as Ae, p as re, h as xe, f as Q, i as G, k as Me, r as ae, s as Ue, e as Ve, b as V, d as ke, u as he, t as ze, o as me, n as je } from "./legacy-BNwW5YWH.js";
2
- import { z as $e, v as u, I as n, m as i, A as m, J as e, w as Be, x as Fe, K as P, E as l, B as p, C as f, D as se, G as J, y as Te, u as ie, M as we, O as Ke, _ as qe, Q as Ge, bc as ge, bd as _e, S as be, T as ye, $ as Je, be as Qe, N as Se, P as oe, bf as We, bg as Xe } from "./index-CzZFSuqM.js";
3
- import "./scanner.es-DK9KxX60.js";
4
- import { C as Ye } from "./ContentHeader-36qt_g7F.js";
5
- import { B as Ze } from "./ButtonBack-eiZlUP5b.js";
6
- import { B as ce } from "./Button-69xpr_s2.js";
7
- import { I as Ce } from "./Input-DAxd1tLB.js";
8
- import { S as et } from "./scanner-Bm3Pvpfs.js";
9
- import { g as de } from "./strings-B-rKL311.js";
10
- var tt = Q('<div>ChainId: <span class="crtw-font-bold"> </span></div>'), nt = Q('<label class="crtw-text-[10px] crtw-text-warningTextColor cpui-send-tokens-validation-message" for="recipientAddress">Provided address is not valid.</label>'), rt = Q('<div class="crtw-ml-2.5 crtw-w-16 crtw-min-w-16"><!></div>'), at = Q('<!> <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 Re(D, x) {
12
- if (new.target) return Ae({ component: Re, ...D });
13
- $e(x, !1);
14
- const T = i(), z = i(), R = i(), H = i(), w = i(), k = i(), S = i(), O = i(), g = i(), c = i();
15
- let d = re(x, "recipientAddress", 12), v = re(x, "amount", 12), r = re(x, "options", 12), {
16
- onChangeCurrency: L,
17
- onSetMaxAmount: C,
18
- onBackClicked: E,
19
- onSendTokens: h,
20
- title: A,
21
- chainId: j,
22
- onScannerClicked: W,
23
- credAlias: F,
24
- isNativeCurrecyTransferAllowed: K = !0
25
- } = r();
26
- const s = (t) => Math.floor(t * 100) / 100;
27
- u(() => m(r()), () => {
28
- n(T, r().balance);
29
- }), u(() => m(r()), () => {
30
- n(z, r().isLoading);
31
- }), u(() => m(r()), () => {
32
- n(R, r().isSubmitDisabled);
33
- }), u(() => m(r()), () => {
34
- n(H, r().isRecipientAddressValid);
35
- }), u(() => m(r()), () => {
36
- n(w, r().isScannerHidden);
37
- }), u(() => m(r()), () => {
38
- n(k, r().activeCurrency);
39
- }), u(() => m(r()), () => {
40
- n(S, r().symbol);
41
- }), u(() => m(r()), () => {
42
- n(O, r().nativeSymbol);
43
- }), u(() => m(r()), () => {
44
- n(g, r().nativeBalance);
45
- }), u(() => e(k), () => {
46
- n(c, de(e(k), F));
47
- }), Be(), xe();
48
- var a = at(), _ = Fe(a);
49
- {
50
- let t = P(() => e(w) ? "" : "Scan Passport Id");
51
- Ye(_, {
52
- get text() {
53
- return A;
54
- },
55
- get description() {
56
- return e(t);
57
- }
58
- });
59
- }
60
- var b = l(_, 2), q = p(b);
61
- let $;
62
- var I = l(q, 2);
63
- {
64
- var X = (t) => {
65
- var o = tt(), B = l(p(o)), ne = p(B, !0);
66
- f(B), f(o), se(() => ae(ne, j)), V(t, o);
67
- };
68
- G(I, (t) => {
69
- j && t(X);
70
- });
71
- }
72
- var M = l(I, 2), N = l(p(M)), y = p(N);
73
- {
74
- var U = (t) => {
75
- var o = ze();
76
- se((B) => ae(o, `${B ?? ""} ${e(O) ?? ""} /`), [
77
- () => (e(g), J(() => s(+e(g))))
78
- ]), V(t, o);
79
- };
80
- G(y, (t) => {
81
- K && t(U);
82
- });
83
- }
84
- var Ee = l(y);
85
- f(N), f(M);
86
- var Y = l(M, 2), Z = p(Y), le = p(Z);
87
- Ce(le, {
88
- name: "recipientAddress",
89
- type: "text",
90
- placeholder: "Address 0x...",
91
- get value() {
92
- return d();
93
- },
94
- set value(t) {
95
- d(t);
96
- },
97
- $$legacy: !0
98
- });
99
- var Ie = l(le, 2);
100
- {
101
- var Le = (t) => {
102
- var o = nt();
103
- V(t, o);
104
- };
105
- G(Ie, (t) => {
106
- d() && !e(H) && t(Le);
107
- });
108
- }
109
- f(Z);
110
- var ue = l(Z, 2), ve = p(ue);
111
- f(ue), f(Y);
112
- var ee = l(Y, 2), pe = p(ee);
113
- {
114
- let t = P(() => `${e(c)} amount`);
115
- Ce(pe, {
116
- type: "number",
117
- min: "0",
118
- step: "0.001",
119
- get placeholder() {
120
- return e(t);
121
- },
122
- get value() {
123
- return v();
124
- },
125
- set value(o) {
126
- v(o);
127
- },
128
- $$legacy: !0
129
- });
130
- }
131
- var te = l(pe, 2), Ne = p(te);
132
- {
133
- let t = P(() => +e(T) <= 0);
134
- ce(Ne, {
135
- get onClick() {
136
- return C;
137
- },
138
- text: "MAX",
139
- get disabled() {
140
- return e(t);
141
- }
142
- });
143
- }
144
- f(te);
145
- var Pe = l(te, 2);
146
- {
147
- var De = (t) => {
148
- var o = rt(), B = p(o);
149
- {
150
- let ne = P(() => !e(k));
151
- ce(B, {
152
- get onClick() {
153
- return L;
154
- },
155
- get text() {
156
- return e(c);
157
- },
158
- get disabled() {
159
- return e(ne);
160
- }
161
- });
162
- }
163
- f(o), V(t, o);
164
- };
165
- G(Pe, (t) => {
166
- K && t(De);
167
- });
168
- }
169
- f(ee);
170
- var He = l(ee, 2);
171
- {
172
- let t = P(() => `Send ${v() || ""} ${e(c)}`);
173
- ce(He, {
174
- get onClick() {
175
- return h;
176
- },
177
- get text() {
178
- return e(t);
179
- },
180
- get isLoading() {
181
- return e(z);
182
- },
183
- get disabled() {
184
- return e(R);
185
- }
186
- });
187
- }
188
- f(b);
189
- var fe = l(b, 2), Oe = p(fe);
190
- return Ze(Oe, {
191
- get onClick() {
192
- return E;
193
- }
194
- }), f(fe), se(
195
- (t, o, B) => {
196
- $ = Me(q, 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, $, t), ae(Ee, ` ${o ?? ""} ${B ?? ""}`), Ue(ve, "src", et);
197
- },
198
- [
199
- () => ({
200
- "crtw-hidden": e(w),
201
- "crtw-z-[-1]": e(w)
202
- }),
203
- () => (e(T), J(() => s(+e(T)))),
204
- () => (m(de), e(S), J(() => de(e(S), F)))
205
- ]
206
- ), Ve("click", ve, W), V(D, a), Te({
207
- get recipientAddress() {
208
- return d();
209
- },
210
- set recipientAddress(t) {
211
- d(t), ie();
212
- },
213
- get amount() {
214
- return v();
215
- },
216
- set amount(t) {
217
- v(t), ie();
218
- },
219
- get options() {
220
- return r();
221
- },
222
- set options(t) {
223
- r(t), ie();
224
- },
225
- $set: he,
226
- $on: (t, o) => ke(x, t, o)
227
- });
228
- }
229
- function st(D, x) {
230
- if (new.target) return Ae({ component: st, ...D });
231
- $e(x, !1);
232
- const [T, z] = je(), R = () => me(qe, "$configStore", T), H = () => me(Je, "$clientPublicStore", T), w = i(), k = i();
233
- var S = this && this.__awaiter || function(s, a, _, b) {
234
- function q($) {
235
- return $ instanceof _ ? $ : new _(function(I) {
236
- I($);
237
- });
238
- }
239
- return new (_ || (_ = Promise))(function($, I) {
240
- function X(y) {
241
- try {
242
- N(b.next(y));
243
- } catch (U) {
244
- I(U);
245
- }
246
- }
247
- function M(y) {
248
- try {
249
- N(b.throw(y));
250
- } catch (U) {
251
- I(U);
252
- }
253
- }
254
- function N(y) {
255
- y.done ? $(y.value) : q(y.value).then(X, M);
256
- }
257
- N((b = b.apply(s, a || [])).next());
258
- });
259
- };
260
- const { toastAlert: O } = we(Ke);
261
- let g = i(""), c = i(), d = i("");
262
- const v = "CRED";
263
- let r = i("");
264
- const L = "SUI";
265
- let C = i(""), E = i(!0), h = i(!1), A;
266
- const j = () => S(void 0, void 0, void 0, function* () {
267
- const { Scanner: s } = yield import("./scanner.es-DK9KxX60.js");
268
- A = new s({ target: "#cpuiCredScanner" }), We(oe.UI_CLOSED, A.close), yield A.scan(), A.on(s.events.CAPTURE, (a) => S(void 0, [a], void 0, function* ({ sub: _ }) {
269
- const { address: b } = yield Xe(_);
270
- n(g, b), A.close();
271
- })), A.on(s.events.CANCEL, () => n(E, !0)), A.on(s.events.ERROR, (a) => {
272
- (a?.message || a).includes("Permission") && alert("In order to scan please allow the current page to access your camera and try again."), n(E, !0);
273
- }), n(E, !1);
274
- }), W = () => S(void 0, void 0, void 0, function* () {
275
- n(h, !0);
276
- const s = e(d) === L;
277
- try {
278
- yield Qe({
279
- address: e(g),
280
- amount: e(c),
281
- isSuiNativeCoinTransfer: s
282
- }), O("Send operation was completed."), n(g, ""), n(c, 0), setTimeout(
283
- () => S(void 0, void 0, void 0, function* () {
284
- n(r, yield ge()), n(C, yield _e()), Se(oe.RECHECK_BALANCE);
285
- }),
286
- 1e3
287
- );
288
- } catch (a) {
289
- console.log(a), Se(oe.ERROR, { error: a }), O(a?.message || a || "An error occurred while sending tokens", "failure");
290
- }
291
- n(h, !1);
292
- }), F = () => S(void 0, void 0, void 0, function* () {
293
- const s = we(Ge);
294
- n(g, s?.to || ""), n(c, s?.amount || void 0), n(r, yield ge()), n(C, parseFloat(yield _e()).toFixed(4)), n(d, v);
295
- });
296
- u(() => R(), () => {
297
- R().suiNetwork && F();
298
- }), u(() => {
299
- }, () => {
300
- n(w, !0);
301
- }), u(
302
- () => (e(h), e(c), e(w), e(d), e(r), e(C)),
303
- () => {
304
- n(k, e(h) || !e(c) || !e(w) || e(d) === v && e(c) > +e(r) || e(d) === L && e(c) > +e(C));
305
- }
306
- ), Be(), xe();
307
- {
308
- let s = P(() => (e(E), e(r), e(w), m(be), m(ye), e(d), e(c), e(C), e(h), e(k), H(), R(), J(() => ({
309
- title: "Send stored value",
310
- isScannerHidden: e(E),
311
- balance: e(r),
312
- isRecipientAddressValid: e(w),
313
- onScannerClicked: j,
314
- onSendTokens: W,
315
- onBackClicked: () => be.set(ye.WALLET),
316
- onChangeCurrency: () => e(d) === v ? n(d, L) : n(d, v),
317
- onSetMaxAmount: () => e(d) === v ? n(c, +e(r)) : n(c, +e(C)),
318
- isLoading: e(h),
319
- isSubmitDisabled: e(k),
320
- credAlias: H().ui_settings.cred_alias,
321
- activeCurrency: e(d),
322
- symbol: v,
323
- nativeSymbol: L,
324
- isNativeCurrecyTransferAllowed: R().transferTokens?.nativeCurrency !== !1,
325
- nativeBalance: e(C)
326
- }))));
327
- Re(D, {
328
- get options() {
329
- return e(s);
330
- },
331
- get recipientAddress() {
332
- return e(g);
333
- },
334
- set recipientAddress(a) {
335
- n(g, a);
336
- },
337
- get amount() {
338
- return e(c);
339
- },
340
- set amount(a) {
341
- n(c, a);
342
- },
343
- $$legacy: !0
344
- });
345
- }
346
- var K = Te({
347
- $set: he,
348
- $on: (s, a) => ke(x, s, a)
349
- });
350
- return z(), K;
351
- }
352
- export {
353
- st as default
354
- };
355
- //# sourceMappingURL=SendTokens-QbdToxL9.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SendTokens-QbdToxL9.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 { 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 { SendTokens } from '@packages/ui'\n import { configStore } from '@src/stores/config'\n import { getBalance, getNativeSuiBalance, sendTokens } from '@src/passport/blockchain'\n import { getUserAddressBySub } from '@src/Passport.service'\n\n const { toastAlert } = get(fn)\n\n let recipientAddress = ''\n let amount: number\n\n let activeCurrency = ''\n\n const symbol = 'CRED'\n let balance = ''\n\n const nativeSymbol = 'SUI'\n let nativeBalance = ''\n\n let isScannerHidden = true\n let isLoading = false\n\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 isLoading = true\n const isSuiNativeCoinTransfer = activeCurrency === nativeSymbol\n\n try {\n await sendTokens({ address: recipientAddress, amount, isSuiNativeCoinTransfer })\n\n toastAlert(`Send operation was completed.`)\n recipientAddress = ''\n amount = 0\n\n setTimeout(async () => {\n balance = await getBalance()\n nativeBalance = await getNativeSuiBalance()\n dispatch(PassportEvents.RECHECK_BALANCE)\n }, 1000)\n } catch (err) {\n console.log(err)\n dispatch(PassportEvents.ERROR, { error: err })\n toastAlert(err?.message || err || 'An error occurred while sending tokens', 'failure')\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 balance = await getBalance()\n nativeBalance = parseFloat(await getNativeSuiBalance()).toFixed(4)\n activeCurrency = symbol\n }\n\n $: $configStore.suiNetwork && init()\n\n $: isRecipientAddressValid = true\n\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 isScannerHidden,\n balance,\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 isNativeCurrecyTransferAllowed: $configStore.transferTokens?.nativeCurrency !== false,\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","get","fn","$.mutable_source","scanner","Scanner","once","PassportEvents","_a","sub","address","getUserAddressBySub","err","sendTokensToRecipient","isSuiNativeCoinTransfer","sendTokens","getBalance","getNativeSuiBalance","dispatch","toastAlert","init","pageOpts","pageOptsStore","pageStore","Pages"],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- const t = (r, e) => r.toLowerCase() === "cred" ? e : r;
2
- export {
3
- t as g
4
- };
5
- //# sourceMappingURL=strings-B-rKL311.js.map
@@ -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;"}