@arcblock/payment-service 1.29.8 → 1.29.9

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 (179) hide show
  1. package/dist/cf.d.ts +31 -0
  2. package/dist/cf.js +79 -60
  3. package/dist/index.js +163 -44
  4. package/package.json +4 -4
  5. package/web/assets/{account-DETfFe4_.js → account-Clbqiiw3.js} +1 -1
  6. package/web/assets/{action-B_DQJlip.js → action-DENqSeOa.js} +1 -1
  7. package/web/assets/{actions-BtaoyTWt.js → actions-0iWP2mcx.js} +1 -1
  8. package/web/assets/{actions-QPa-8lfB.js → actions-BD9BAp3M.js} +1 -1
  9. package/web/assets/{actions-jxGAdGfb.js → actions-BJDN6Op2.js} +1 -1
  10. package/web/assets/{actions-DJyfN5OU.js → actions-BSNy5bOd.js} +1 -1
  11. package/web/assets/{actions-Bt_jST94.js → actions-CDsj5j8l.js} +1 -1
  12. package/web/assets/{actions-D9MHLBFH.js → actions-CSpJGOX7.js} +1 -1
  13. package/web/assets/{actions-BknL4OyZ.js → actions-CZL47E9r.js} +1 -1
  14. package/web/assets/{actions-EPYeS5p4.js → actions-D3tJgrUn.js} +1 -1
  15. package/web/assets/{actions-BaDh4xWX.js → actions-DGQs8fFF.js} +1 -1
  16. package/web/assets/{add-price-CD-utowo.js → add-price-BpnICuHO.js} +1 -1
  17. package/web/assets/{admin-_nEB-lHn.js → admin-CD8ViZ7D.js} +1 -1
  18. package/web/assets/{assign-CkV5Q2LP.js → assign-0vMUDW_C.js} +1 -1
  19. package/web/assets/{attempts-DySeqBYU.js → attempts-CKlxkJuE.js} +1 -1
  20. package/web/assets/browser-DDv4_sgY.js +1 -0
  21. package/web/assets/{change-payment-CPUCUEER.js → change-payment-gAlRmJpv.js} +1 -1
  22. package/web/assets/{change-plan-CxE-XfWc.js → change-plan-C47wfWH8.js} +1 -1
  23. package/web/assets/{click-boundary-y8dVA_tr.js → click-boundary-CafubiPp.js} +1 -1
  24. package/web/assets/{connect-CC_l_f6Q.js → connect-BHHzrwLA.js} +1 -1
  25. package/web/assets/{copyable-DpX04wZz.js → copyable-QrCyyiou.js} +1 -1
  26. package/web/assets/{create-3SsWCAOC.js → create-0PUtkJZY.js} +1 -1
  27. package/web/assets/{create-BkQAaSvD.js → create-BJ1asdcy.js} +1 -1
  28. package/web/assets/{create-kG09X9gl.js → create-Bgv5ux17.js} +1 -1
  29. package/web/assets/{create-BmcRybZ5.js → create-C7GOgZZM.js} +1 -1
  30. package/web/assets/{create-tYebjhr9.js → create-DNar5UQD.js} +1 -1
  31. package/web/assets/{create-Bs65p5Ne.js → create-ke4FrPx1.js} +1 -1
  32. package/web/assets/{credit-grant-item-list-Bk27jIc7.js → credit-grant-item-list-CeDAM3qV.js} +1 -1
  33. package/web/assets/{credit-overview-DmMSEs14.js → credit-overview-4zh0H02x.js} +2 -2
  34. package/web/assets/{currency-restrictions-DYLv4YyW.js → currency-restrictions-BcEm8W45.js} +1 -1
  35. package/web/assets/{currency-select-DGS-62-L.js → currency-select-B4ieQBvv.js} +1 -1
  36. package/web/assets/{dayjs-B9tvQIKg.js → dayjs-DUTDpcNU.js} +1 -1
  37. package/web/assets/{description-Ym17DL48.js → description-SnR5WxWT.js} +1 -1
  38. package/web/assets/detail-46aLUdJj.js +1 -0
  39. package/web/assets/{detail-Cr2wG4Th.js → detail-B-ceWfZr.js} +1 -1
  40. package/web/assets/detail-B0IHl4MI.js +1 -0
  41. package/web/assets/detail-B8eOBVSQ.js +15 -0
  42. package/web/assets/{detail-DE3OOC5M.js → detail-BO3zglCn.js} +1 -1
  43. package/web/assets/{detail-DG4l2CqN.js → detail-BQpDGZJQ.js} +1 -1
  44. package/web/assets/{detail-CxYQYu_l.js → detail-BXTsnQny.js} +1 -1
  45. package/web/assets/{detail-CT9Unyrf.js → detail-B_lpOomD.js} +1 -1
  46. package/web/assets/{detail-Do9QO5L2.js → detail-Bfnkg0A1.js} +1 -1
  47. package/web/assets/detail-BwH0DwAi.js +1 -0
  48. package/web/assets/{detail-OZeeKI69.js → detail-C1FupF1D.js} +2 -2
  49. package/web/assets/{detail-cwHZbY62.js → detail-CMBRd4Ct.js} +1 -1
  50. package/web/assets/detail-C_Zdfa0y.js +1 -0
  51. package/web/assets/{detail-Cb9HBSMw.js → detail-Cg505nKX.js} +1 -1
  52. package/web/assets/{detail-DB56SG-k.js → detail-CsGZMimg.js} +1 -1
  53. package/web/assets/{detail-K9EVY3r2.js → detail-Ct5QNBqu.js} +1 -1
  54. package/web/assets/{detail-DuO_Jn5X.js → detail-CyMhK5K_.js} +1 -1
  55. package/web/assets/{detail-DuWdZIyp.js → detail-DACnmls3.js} +1 -1
  56. package/web/assets/{detail-BJTcK7mx.js → detail-DCTb8R7F.js} +1 -1
  57. package/web/assets/{detail-DPCTQLOx.js → detail-DNcp_u5S.js} +1 -1
  58. package/web/assets/detail-DbU3p040.js +1 -0
  59. package/web/assets/{detail-D5KRrQDx.js → detail-Tn2R5C8i.js} +1 -1
  60. package/web/assets/{detail-15zxCbV9.js → detail-wU4wNf4s.js} +1 -1
  61. package/web/assets/{drawer-form-Cl0T1Yyt.js → drawer-form-DspWWj3x.js} +1 -1
  62. package/web/assets/{edit-3HUAnaXW.js → edit-Bkj-OTJh.js} +1 -1
  63. package/web/assets/{editor-BF5I0siU.js → editor-AmthipP2.js} +1 -1
  64. package/web/assets/{embed-CsNqeCd0.js → embed-rRKjDoHi.js} +1 -1
  65. package/web/assets/{filter-toolbar-BydfQ-79.js → filter-toolbar-DXGSTq57.js} +1 -1
  66. package/web/assets/{form-DSzMo9UD.js → form-B5WW-lS5.js} +1 -1
  67. package/web/assets/form-BmQlJZ84.js +9 -0
  68. package/web/assets/{form-BGm5NPDn.js → form-CAPjlw7l.js} +1 -1
  69. package/web/assets/{form-CKfKLGXP.js → form-DD-EiA7W.js} +3 -3
  70. package/web/assets/{form-P4luyUpY.js → form-cX026J4G.js} +1 -1
  71. package/web/assets/{gas-Qf0SSUfS.js → gas-nyR96dB0.js} +1 -1
  72. package/web/assets/{generateCategoricalChart-BaWwaXky.js → generateCategoricalChart-BadryV3H.js} +1 -1
  73. package/web/assets/{home-HbrLyxJL.js → home-_eX1aim8.js} +1 -1
  74. package/web/assets/index-BBHMsIxJ.js +1 -0
  75. package/web/assets/{index-Dr_MwbKt.js → index-BQjlhCSt.js} +1 -1
  76. package/web/assets/{index-DPodCQ9c.js → index-BRENdB5m.js} +1 -1
  77. package/web/assets/{index-9xBRL_33.js → index-BTfJ08JU.js} +1 -1
  78. package/web/assets/{index-DgSc1Qy8.js → index-BarN7DfU.js} +17 -17
  79. package/web/assets/index-BhcoukR2.js +1 -0
  80. package/web/assets/index-BturOfxo.js +1 -0
  81. package/web/assets/{index-SYTpMMMH.js → index-BzABukCz.js} +1 -1
  82. package/web/assets/{index-2l22EYw9.js → index-C-RT84yb.js} +1 -1
  83. package/web/assets/{index-C0JaS08f.js → index-C136x0O2.js} +1 -1
  84. package/web/assets/{index-Cw0ugaQL.js → index-CCVDDX0c.js} +1 -1
  85. package/web/assets/index-CDVogp6E.js +1 -0
  86. package/web/assets/{index-Br7_mvEw.js → index-CW8VfoJO.js} +1 -1
  87. package/web/assets/{index-BIoSdRvX.js → index-CbSXdD6E.js} +3 -3
  88. package/web/assets/{index-CdkYrABk.js → index-Cd_BD9TM.js} +1 -1
  89. package/web/assets/index-D-bx9Kam.js +1 -0
  90. package/web/assets/index-D0mynT6_.js +1 -0
  91. package/web/assets/index-DEiuhiEo.js +14 -0
  92. package/web/assets/{index-DE2KzqXl.js → index-DNGmCIRP.js} +1 -1
  93. package/web/assets/{index-CI_EY4YS.js → index-DSe7Dot_.js} +1 -1
  94. package/web/assets/{index-BFML4-2u.js → index-DcddP3R9.js} +1 -1
  95. package/web/assets/index-DcrGSDby.js +1 -0
  96. package/web/assets/{index-fByZjxLy.js → index-DeK5Pqjv.js} +1 -1
  97. package/web/assets/{index-Clbt8nRm.js → index-DoX0A-rP.js} +1 -1
  98. package/web/assets/index-Du0Ieh1F.js +49 -0
  99. package/web/assets/index-Dybqd298.js +1 -0
  100. package/web/assets/index-EXZPddtw.js +1 -0
  101. package/web/assets/{index-Drav4oDH.js → index-Kd_qCyRG.js} +2 -2
  102. package/web/assets/{index-Dc954mDP.js → index-SOzRg0yJ.js} +1 -1
  103. package/web/assets/{index-BMKZToMM.js → index-UYeD8rTJ.js} +2 -2
  104. package/web/assets/{index-DZpJPE1Z.js → index-W2uZUlFs.js} +1 -1
  105. package/web/assets/{index-1y9kjPIr.js → index-XaFn2ySq.js} +1 -1
  106. package/web/assets/{index-fswPX_qe.js → index-YG5oc8O3.js} +1 -1
  107. package/web/assets/{index-B1pTTyGZ.js → index-ajD9Iotk.js} +1 -1
  108. package/web/assets/index-brUCsnBA.js +1 -0
  109. package/web/assets/{index-BP53rZV9.js → index-mn5Zdrtn.js} +1 -1
  110. package/web/assets/index-qulrJQ4J.js +1 -0
  111. package/web/assets/{index.es-BWnfUzLb.js → index.es-C8dcCHdW.js} +1 -1
  112. package/web/assets/{info-card-C1yxhxJG.js → info-card-BvIMFQo5.js} +1 -1
  113. package/web/assets/{info-metric-CNse3r66.js → info-metric-Dl4ZDm0Z.js} +1 -1
  114. package/web/assets/{info-row-group-BeUhWnnY.js → info-row-group-CFuMWJf1.js} +1 -1
  115. package/web/assets/{info-row-DOK2whMn.js → info-row-jI0h_hv4.js} +1 -1
  116. package/web/assets/{libphonenumber-CyphiuxQ.js → libphonenumber-Qs8PCdM-.js} +1 -1
  117. package/web/assets/{link-3eeclTeS.js → link-CmPoIweR.js} +1 -1
  118. package/web/assets/{list-DnePqZ2K.js → list-BdSkPjIa.js} +1 -1
  119. package/web/assets/{list-jHj_5yy3.js → list-CWMEf-_C.js} +1 -1
  120. package/web/assets/{list-C521zE_7.js → list-CkHExntK.js} +1 -1
  121. package/web/assets/{list-CO0X4L3-.js → list-DLB_hd0Q.js} +1 -1
  122. package/web/assets/{list-D-I0msRW.js → list-DVFJwd_I.js} +2 -2
  123. package/web/assets/{list-D1aevUOI.js → list-DaK9287Y.js} +2 -2
  124. package/web/assets/{list-1OG83xc4.js → list-DghnUOc4.js} +1 -1
  125. package/web/assets/{list-CNmzJKIQ.js → list-eFkvVlp5.js} +1 -1
  126. package/web/assets/metadata-BmQTVFku.js +55 -0
  127. package/web/assets/{meter-event-lmNMgmIu.js → meter-event-B1JIhVpb.js} +1 -1
  128. package/web/assets/{metrics-C7U41HWk.js → metrics-UvxyQbUF.js} +1 -1
  129. package/web/assets/{overview-Cs3-8n4e.js → overview-Cxc6WKba.js} +1 -1
  130. package/web/assets/{overview-CH1HnSP-.js → overview-DrMaIptb.js} +1 -1
  131. package/web/assets/{past-due-CGGRZmXY.js → past-due-CUXkxns0.js} +1 -1
  132. package/web/assets/pay-omLYkqRA.js +4 -0
  133. package/web/assets/{payment-method-info-BsOBbA3m.js → payment-method-info-Bsf89VxV.js} +2 -2
  134. package/web/assets/{preview-DjYRpRA8.js → preview-BifsgUGT.js} +1 -1
  135. package/web/assets/{preview-CjYh9dTg.js → preview-C-H8pGVw.js} +1 -1
  136. package/web/assets/{pricing-table-C3Lkhq46.js → pricing-table-B3QOaAB5.js} +2 -2
  137. package/web/assets/{pricing-table-edE6TJGX.js → pricing-table-BUJdtkMq.js} +1 -1
  138. package/web/assets/{product-select-0ScZE2e8.js → product-select-ChEyoJqJ.js} +1 -1
  139. package/web/assets/{recharge-DcPtT8vt.js → recharge-BVT4USAO.js} +1 -1
  140. package/web/assets/{related-credit-grants-BygNGPfb.js → related-credit-grants-JV2ICsR5.js} +22 -22
  141. package/web/assets/{safe-did-address-B0fFbUph.js → safe-did-address-CiG_V6Gy.js} +1 -1
  142. package/web/assets/{source-data-viewer-By_Utay-.js → source-data-viewer-i1q9wNIG.js} +1 -1
  143. package/web/assets/{status-l6pD08fw.js → status-CUVYrUIG.js} +1 -1
  144. package/web/assets/subscription-BYz_k9dq.js +1 -0
  145. package/web/assets/{subscription-Dq22e3D1.js → subscription-DrnSPIfs.js} +1 -1
  146. package/web/assets/table-BrtHemkA.js +1 -0
  147. package/web/assets/{tax-code-select-CWhIIiXi.js → tax-code-select-TS07I0rB.js} +1 -1
  148. package/web/assets/{tax-utils-DqNX34-r.js → tax-utils-bPjALcVG.js} +1 -1
  149. package/web/assets/{uploader-DRXDz_r0.js → uploader-CsQNHG4I.js} +1 -1
  150. package/web/assets/{usage-records-jjJMZ6DI.js → usage-records-DAUQMJAW.js} +1 -1
  151. package/web/assets/{util-mDHAL0lx.js → util-DxXTXkeY.js} +1 -1
  152. package/web/assets/{vendor-arcblock-ChFCRdyx.js → vendor-arcblock-BTCAQSUK.js} +1 -1
  153. package/web/assets/{vendor-blocklet-D_i_QeSo.js → vendor-blocklet-DcLR2Cyf.js} +43 -43
  154. package/web/index.html +1 -1
  155. package/web/assets/browser-DSLTxXlL.js +0 -1
  156. package/web/assets/detail-ASPdMJoW.js +0 -1
  157. package/web/assets/detail-CIx9vkir.js +0 -1
  158. package/web/assets/detail-D5NbV29V.js +0 -1
  159. package/web/assets/detail-DVVzYhdV.js +0 -1
  160. package/web/assets/detail-Dqc0OfCQ.js +0 -1
  161. package/web/assets/detail-uhlID8jD.js +0 -15
  162. package/web/assets/form-BXAuSawq.js +0 -9
  163. package/web/assets/index-0HK7CYm4.js +0 -1
  164. package/web/assets/index-BJ_E6bEO.js +0 -1
  165. package/web/assets/index-Bnyh4rlV.js +0 -1
  166. package/web/assets/index-BoQ7wf3O.js +0 -1
  167. package/web/assets/index-C68x-aau.js +0 -1
  168. package/web/assets/index-C8s2QKoe.js +0 -1
  169. package/web/assets/index-Cn7O-OP7.js +0 -49
  170. package/web/assets/index-DU39aG5u.js +0 -1
  171. package/web/assets/index-DtbqgSK4.js +0 -1
  172. package/web/assets/index-DuRu9NWB.js +0 -14
  173. package/web/assets/index-WMKOiUez.js +0 -1
  174. package/web/assets/index-dmHgoplS.js +0 -1
  175. package/web/assets/index-txVTkoDD.js +0 -1
  176. package/web/assets/metadata-CMSHcSXi.js +0 -55
  177. package/web/assets/pay-CSpHBUh_.js +0 -4
  178. package/web/assets/subscription-DcwhSOpa.js +0 -1
  179. package/web/assets/table-BRU4Enia.js +0 -1
package/dist/index.js CHANGED
@@ -410,6 +410,7 @@ __export(env_exports, {
410
410
  stripePaymentCronTime: () => stripePaymentCronTime,
411
411
  stripeSubscriptionCronTime: () => stripeSubscriptionCronTime,
412
412
  stripeWebhookSecret: () => stripeWebhookSecret,
413
+ stripeWebhookUrl: () => stripeWebhookUrl,
413
414
  subscriptionCronTime: () => subscriptionCronTime,
414
415
  systemMaxPendingAmount: () => systemMaxPendingAmount,
415
416
  tenantModeRaw: () => tenantModeRaw,
@@ -436,7 +437,7 @@ function hasConfig(key) {
436
437
  const v = readConfig(key);
437
438
  return v !== void 0 && v !== "";
438
439
  }
439
- var import_env, activeConfig, numConfig, TRUTHY, FALSY, parseBool, readConfigAny, paymentStatCronTime, subscriptionCronTime, notificationCronTime, expiredSessionCleanupCronTime, notificationCronConcurrency, stripeInvoiceCronTime, stripePaymentCronTime, stripeSubscriptionCronTime, revokeStakeCronTime, meteringSubscriptionDetectionCronTime, overdueDetectionCronTime, overdueThreshold, depositVaultCronTime, creditConsumptionCronTime, vendorStatusCheckCronTime, vendorReturnScanCronTime, iapReconcileCronTime, eventRetryCronTime, quoteCleanupCronTime, vendorTimeoutMinutes, webhookAlertWindowMinutes, webhookAlertMinFailures, shortUrlApiKey, shortUrlDomain, sequelizeOptionsPoolMin, sequelizeOptionsPoolMax, sequelizeOptionsPoolIdle, updateDataConcurrency, stopAcceptingOrders, exchangeRateCacheTTLSeconds, systemMaxPendingAmount, allowChangeLockedPrice, blockletMode, isProduction, nodeEnv, isTestEnv, isDevelopmentEnv, enableDevFakeAuth, tenantModeRaw, blockletAppPid, blockletAppId, blockletAppName, blockletAppUrl, blockletAppHost, blockletAppDir, blockletPort, blockletMountPoints, appStoreWriteEnabled, appStoreSkipSignatureVerify, googlePubsubSkipSignatureVerify, googlePubsubPushServiceAccount, googlePubsubAllowUnverifiedSender, googlePlayWebhookUrl, stripeWebhookSecret, iapReconcileBatchSize, paymentBillingThreshold, paymentMinStakeAmount, paymentDaysUntilDue, paymentDaysUntilCancel, paymentReloadSubscriptionJobs, paymentRateVolatilityThreshold, paymentLivemode, creditLowBalanceThresholdPercentage, creditBatchSize, creditBatchWindowMs, creditQueueConcurrency, exchangeRateCacheTTLFromEnv, sqlLog, sqlBenchmark, cfEnv, isCfWorker, isBlockletServer, env_default;
440
+ var import_env, activeConfig, numConfig, TRUTHY, FALSY, parseBool, readConfigAny, paymentStatCronTime, subscriptionCronTime, notificationCronTime, expiredSessionCleanupCronTime, notificationCronConcurrency, stripeInvoiceCronTime, stripePaymentCronTime, stripeSubscriptionCronTime, revokeStakeCronTime, meteringSubscriptionDetectionCronTime, overdueDetectionCronTime, overdueThreshold, depositVaultCronTime, creditConsumptionCronTime, vendorStatusCheckCronTime, vendorReturnScanCronTime, iapReconcileCronTime, eventRetryCronTime, quoteCleanupCronTime, vendorTimeoutMinutes, webhookAlertWindowMinutes, webhookAlertMinFailures, shortUrlApiKey, shortUrlDomain, sequelizeOptionsPoolMin, sequelizeOptionsPoolMax, sequelizeOptionsPoolIdle, updateDataConcurrency, stopAcceptingOrders, exchangeRateCacheTTLSeconds, systemMaxPendingAmount, allowChangeLockedPrice, blockletMode, isProduction, nodeEnv, isTestEnv, isDevelopmentEnv, enableDevFakeAuth, tenantModeRaw, blockletAppPid, blockletAppId, blockletAppName, blockletAppUrl, blockletAppHost, blockletAppDir, blockletPort, blockletMountPoints, appStoreWriteEnabled, appStoreSkipSignatureVerify, googlePubsubSkipSignatureVerify, googlePubsubPushServiceAccount, googlePubsubAllowUnverifiedSender, googlePlayWebhookUrl, stripeWebhookSecret, stripeWebhookUrl, iapReconcileBatchSize, paymentBillingThreshold, paymentMinStakeAmount, paymentDaysUntilDue, paymentDaysUntilCancel, paymentReloadSubscriptionJobs, paymentRateVolatilityThreshold, paymentLivemode, creditLowBalanceThresholdPercentage, creditBatchSize, creditBatchWindowMs, creditQueueConcurrency, exchangeRateCacheTTLFromEnv, sqlLog, sqlBenchmark, cfEnv, isCfWorker, isBlockletServer, env_default;
440
441
  var init_env = __esm({
441
442
  "../../blocklets/core/api/src/libs/env.ts"() {
442
443
  "use strict";
@@ -518,6 +519,7 @@ var init_env = __esm({
518
519
  googlePubsubAllowUnverifiedSender = () => parseBool(readConfig("GOOGLE_PUBSUB_ALLOW_UNVERIFIED_SENDER"));
519
520
  googlePlayWebhookUrl = () => readConfig("GOOGLE_PLAY_WEBHOOK_URL");
520
521
  stripeWebhookSecret = () => readConfig("STRIPE_WEBHOOK_SECRET");
522
+ stripeWebhookUrl = () => readConfig("STRIPE_WEBHOOK_URL");
521
523
  iapReconcileBatchSize = () => Number(readConfig("IAP_RECONCILE_BATCH_SIZE") ?? "100");
522
524
  paymentBillingThreshold = () => +readConfig("PAYMENT_BILLING_THRESHOLD");
523
525
  paymentMinStakeAmount = () => +readConfig("PAYMENT_MIN_STAKE_AMOUNT");
@@ -1132,6 +1134,10 @@ var init_context = __esm({
1132
1134
  peekInstanceDid() {
1133
1135
  return this.storage.getStore()?.instanceDid;
1134
1136
  }
1137
+ /** Request-scoped externally reachable payment base URL, when supplied by an embedded host. */
1138
+ peekPublicBaseUrl() {
1139
+ return this.storage.getStore()?.publicBaseUrl;
1140
+ }
1135
1141
  /**
1136
1142
  * Run fn as a system operation: TenantModel scoping is bypassed for the span
1137
1143
  * of fn so legitimate cross-tenant reads can load rows regardless of tenant.
@@ -1149,13 +1155,15 @@ var init_context = __esm({
1149
1155
  run(context2, fn3) {
1150
1156
  const requestId = context2.requestId || `req_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
1151
1157
  const instanceDid = context2.instanceDid ?? this.storage.getStore()?.instanceDid;
1158
+ const publicBaseUrl = context2.publicBaseUrl ?? this.storage.getStore()?.publicBaseUrl;
1152
1159
  this.contexts.set(requestId, {
1153
1160
  ...context2,
1154
1161
  instanceDid,
1162
+ publicBaseUrl,
1155
1163
  requestId
1156
1164
  });
1157
1165
  return new Promise((resolve, reject) => {
1158
- this.storage.run({ ...context2, instanceDid, requestId }, async () => {
1166
+ this.storage.run({ ...context2, instanceDid, publicBaseUrl, requestId }, async () => {
1159
1167
  const resource = new import_async_hooks.AsyncResource("RequestContext");
1160
1168
  try {
1161
1169
  const result = await resource.runInAsyncScope(fn3);
@@ -1203,6 +1211,24 @@ var init_logger = __esm({
1203
1211
  }
1204
1212
  });
1205
1213
 
1214
+ // ../../blocklets/core/api/src/libs/secrets.ts
1215
+ function encryptSecret(value) {
1216
+ return getSecretsDriver().encryptSync(getInstanceDid(), value);
1217
+ }
1218
+ function decryptSecret(value) {
1219
+ return getSecretsDriver().decryptSync(getInstanceDid(), value);
1220
+ }
1221
+ function warmupSecrets(instanceDid) {
1222
+ return getSecretsDriver().warmup(instanceDid ?? getInstanceDid());
1223
+ }
1224
+ var init_secrets2 = __esm({
1225
+ "../../blocklets/core/api/src/libs/secrets.ts"() {
1226
+ "use strict";
1227
+ init_context();
1228
+ init_secrets();
1229
+ }
1230
+ });
1231
+
1206
1232
  // ../../blocklets/core/api/src/libs/did-connect/tenant-identity.ts
1207
1233
  var tenant_identity_exports = {};
1208
1234
  __export(tenant_identity_exports, {
@@ -1274,7 +1300,14 @@ async function warmTenantIdentity(instanceDidArg) {
1274
1300
  try {
1275
1301
  await resolveTenantIdentity(instanceDidArg);
1276
1302
  } catch (err) {
1277
- logger_default.warn("[tenant-identity] warm failed \u2014 wallet access will fail-closed", {
1303
+ logger_default.warn("[tenant-identity] wallet identity warm failed \u2014 wallet access will fail-closed", {
1304
+ error: err instanceof Error ? err.message : String(err)
1305
+ });
1306
+ }
1307
+ try {
1308
+ await warmupSecrets(instanceDidArg);
1309
+ } catch (err) {
1310
+ logger_default.warn("[tenant-identity] secrets warm failed \u2014 settings/Stripe decrypt will fail-closed", {
1278
1311
  error: err instanceof Error ? err.message : String(err)
1279
1312
  });
1280
1313
  }
@@ -1299,6 +1332,7 @@ var init_tenant_identity = __esm({
1299
1332
  init_context();
1300
1333
  init_drivers();
1301
1334
  init_logger();
1335
+ init_secrets2();
1302
1336
  walletType = {
1303
1337
  role: Mcrypto.types.RoleType.ROLE_APPLICATION,
1304
1338
  pk: Mcrypto.types.KeyType.ED25519,
@@ -1773,6 +1807,13 @@ var init_auth = __esm({
1773
1807
  });
1774
1808
 
1775
1809
  // ../../blocklets/core/api/src/libs/util.ts
1810
+ function getPublicAssetUrl(assetUrl) {
1811
+ if (!assetUrl || !assetUrl.startsWith("/") || assetUrl.startsWith("//")) return assetUrl;
1812
+ const basePath = readConfig("PAYMENT_PUBLIC_BASE_PATH");
1813
+ if (!basePath) return (0, import_component.getUrl)(assetUrl);
1814
+ if (assetUrl === basePath || assetUrl.startsWith(`${basePath}/`)) return assetUrl;
1815
+ return (0, import_ufo.joinURL)(basePath, assetUrl);
1816
+ }
1776
1817
  function md5(input) {
1777
1818
  return import_crypto2.default.createHash("md5").update(input).digest("hex");
1778
1819
  }
@@ -2197,7 +2238,7 @@ function formatLinkWithLocale(url, locale) {
2197
2238
  return `${url}${separator}locale=${locale}`;
2198
2239
  }
2199
2240
  }
2200
- var import_crypto2, import_stream, import_consumers, import_component, import_env4, import_did, import_cbor, import_nanoid, import_ufo, import_axios, import_util, import_get, import_trimEnd, OCAP_PAYMENT_TX_TYPE, MAX_SUBSCRIPTION_ITEM_COUNT, MAX_RETRY_COUNT, MIN_RETRY_MAIL, CHECKOUT_SESSION_TTL, STRIPE_API_VERSION, STRIPE_ENDPOINT, googlePlayEndpoint, GOOGLE_PLAY_ENDPOINT, APP_STORE_ENDPOINT, STRIPE_EVENTS, api, getNextRetry, getWebhookJobId, cachedBlockletJsonResult, CACHE_TTL, CURRENCY_SYMBOLS;
2241
+ var import_crypto2, import_stream, import_consumers, import_component, import_env4, import_did, import_cbor, import_nanoid, import_ufo, import_axios, import_util, import_get, import_trimEnd, OCAP_PAYMENT_TX_TYPE, MAX_SUBSCRIPTION_ITEM_COUNT, MAX_RETRY_COUNT, MIN_RETRY_MAIL, CHECKOUT_SESSION_TTL, STRIPE_API_VERSION, stripeEndpoint, googlePlayEndpoint, GOOGLE_PLAY_ENDPOINT, APP_STORE_ENDPOINT, STRIPE_EVENTS, api, getNextRetry, getWebhookJobId, cachedBlockletJsonResult, CACHE_TTL, CURRENCY_SYMBOLS;
2201
2242
  var init_util = __esm({
2202
2243
  "../../blocklets/core/api/src/libs/util.ts"() {
2203
2244
  "use strict";
@@ -2215,6 +2256,7 @@ var init_util = __esm({
2215
2256
  import_get = __toESM(require("lodash/get"));
2216
2257
  import_trimEnd = __toESM(require("lodash/trimEnd"));
2217
2258
  init_env();
2259
+ init_context();
2218
2260
  init_dayjs();
2219
2261
  init_auth();
2220
2262
  init_logger();
@@ -2224,7 +2266,13 @@ var init_util = __esm({
2224
2266
  MIN_RETRY_MAIL = 13;
2225
2267
  CHECKOUT_SESSION_TTL = 6 * 60 * 60;
2226
2268
  STRIPE_API_VERSION = "2023-08-16";
2227
- STRIPE_ENDPOINT = (0, import_component.getUrl)("/api/integrations/stripe/webhook");
2269
+ stripeEndpoint = () => {
2270
+ const override = stripeWebhookUrl();
2271
+ if (override) return override;
2272
+ const publicBaseUrl = context.peekPublicBaseUrl();
2273
+ if (publicBaseUrl) return (0, import_ufo.joinURL)(publicBaseUrl, "/api/integrations/stripe/webhook");
2274
+ return (0, import_component.getUrl)("/api/integrations/stripe/webhook");
2275
+ };
2228
2276
  googlePlayEndpoint = () => googlePlayWebhookUrl() || (0, import_component.getUrl)("/api/integrations/google-play/webhook");
2229
2277
  GOOGLE_PLAY_ENDPOINT = googlePlayEndpoint();
2230
2278
  APP_STORE_ENDPOINT = (0, import_component.getUrl)("/api/integrations/app-store/webhook");
@@ -2314,6 +2362,11 @@ var init_payment_currency = __esm({
2314
2362
  init_util();
2315
2363
  nextId = createIdGenerator("pc", 12);
2316
2364
  PaymentCurrency = class _PaymentCurrency extends TenantModel {
2365
+ toJSON() {
2366
+ const data = super.toJSON();
2367
+ if (data.logo) data.logo = getPublicAssetUrl(data.logo);
2368
+ return data;
2369
+ }
2317
2370
  static {
2318
2371
  this.GENESIS_ATTRIBUTES = {
2319
2372
  id: {
@@ -9126,21 +9179,6 @@ var init_payment_link = __esm({
9126
9179
  }
9127
9180
  });
9128
9181
 
9129
- // ../../blocklets/core/api/src/libs/secrets.ts
9130
- function encryptSecret(value) {
9131
- return getSecretsDriver().encryptSync(getInstanceDid(), value);
9132
- }
9133
- function decryptSecret(value) {
9134
- return getSecretsDriver().decryptSync(getInstanceDid(), value);
9135
- }
9136
- var init_secrets2 = __esm({
9137
- "../../blocklets/core/api/src/libs/secrets.ts"() {
9138
- "use strict";
9139
- init_context();
9140
- init_secrets();
9141
- }
9142
- });
9143
-
9144
9182
  // ../../blocklets/core/api/src/integrations/app-store/apple-root-certs.ts
9145
9183
  var APPLE_INC_ROOT_B64, APPLE_ROOT_CA_G2_B64, APPLE_ROOT_CA_G3_B64, APPLE_ROOT_CERTS;
9146
9184
  var init_apple_root_certs = __esm({
@@ -9416,7 +9454,7 @@ function decodeUnsafe(jws) {
9416
9454
  throw new Error(`AppStore JWS payload not valid JSON: ${err.message}`);
9417
9455
  }
9418
9456
  }
9419
- async function getAllSubscriptionStatuses(originalTransactionId, creds) {
9457
+ function getAllSubscriptionStatuses(originalTransactionId, creds) {
9420
9458
  return nativeGetAllSubscriptionStatuses(originalTransactionId, creds);
9421
9459
  }
9422
9460
  var init_signed_data_verifier = __esm({
@@ -9983,6 +10021,11 @@ var init_payment_method = __esm({
9983
10021
  googlePlayClients = /* @__PURE__ */ new Map();
9984
10022
  appStoreClients = /* @__PURE__ */ new Map();
9985
10023
  PaymentMethod = class _PaymentMethod extends TenantModel {
10024
+ toJSON() {
10025
+ const data = super.toJSON();
10026
+ if (data.logo) data.logo = getPublicAssetUrl(data.logo);
10027
+ return data;
10028
+ }
9986
10029
  static {
9987
10030
  this.GENESIS_ATTRIBUTES = {
9988
10031
  id: {
@@ -10078,11 +10121,13 @@ var init_payment_method = __esm({
10078
10121
  }
10079
10122
  static encryptSettings(settings) {
10080
10123
  const tmp = (0, import_cloneDeep3.default)(settings);
10081
- if (tmp.stripe) {
10124
+ if (tmp.stripe?.secret_key) {
10082
10125
  tmp.stripe.secret_key = encryptSecret(tmp.stripe.secret_key);
10126
+ }
10127
+ if (tmp.stripe?.webhook_signing_secret) {
10083
10128
  tmp.stripe.webhook_signing_secret = encryptSecret(tmp.stripe.webhook_signing_secret);
10084
10129
  }
10085
- if (tmp.google_play) {
10130
+ if (tmp.google_play?.service_account_json) {
10086
10131
  tmp.google_play.service_account_json = encryptSecret(tmp.google_play.service_account_json);
10087
10132
  }
10088
10133
  if (tmp.app_store?.private_key_pem) {
@@ -10095,11 +10140,13 @@ var init_payment_method = __esm({
10095
10140
  }
10096
10141
  static decryptSettings(settings) {
10097
10142
  const tmp = (0, import_cloneDeep3.default)(settings);
10098
- if (tmp.stripe) {
10143
+ if (tmp.stripe?.secret_key) {
10099
10144
  tmp.stripe.secret_key = decryptSecret(tmp.stripe.secret_key);
10145
+ }
10146
+ if (tmp.stripe?.webhook_signing_secret) {
10100
10147
  tmp.stripe.webhook_signing_secret = decryptSecret(tmp.stripe.webhook_signing_secret);
10101
10148
  }
10102
- if (tmp.google_play) {
10149
+ if (tmp.google_play?.service_account_json) {
10103
10150
  tmp.google_play.service_account_json = decryptSecret(tmp.google_play.service_account_json);
10104
10151
  }
10105
10152
  if (tmp.app_store?.private_key_pem) {
@@ -10145,7 +10192,7 @@ var init_payment_method = __esm({
10145
10192
  const host = this.settings.arcblock?.api_host;
10146
10193
  const cached = ocapClients.has(host);
10147
10194
  if (!cached) {
10148
- const created = new import_client.default(host);
10195
+ const created = new import_client.default(host, false);
10149
10196
  ocapClients.set(host, created);
10150
10197
  return created;
10151
10198
  }
@@ -15924,6 +15971,18 @@ function sessionMiddleware(options = {}) {
15924
15971
  } catch (err) {
15925
15972
  return c.json({ error: err.message }, 401);
15926
15973
  }
15974
+ if (!result) {
15975
+ const injectedDid = c.req.header("x-user-did");
15976
+ if (injectedDid) {
15977
+ result = {
15978
+ did: injectedDid,
15979
+ role: c.req.header("x-user-role"),
15980
+ provider: c.req.header("x-user-provider"),
15981
+ fullName: decodeURIComponent(c.req.header("x-user-fullname") || ""),
15982
+ walletOS: c.req.header("x-user-wallet-os") || ""
15983
+ };
15984
+ }
15985
+ }
15927
15986
  if (result) {
15928
15987
  c.set("user", result);
15929
15988
  }
@@ -22781,10 +22840,11 @@ __export(notification_exports, {
22781
22840
  ensureBlockletSdkTransportGuard: () => ensureBlockletSdkTransportGuard
22782
22841
  });
22783
22842
  function noopSdkTransport(mod, fns) {
22784
- const noop = async () => void 0;
22843
+ const noop = () => Promise.resolve(void 0);
22785
22844
  for (const target of [mod, mod?.default]) {
22786
- if (!target) continue;
22787
- for (const fn3 of fns) target[fn3] = noop;
22845
+ if (target) {
22846
+ for (const fn3 of fns) target[fn3] = noop;
22847
+ }
22788
22848
  }
22789
22849
  }
22790
22850
  function ensureBlockletSdkTransportGuard() {
@@ -47455,7 +47515,7 @@ async function ensureWebhookRegistered() {
47455
47515
  const exist = data.find((webhook) => webhook.metadata?.appPid === import_env29.env.appPid);
47456
47516
  if (exist) {
47457
47517
  await stripe.webhookEndpoints.update(exist.id, {
47458
- url: STRIPE_ENDPOINT,
47518
+ url: stripeEndpoint(),
47459
47519
  description: import_env29.env.appName,
47460
47520
  enabled_events: STRIPE_EVENTS,
47461
47521
  disabled: false
@@ -47463,7 +47523,7 @@ async function ensureWebhookRegistered() {
47463
47523
  logger_default.info("stripe webhook updated");
47464
47524
  } else {
47465
47525
  const result = await stripe.webhookEndpoints.create({
47466
- url: STRIPE_ENDPOINT,
47526
+ url: stripeEndpoint(),
47467
47527
  description: import_env29.env.appName,
47468
47528
  enabled_events: STRIPE_EVENTS,
47469
47529
  api_version: STRIPE_API_VERSION,
@@ -47609,7 +47669,9 @@ var init_payment_methods = __esm({
47609
47669
  metadata: {}
47610
47670
  });
47611
47671
  await method.update({ default_currency_id: currency.id });
47612
- ensureWebhookRegistered().catch(console.error);
47672
+ ensureWebhookRegistered().catch(
47673
+ (err) => logger_default.error("ensureWebhookRegistered failed (payments may not reconcile in real-time)", err)
47674
+ );
47613
47675
  return c.json({ ...method.toJSON(), payment_currencies: [currency.toJSON()] });
47614
47676
  }
47615
47677
  if (EVM_CHAIN_TYPES.includes(raw.type)) {
@@ -47972,7 +48034,9 @@ var init_payment_methods = __esm({
47972
48034
  }
47973
48035
  const updatedMethod = await method.update(updateData);
47974
48036
  if (method.type === "stripe") {
47975
- ensureWebhookRegistered().catch(console.error);
48037
+ ensureWebhookRegistered().catch(
48038
+ (err) => logger_default.error("ensureWebhookRegistered failed (payments may not reconcile in real-time)", err)
48039
+ );
47976
48040
  }
47977
48041
  return c.json(updatedMethod);
47978
48042
  } catch (err) {
@@ -60846,7 +60910,7 @@ var init_entitlements = __esm({
60846
60910
  init_logger();
60847
60911
  init_security();
60848
60912
  app26 = new import_hono26.Hono();
60849
- auth18 = authenticate({ component: true, roles: ["owner", "admin"], ensureLogin: true });
60913
+ auth18 = authenticate({ component: true, ensureLogin: true });
60850
60914
  checkQuerySchema = import_joi25.default.object({
60851
60915
  customer_did: import_joi25.default.string().required(),
60852
60916
  product_id: import_joi25.default.string().required(),
@@ -67618,6 +67682,29 @@ var init_collect_batch = __esm({
67618
67682
  }
67619
67683
  });
67620
67684
 
67685
+ // ../../blocklets/core/api/src/libs/arcblock-transfer.ts
67686
+ async function encodeArcblockTransfer({
67687
+ chainHost,
67688
+ tx,
67689
+ wallet: wallet2
67690
+ }) {
67691
+ const context2 = await (0, import_encode.fetchContext)(chainHost);
67692
+ return (0, import_encode.encodeTx)({
67693
+ type: "TransferV3Tx",
67694
+ tx,
67695
+ wallet: wallet2,
67696
+ chainId: context2.chainId,
67697
+ feeConfig: context2.txFee
67698
+ });
67699
+ }
67700
+ var import_encode;
67701
+ var init_arcblock_transfer = __esm({
67702
+ "../../blocklets/core/api/src/libs/arcblock-transfer.ts"() {
67703
+ "use strict";
67704
+ import_encode = require("@ocap/client/encode");
67705
+ }
67706
+ });
67707
+
67621
67708
  // ../../blocklets/core/api/src/libs/chain-error.ts
67622
67709
  function parseChainError(err) {
67623
67710
  const msg = err?.message ?? String(err);
@@ -67662,6 +67749,7 @@ var init_pay = __esm({
67662
67749
  init_token();
67663
67750
  init_tx();
67664
67751
  init_auth();
67752
+ init_arcblock_transfer();
67665
67753
  init_logger();
67666
67754
  init_chain_error();
67667
67755
  init_payment();
@@ -67769,20 +67857,30 @@ var init_pay = __esm({
67769
67857
  }
67770
67858
  if (paymentMethod.type === "arcblock") {
67771
67859
  try {
67772
- await paymentIntent.update({ status: "processing" });
67773
67860
  const client = paymentMethod.getOcapClient();
67774
67861
  const claim = claims.find((x) => x.type === "prepareTx");
67775
- await client.getContext();
67776
67862
  const tx = client.decodeTx(claim.finalTx);
67777
67863
  if (claim.delegator && claim.from) {
67778
67864
  tx.delegator = claim.delegator;
67779
67865
  tx.from = claim.from;
67780
67866
  }
67781
- const { buffer: buffer2 } = await client.encodeTransferV3Tx({ tx });
67867
+ const chainHost = paymentMethod.settings.arcblock?.api_host;
67868
+ if (!chainHost) {
67869
+ throw new Error("ArcBlock payment method API host is missing");
67870
+ }
67871
+ const signingWallet = (0, import_wallet5.fromAddress)(userDid);
67872
+ const { object: encodedTx, buffer: buffer2 } = await encodeArcblockTransfer({
67873
+ chainHost,
67874
+ tx,
67875
+ wallet: signingWallet
67876
+ });
67877
+ const gasPayerExtra = await getGasPayerExtra(buffer2, client.pickGasPayerHeaders(request), client);
67878
+ await paymentIntent.update({ status: "processing" });
67782
67879
  const txHash = await client.sendTransferV3Tx(
67783
- // @ts-ignore
67784
- { tx, wallet: (0, import_wallet5.fromAddress)(userDid) },
67785
- await getGasPayerExtra(buffer2, client.pickGasPayerHeaders(request), client)
67880
+ // Passing the already-encoded signature skips the client's timer-backed
67881
+ // encodeTransferV3Tx/getContext path in Cloudflare Workers.
67882
+ { tx: encodedTx, wallet: signingWallet, signature: encodedTx.signature },
67883
+ gasPayerExtra
67786
67884
  );
67787
67885
  const quoteValidation = await validateQuoteForPayment({
67788
67886
  checkoutSessionId: checkoutSession?.id,
@@ -77304,6 +77402,7 @@ function csrfSecret() {
77304
77402
  }
77305
77403
  function csrf() {
77306
77404
  return async (c, next) => {
77405
+ if (readConfig("PAYMENT_DISABLE_CSRF") === "true") return next();
77307
77406
  const method = c.req.method.toUpperCase();
77308
77407
  const loginToken = (0, import_cookie.getCookie)(c, "login_token");
77309
77408
  const existingCsrf = (0, import_cookie.getCookie)(c, "x-csrf-token");
@@ -77566,10 +77665,18 @@ function buildConnectRoutesHono() {
77566
77665
  const connectApp = new import_hono43.Hono();
77567
77666
  connectApp.use("*", async (c, next) => {
77568
77667
  const { context: requestCtx } = (init_context(), __toCommonJS(context_exports));
77569
- if (requestCtx.peekInstanceDid()) return next();
77668
+ const { warmTenantIdentity: warmTenantIdentity2 } = (init_tenant_identity(), __toCommonJS(tenant_identity_exports));
77669
+ const preResolved = requestCtx.peekInstanceDid();
77670
+ if (preResolved) {
77671
+ await warmTenantIdentity2(preResolved);
77672
+ return next();
77673
+ }
77570
77674
  const { resolveTenantForHost: resolveTenantForHost2 } = (init_identity(), __toCommonJS(identity_exports));
77571
77675
  const instanceDid = await resolveTenantForHost2(c.req.header("host"));
77572
- return requestCtx.withTenant(instanceDid, () => next());
77676
+ return requestCtx.withTenant(instanceDid, async () => {
77677
+ await warmTenantIdentity2(instanceDid);
77678
+ return next();
77679
+ });
77573
77680
  });
77574
77681
  for (const h of connectHandlerModules()) handlers2.attach(Object.assign({ app: connectApp }, h));
77575
77682
  return connectApp;
@@ -77661,8 +77768,20 @@ async function provisionTenant(instanceDid) {
77661
77768
  const { fromTokenToUnit: fromTokenToUnit31 } = require("@ocap/util");
77662
77769
  const { PaymentMethod: PaymentMethod3, PaymentCurrency: PaymentCurrency3 } = (init_models(), __toCommonJS(models_exports));
77663
77770
  const CHAINS = [
77664
- { chainId: "main", livemode: true, symbol: "ABT", label: "ArcBlock Main", contract: "z35nNRvYxBoHitx9yZ5ATS88psfShzPPBLxYD" },
77665
- { chainId: "beta", livemode: false, symbol: "TBA", label: "ArcBlock Beta", contract: "z35n6UoHSi9MED4uaQy6ozFgKPaZj2UKrurBG" }
77771
+ {
77772
+ chainId: "main",
77773
+ livemode: true,
77774
+ symbol: "ABT",
77775
+ label: "ArcBlock Main",
77776
+ contract: "z35nNRvYxBoHitx9yZ5ATS88psfShzPPBLxYD"
77777
+ },
77778
+ {
77779
+ chainId: "beta",
77780
+ livemode: false,
77781
+ symbol: "TBA",
77782
+ label: "ArcBlock Beta",
77783
+ contract: "z35n6UoHSi9MED4uaQy6ozFgKPaZj2UKrurBG"
77784
+ }
77666
77785
  ];
77667
77786
  await context.withTenant(instanceDid, async () => {
77668
77787
  const existing = await PaymentMethod3.findOne({ where: { type: "arcblock" } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcblock/payment-service",
3
- "version": "1.29.8",
3
+ "version": "1.29.9",
4
4
  "description": "Embedded payment service factory (W2) — side-effect-free core for arc / blocklet server / standalone worker hosts",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -44,9 +44,9 @@
44
44
  "@blocklet/constant": "^1.17.13-beta-20260613-094425-b81920c8",
45
45
  "@blocklet/error": "^0.3.5",
46
46
  "@blocklet/logger": "^1.17.13-beta-20260613-094425-b81920c8",
47
- "@blocklet/payment-vendor": "1.29.8",
47
+ "@blocklet/payment-vendor": "1.29.9",
48
48
  "@blocklet/sdk": "^1.17.13-beta-20260613-094425-b81920c8",
49
- "@blocklet/xss": "^0.3.16",
49
+ "@blocklet/xss": "^0.15.4",
50
50
  "@hono/node-server": "^2.0.4",
51
51
  "@ocap/asset": "^1.30.24",
52
52
  "@ocap/client": "^1.30.24",
@@ -90,5 +90,5 @@
90
90
  "ts-jest": "^29.1.2",
91
91
  "typescript": "^5.4.3"
92
92
  },
93
- "gitHead": "547c0614f1f83abad80ea08452d2f5a9f4f5aa07"
93
+ "gitHead": "249bd9bf3c6cc54f77c260edb4b4d3c0be60f126"
94
94
  }
@@ -1 +1 @@
1
- import{r as s,j as e,B as m,w as pe,x as R,bv as N,A as ge,a3 as i,q as n,N as fe,bL as be,bx as ye,$ as p,bg as I,bl as V,a2 as je,Y as ve,bf as ee}from"./vendor-mui-BXZut9Pz.js";import{e as Ce,b as Re,a as Se}from"./vendor-react-BPknnnEA.js";import{V as we,ae as ke,G as X,F as q,Y as H,E as Ae}from"./vendor-blocklet-D_i_QeSo.js";import{a as Ne,u as Be,i as Ie,a4 as Pe,a8 as Te,f as Ee,e as J,k as K,l as Fe,G as De}from"./index-DgSc1Qy8.js";import{R as Me}from"./recharge-DcPtT8vt.js";import{g as B,M as Q}from"./util-mDHAL0lx.js";import{f as S}from"./dayjs-B9tvQIKg.js";import{u as We}from"./browser-DSLTxXlL.js";import"./table-BRU4Enia.js";import"./lodash-B4Ozcv0x.js";const _e=ee(i)(({theme:t})=>({marginBottom:t.spacing(3),gap:t.spacing(3),flexDirection:"column"})),Z=ee(I)(({theme:t})=>({padding:t.spacing(2),backgroundColor:t.palette.background.paper,border:`1px solid ${t.palette.divider}`,borderRadius:t.shape.borderRadius,marginBottom:t.spacing(2)}));function He(){const{t,locale:P}=we(),{currencyId:u}=Ce(),[re]=Re(),w=We(),T=re.get("rechargeAddress"),E=Se(),{connect:k}=Ne(),[a,g]=s.useState("50"),[f,te]=s.useState(""),[F,D]=s.useState(!0),[M,W]=s.useState(""),_=s.useRef(null),[h,oe]=s.useState({amount:"0",interval:"month",cycle:1}),[z,se]=s.useState(null),[d,L]=s.useState(!1),[ne,$]=s.useState([]),{session:b}=Be(),[o,ae]=s.useState(null),[O,ce]=s.useState([]),y=T||z?.paymentAddress||b?.user?.did,Y=async()=>{try{if(D(!0),!u){E("/customer");return}const{data:r}=await J.get(`/api/customers/recharge?currencyId=${u}`);if(r.currency){if(ae(r.currency),ce(r.relatedSubscriptions||[]),r.recommendedRecharge&&r.recommendedRecharge.amount&&r.recommendedRecharge.amount!=="0"){const c=r.recommendedRecharge.amount,v=r.currency.decimal||0,C=A=>{const xe=X(new q(c).mul(new q(String(A))).toString(),v);return Math.ceil(parseFloat(xe)).toString()};oe({amount:X(c,v),interval:r.recommendedRecharge.interval,cycle:r.recommendedRecharge.cycle});const U=[{amount:C(1),multiplier:r.recommendedRecharge.cycle,label:t("common.estimatedDuration",{duration:S(1,r.recommendedRecharge.interval,{t})})},{amount:C(4),multiplier:r.recommendedRecharge.cycle*4,label:t("common.estimatedDuration",{duration:S(4,r.recommendedRecharge.interval,{t})})},{amount:C(8),multiplier:r.recommendedRecharge.cycle*8,label:t("common.estimatedDuration",{duration:S(8,r.recommendedRecharge.interval,{t})})}];$(U);const G=C(4);!d&&!U.find(A=>A.amount===G)&&g(G)}else $([{amount:"10",multiplier:0,label:""},{amount:"50",multiplier:0,label:""},{amount:"100",multiplier:0,label:""}]);if(["arcblock","ethereum","base"].includes(r.currency?.paymentMethod?.type)){const c=await J.get(`/api/customers/payer-token?currencyId=${u}&payerAddress=${y}`);c?.data&&se(c.data)}}else W(t("customer.balance.currency.notFound"))}catch(r){W(K(r)||t("common.fetchError")),console.error(r)}finally{D(!1)}},j=s.useRef(null);s.useEffect(()=>{Y()},[u]),s.useEffect(()=>{j.current&&o&&setTimeout(()=>{if(j.current){const r=j.current.getBoundingClientRect(),c=window.scrollY+r.top-120;window.scrollTo({top:c,behavior:"smooth"})}},200)},[o,F]);const ie=()=>{o&&(Number.isNaN(Number(a))||k.open({containerEl:void 0,saveConnect:!1,action:"recharge-account",locale:P,prefix:Ae(Fe(),"/api/did"),extraParams:{customerDid:b?.user?.did,currencyId:o.id,amount:Number(a),rechargeAddress:T||b?.user?.did},messages:{scan:t("common.connect.defaultScan"),title:t("customer.recharge.title"),confirm:t("common.connect.confirm")},onSuccess:()=>{k.close(),H.success(t("customer.recharge.success")),Y()},onClose:()=>{k.close()},onError:r=>{H.error(K(r))}}))},le=r=>{const{value:l}=r.target;if(!o||!/^\d*\.?\d*$/.test(l)||l.startsWith(".")||Number(l)>Q)return;const c=o.maximum_precision,v=De(l,P,c||6);te(v||""),g(l)},me=r=>{g(r),L(!1)},de=()=>{L(!0),g(""),setTimeout(()=>{_.current?.focus()},0)},ue=r=>{E(`/customer/subscription/${r}`)};if(F)return e.jsx(m,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"50vh"},children:e.jsx(pe,{})});if(!["arcblock","ethereum","base"].includes(o?.paymentMethod?.type||""))return e.jsxs(m,{children:[!w&&e.jsx(R,{startIcon:e.jsx(N,{}),variant:"outlined",onClick:()=>B("/customer"),children:t("common.previous")}),e.jsx(ke,{children:t("customer.recharge.unsupported")})]});if(M)return e.jsxs(m,{children:[!w&&e.jsx(R,{startIcon:e.jsx(N,{}),variant:"outlined",onClick:()=>B("/customer"),children:t("common.previous")}),e.jsx(ge,{severity:"error",sx:{mt:2},children:M})]});const he=Ie(z?.token||"0",o?.decimal||0,6,!1),x=o?.paymentMethod?Pe(o.paymentMethod,y||""):void 0;return e.jsxs(_e,{children:[e.jsx(i,{direction:"row",sx:{justifyContent:"space-between",alignItems:"center",position:"relative"},children:w?e.jsx(m,{}):e.jsx(R,{startIcon:e.jsx(N,{}),variant:"text",color:"inherit",onClick:()=>B("/customer"),sx:{color:"text.secondary"},children:t("common.previous")})}),e.jsxs(n,{variant:"h2",gutterBottom:!0,children:[o?.symbol," ",t("customer.recharge.title")]}),o&&e.jsxs(m,{ref:j,children:[e.jsxs(i,{sx:{maxWidth:"760px"},children:[e.jsxs(m,{sx:{mb:4},children:[e.jsx(Z,{elevation:0,children:e.jsxs(i,{direction:"row",spacing:2,sx:{justifyContent:"space-between",alignItems:"center"},children:[e.jsxs(i,{spacing:.5,children:[e.jsx(n,{variant:"body2",sx:{color:"text.secondary"},children:t("customer.recharge.receiveAddress")}),e.jsx(n,{variant:"body1",sx:{wordBreak:"break-all",fontFamily:"monospace"},children:y||t("customer.balance.addressNotFound")})]}),o.logo&&e.jsx(fe,{src:o.logo,alt:o.name,sx:{width:{xs:30,sm:40},height:{xs:30,sm:40}}})]})}),e.jsx(Z,{elevation:0,onClick:()=>x&&window.open(x,"_blank"),sx:{color:"text.primary",borderRadius:1,transition:"all 0.2s ease-in-out",cursor:x?"pointer":"default",position:"relative","&:hover":x?{"& .arrow-icon":{opacity:1,transform:"translateX(0)"}}:void 0},children:e.jsxs(i,{direction:"row",sx:{alignItems:"center",justifyContent:"space-between"},children:[e.jsxs(i,{children:[e.jsxs(n,{variant:"body1",color:"inherit",sx:{display:"flex",alignItems:"center",gap:1,color:"text.secondary"},children:[e.jsx(be,{color:"success",fontSize:"small"}),t("admin.customer.summary.balance")]}),e.jsxs(n,{variant:"h3",sx:{fontWeight:"bold",mt:1,color:"text.primary"},children:[he," ",o.symbol]})]}),x&&e.jsx(ye,{className:"arrow-icon",sx:{opacity:0,transform:"translateX(-10px)",transition:"all 0.2s ease-in-out",color:"inherit",fontSize:30}})]})})]}),e.jsx(i,{sx:{mb:3,backgroundColor:"background.default",borderRadius:"16px"},children:e.jsxs(p,{container:!0,spacing:2,children:[ne.map(({amount:r,label:l,multiplier:c})=>e.jsx(p,{size:{xs:6,sm:3},children:e.jsx(I,{variant:"outlined",sx:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"center",transition:"all 0.2s",cursor:"pointer",borderRadius:"12px","&:hover":{transform:"translateY(-4px)",boxShadow:3},...a===r&&!d?{borderColor:"primary.main",borderWidth:2,backgroundColor:"primary.lighter"}:{}},children:e.jsxs(V,{onClick:()=>me(r),sx:{height:"100%",p:1.5,textAlign:"center"},children:[e.jsxs(n,{variant:"h6",align:"center",sx:{fontWeight:600,color:a===r&&!d?"primary.main":"text.primary"},children:[Te(r)," ",o.symbol]}),c>0&&l&&e.jsx(n,{variant:"caption",align:"center",sx:{color:"text.secondary"},children:l})]})})},r)),e.jsx(p,{size:{xs:6,sm:3},children:e.jsx(I,{variant:"outlined",sx:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"center",transition:"all 0.2s",cursor:"pointer",borderRadius:"12px","&:hover":{transform:"translateY(-4px)",boxShadow:"0 4px 10px rgba(0,0,0,0.1)"},...d?{borderColor:"primary.main",borderWidth:2,backgroundColor:"primary.lighter"}:{}},children:e.jsx(V,{onClick:de,sx:{height:"100%",p:1},children:e.jsx(i,{direction:"row",spacing:1,sx:{justifyContent:"center",alignItems:"center"},children:e.jsx(n,{variant:"h6",align:"center",sx:{fontWeight:600,color:d?"primary.main":"text.primary"},children:t("customer.recharge.custom")||t("common.custom")})})})})})]})}),d&&e.jsxs(m,{sx:{mb:3},children:[e.jsx(je,{fullWidth:!0,label:t("customer.recharge.amount"),variant:"outlined",type:"text",value:a,error:!!f,helperText:f,onChange:le,inputRef:_,autoComplete:"off",slotProps:{input:{endAdornment:e.jsx(n,{children:o.symbol})},htmlInput:{min:0,max:Q}}}),a&&Number(a)>0&&Number(h.amount)>0&&!f&&e.jsx(n,{variant:"body2",sx:{fontSize:12,color:"text.lighter",mt:1},children:t("common.estimatedDuration",{duration:S(Math.floor(Number(a)/Number(h.amount))<1?parseFloat((Number(a)/Number(h.amount)).toFixed(1)):Math.floor(Number(a)/Number(h.amount)),h.interval,{t})})})]}),e.jsx(R,{fullWidth:!0,size:"large",variant:"contained",color:"primary",onClick:ie,disabled:!a||parseFloat(a)<=0||!!f,sx:{mb:4,py:1.5,borderRadius:"8px",boxShadow:"0 4px 10px rgba(0,0,0,0.1)","&:hover":{boxShadow:"0 6px 15px rgba(0,0,0,0.15)",transform:"translateY(-2px)"},transition:"all 0.2s"},children:t("customer.recharge.submit")})]}),O.length>0&&e.jsxs(m,{sx:{mb:3},children:[e.jsx(n,{variant:"h4",gutterBottom:!0,children:t("customer.recharge.relatedSubscriptions")}),e.jsx(p,{container:!0,spacing:2,children:O.map(r=>e.jsx(p,{size:{xs:12,sm:6,md:4,lg:3},children:e.jsxs(i,{onClick:()=>ue(r.id),className:"base-card",sx:{height:"100%"},children:[e.jsx(i,{direction:"row",spacing:1.5,sx:{alignItems:"center",mb:1},children:e.jsx(n,{variant:"subtitle1",sx:{fontWeight:"medium",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"text.link",cursor:"pointer"},children:r.description||r.id})}),r.items&&r.items[0]&&o&&e.jsx(n,{variant:"body1",sx:{color:"text.secondary"},children:Ee(r.items[0].price,o,r.items[0].price?.product?.unit_label)})]})},r.id))})]}),e.jsx(ve,{sx:{mb:3}}),e.jsx(n,{variant:"h4",gutterBottom:!0,children:t("customer.recharge.history")}),e.jsx(Me,{currency_id:u,customer_id:b?.user?.did,recharge_address:y})]})]})}export{He as default};
1
+ import{r as s,j as e,B as m,w as pe,x as R,bv as N,A as ge,a3 as i,q as n,N as fe,bL as be,bx as ye,$ as p,bg as I,bl as V,a2 as je,Y as ve,bf as ee}from"./vendor-mui-BXZut9Pz.js";import{e as Ce,b as Re,a as Se}from"./vendor-react-BPknnnEA.js";import{V as we,af as ke,H as X,G as H,Z as q,F as Ae}from"./vendor-blocklet-DcLR2Cyf.js";import{a as Ne,u as Be,i as Ie,a4 as Pe,a8 as Te,f as Ee,e as Z,k as J,l as Fe,G as De}from"./index-BarN7DfU.js";import{R as Me}from"./recharge-BVT4USAO.js";import{g as B,M as K}from"./util-DxXTXkeY.js";import{f as S}from"./dayjs-DUTDpcNU.js";import{u as We}from"./browser-DDv4_sgY.js";import"./table-BrtHemkA.js";import"./lodash-B4Ozcv0x.js";const _e=ee(i)(({theme:t})=>({marginBottom:t.spacing(3),gap:t.spacing(3),flexDirection:"column"})),Q=ee(I)(({theme:t})=>({padding:t.spacing(2),backgroundColor:t.palette.background.paper,border:`1px solid ${t.palette.divider}`,borderRadius:t.shape.borderRadius,marginBottom:t.spacing(2)}));function qe(){const{t,locale:P}=we(),{currencyId:u}=Ce(),[re]=Re(),w=We(),T=re.get("rechargeAddress"),E=Se(),{connect:k}=Ne(),[a,g]=s.useState("50"),[f,te]=s.useState(""),[F,D]=s.useState(!0),[M,W]=s.useState(""),_=s.useRef(null),[h,oe]=s.useState({amount:"0",interval:"month",cycle:1}),[z,se]=s.useState(null),[d,L]=s.useState(!1),[ne,$]=s.useState([]),{session:b}=Be(),[o,ae]=s.useState(null),[O,ce]=s.useState([]),y=T||z?.paymentAddress||b?.user?.did,Y=async()=>{try{if(D(!0),!u){E("/customer");return}const{data:r}=await Z.get(`/api/customers/recharge?currencyId=${u}`);if(r.currency){if(ae(r.currency),ce(r.relatedSubscriptions||[]),r.recommendedRecharge&&r.recommendedRecharge.amount&&r.recommendedRecharge.amount!=="0"){const c=r.recommendedRecharge.amount,v=r.currency.decimal||0,C=A=>{const xe=X(new H(c).mul(new H(String(A))).toString(),v);return Math.ceil(parseFloat(xe)).toString()};oe({amount:X(c,v),interval:r.recommendedRecharge.interval,cycle:r.recommendedRecharge.cycle});const U=[{amount:C(1),multiplier:r.recommendedRecharge.cycle,label:t("common.estimatedDuration",{duration:S(1,r.recommendedRecharge.interval,{t})})},{amount:C(4),multiplier:r.recommendedRecharge.cycle*4,label:t("common.estimatedDuration",{duration:S(4,r.recommendedRecharge.interval,{t})})},{amount:C(8),multiplier:r.recommendedRecharge.cycle*8,label:t("common.estimatedDuration",{duration:S(8,r.recommendedRecharge.interval,{t})})}];$(U);const G=C(4);!d&&!U.find(A=>A.amount===G)&&g(G)}else $([{amount:"10",multiplier:0,label:""},{amount:"50",multiplier:0,label:""},{amount:"100",multiplier:0,label:""}]);if(["arcblock","ethereum","base"].includes(r.currency?.paymentMethod?.type)){const c=await Z.get(`/api/customers/payer-token?currencyId=${u}&payerAddress=${y}`);c?.data&&se(c.data)}}else W(t("customer.balance.currency.notFound"))}catch(r){W(J(r)||t("common.fetchError")),console.error(r)}finally{D(!1)}},j=s.useRef(null);s.useEffect(()=>{Y()},[u]),s.useEffect(()=>{j.current&&o&&setTimeout(()=>{if(j.current){const r=j.current.getBoundingClientRect(),c=window.scrollY+r.top-120;window.scrollTo({top:c,behavior:"smooth"})}},200)},[o,F]);const ie=()=>{o&&(Number.isNaN(Number(a))||k.open({containerEl:void 0,saveConnect:!1,action:"recharge-account",locale:P,prefix:Ae(Fe(),"/api/did"),extraParams:{customerDid:b?.user?.did,currencyId:o.id,amount:Number(a),rechargeAddress:T||b?.user?.did},messages:{scan:t("common.connect.defaultScan"),title:t("customer.recharge.title"),confirm:t("common.connect.confirm")},onSuccess:()=>{k.close(),q.success(t("customer.recharge.success")),Y()},onClose:()=>{k.close()},onError:r=>{q.error(J(r))}}))},le=r=>{const{value:l}=r.target;if(!o||!/^\d*\.?\d*$/.test(l)||l.startsWith(".")||Number(l)>K)return;const c=o.maximum_precision,v=De(l,P,c||6);te(v||""),g(l)},me=r=>{g(r),L(!1)},de=()=>{L(!0),g(""),setTimeout(()=>{_.current?.focus()},0)},ue=r=>{E(`/customer/subscription/${r}`)};if(F)return e.jsx(m,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:"50vh"},children:e.jsx(pe,{})});if(!["arcblock","ethereum","base"].includes(o?.paymentMethod?.type||""))return e.jsxs(m,{children:[!w&&e.jsx(R,{startIcon:e.jsx(N,{}),variant:"outlined",onClick:()=>B("/customer"),children:t("common.previous")}),e.jsx(ke,{children:t("customer.recharge.unsupported")})]});if(M)return e.jsxs(m,{children:[!w&&e.jsx(R,{startIcon:e.jsx(N,{}),variant:"outlined",onClick:()=>B("/customer"),children:t("common.previous")}),e.jsx(ge,{severity:"error",sx:{mt:2},children:M})]});const he=Ie(z?.token||"0",o?.decimal||0,6,!1),x=o?.paymentMethod?Pe(o.paymentMethod,y||""):void 0;return e.jsxs(_e,{children:[e.jsx(i,{direction:"row",sx:{justifyContent:"space-between",alignItems:"center",position:"relative"},children:w?e.jsx(m,{}):e.jsx(R,{startIcon:e.jsx(N,{}),variant:"text",color:"inherit",onClick:()=>B("/customer"),sx:{color:"text.secondary"},children:t("common.previous")})}),e.jsxs(n,{variant:"h2",gutterBottom:!0,children:[o?.symbol," ",t("customer.recharge.title")]}),o&&e.jsxs(m,{ref:j,children:[e.jsxs(i,{sx:{maxWidth:"760px"},children:[e.jsxs(m,{sx:{mb:4},children:[e.jsx(Q,{elevation:0,children:e.jsxs(i,{direction:"row",spacing:2,sx:{justifyContent:"space-between",alignItems:"center"},children:[e.jsxs(i,{spacing:.5,children:[e.jsx(n,{variant:"body2",sx:{color:"text.secondary"},children:t("customer.recharge.receiveAddress")}),e.jsx(n,{variant:"body1",sx:{wordBreak:"break-all",fontFamily:"monospace"},children:y||t("customer.balance.addressNotFound")})]}),o.logo&&e.jsx(fe,{src:o.logo,alt:o.name,sx:{width:{xs:30,sm:40},height:{xs:30,sm:40}}})]})}),e.jsx(Q,{elevation:0,onClick:()=>x&&window.open(x,"_blank"),sx:{color:"text.primary",borderRadius:1,transition:"all 0.2s ease-in-out",cursor:x?"pointer":"default",position:"relative","&:hover":x?{"& .arrow-icon":{opacity:1,transform:"translateX(0)"}}:void 0},children:e.jsxs(i,{direction:"row",sx:{alignItems:"center",justifyContent:"space-between"},children:[e.jsxs(i,{children:[e.jsxs(n,{variant:"body1",color:"inherit",sx:{display:"flex",alignItems:"center",gap:1,color:"text.secondary"},children:[e.jsx(be,{color:"success",fontSize:"small"}),t("admin.customer.summary.balance")]}),e.jsxs(n,{variant:"h3",sx:{fontWeight:"bold",mt:1,color:"text.primary"},children:[he," ",o.symbol]})]}),x&&e.jsx(ye,{className:"arrow-icon",sx:{opacity:0,transform:"translateX(-10px)",transition:"all 0.2s ease-in-out",color:"inherit",fontSize:30}})]})})]}),e.jsx(i,{sx:{mb:3,backgroundColor:"background.default",borderRadius:"16px"},children:e.jsxs(p,{container:!0,spacing:2,children:[ne.map(({amount:r,label:l,multiplier:c})=>e.jsx(p,{size:{xs:6,sm:3},children:e.jsx(I,{variant:"outlined",sx:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"center",transition:"all 0.2s",cursor:"pointer",borderRadius:"12px","&:hover":{transform:"translateY(-4px)",boxShadow:3},...a===r&&!d?{borderColor:"primary.main",borderWidth:2,backgroundColor:"primary.lighter"}:{}},children:e.jsxs(V,{onClick:()=>me(r),sx:{height:"100%",p:1.5,textAlign:"center"},children:[e.jsxs(n,{variant:"h6",align:"center",sx:{fontWeight:600,color:a===r&&!d?"primary.main":"text.primary"},children:[Te(r)," ",o.symbol]}),c>0&&l&&e.jsx(n,{variant:"caption",align:"center",sx:{color:"text.secondary"},children:l})]})})},r)),e.jsx(p,{size:{xs:6,sm:3},children:e.jsx(I,{variant:"outlined",sx:{height:"100%",display:"flex",flexDirection:"column",justifyContent:"center",transition:"all 0.2s",cursor:"pointer",borderRadius:"12px","&:hover":{transform:"translateY(-4px)",boxShadow:"0 4px 10px rgba(0,0,0,0.1)"},...d?{borderColor:"primary.main",borderWidth:2,backgroundColor:"primary.lighter"}:{}},children:e.jsx(V,{onClick:de,sx:{height:"100%",p:1},children:e.jsx(i,{direction:"row",spacing:1,sx:{justifyContent:"center",alignItems:"center"},children:e.jsx(n,{variant:"h6",align:"center",sx:{fontWeight:600,color:d?"primary.main":"text.primary"},children:t("customer.recharge.custom")||t("common.custom")})})})})})]})}),d&&e.jsxs(m,{sx:{mb:3},children:[e.jsx(je,{fullWidth:!0,label:t("customer.recharge.amount"),variant:"outlined",type:"text",value:a,error:!!f,helperText:f,onChange:le,inputRef:_,autoComplete:"off",slotProps:{input:{endAdornment:e.jsx(n,{children:o.symbol})},htmlInput:{min:0,max:K}}}),a&&Number(a)>0&&Number(h.amount)>0&&!f&&e.jsx(n,{variant:"body2",sx:{fontSize:12,color:"text.lighter",mt:1},children:t("common.estimatedDuration",{duration:S(Math.floor(Number(a)/Number(h.amount))<1?parseFloat((Number(a)/Number(h.amount)).toFixed(1)):Math.floor(Number(a)/Number(h.amount)),h.interval,{t})})})]}),e.jsx(R,{fullWidth:!0,size:"large",variant:"contained",color:"primary",onClick:ie,disabled:!a||parseFloat(a)<=0||!!f,sx:{mb:4,py:1.5,borderRadius:"8px",boxShadow:"0 4px 10px rgba(0,0,0,0.1)","&:hover":{boxShadow:"0 6px 15px rgba(0,0,0,0.15)",transform:"translateY(-2px)"},transition:"all 0.2s"},children:t("customer.recharge.submit")})]}),O.length>0&&e.jsxs(m,{sx:{mb:3},children:[e.jsx(n,{variant:"h4",gutterBottom:!0,children:t("customer.recharge.relatedSubscriptions")}),e.jsx(p,{container:!0,spacing:2,children:O.map(r=>e.jsx(p,{size:{xs:12,sm:6,md:4,lg:3},children:e.jsxs(i,{onClick:()=>ue(r.id),className:"base-card",sx:{height:"100%"},children:[e.jsx(i,{direction:"row",spacing:1.5,sx:{alignItems:"center",mb:1},children:e.jsx(n,{variant:"subtitle1",sx:{fontWeight:"medium",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:"text.link",cursor:"pointer"},children:r.description||r.id})}),r.items&&r.items[0]&&o&&e.jsx(n,{variant:"body1",sx:{color:"text.secondary"},children:Ee(r.items[0].price,o,r.items[0].price?.product?.unit_label)})]})},r.id))})]}),e.jsx(ve,{sx:{mb:3}}),e.jsx(n,{variant:"h4",gutterBottom:!0,children:t("customer.recharge.history")}),e.jsx(Me,{currency_id:u,customer_id:b?.user?.did,recharge_address:y})]})]})}export{qe as default};
@@ -1 +1 @@
1
- import{j as r}from"./vendor-mui-BXZut9Pz.js";import{V as C,X as x,O as j,Y as c}from"./vendor-blocklet-D_i_QeSo.js";import{I as u,e as d,k as A}from"./index-DgSc1Qy8.js";import{A as w}from"./actions-jxGAdGfb.js";import{C as $}from"./click-boundary-y8dVA_tr.js";import{a as I}from"./vendor-react-BPknnnEA.js";const R=i=>d.get(`/api/invoices/${i}/return-stake`).then(s=>s.data);function P({data:i,variant:s="compact",onChange:y,mode:b="admin"}){const{t:e}=C(),l=I(),[t,n]=x({action:"",loading:!1}),g=["stake","stake_overdraft_protection"].includes(i.billing_reason),h=i.status==="paid",a=b==="admin",v=a&&g&&h&&i.paymentMethod?.type==="arcblock",{data:p={value:"0"},runAsync:k}=j(()=>v?R(i.id):Promise.resolve({value:"0"}),{manual:!0}),m=async()=>{try{if(n({loading:!0}),t.action==="return-stake"){const o=await d.post(`/api/invoices/${i.id}/return-stake`).then(S=>S.data);o.success?c.success(e("admin.invoice.returnStake.success")):c.error(o.error)}t.action==="retry-uncollectible"&&(await d.get("/api/invoices/retry-uncollectible",{params:{invoiceId:i.id}}).then(o=>o.data),c.success(e("admin.invoice.retryUncollectible.success"))),t.action==="void"&&(await d.post(`/api/invoices/${i.id}/void`).then(o=>o.data),c.success(e("admin.invoice.void.success"))),y(t.action)}catch(o){console.error(o),c.error(A(o))}finally{n({loading:!1,action:""})}},f=[a&&{label:e("admin.invoice.edit"),handler:()=>n({action:"edit"}),color:"primary",disabled:i.status!=="draft"},a&&{label:e("admin.invoice.duplicate"),handler:()=>n({action:"duplicate"}),color:"primary",disabled:i.status!=="draft",divider:!0},a&&i.status==="uncollectible"&&{label:e("admin.invoice.retryUncollectible.title"),handler:()=>n({action:"retry-uncollectible"}),color:"primary"},v&&p&&p.value!=="0"&&{label:e("admin.invoice.returnStake.title"),handler:()=>n({action:"return-stake"}),color:"primary",divider:!0},a&&!["paid","void","draft"].includes(i.status)&&{label:e("admin.invoice.void.title"),handler:()=>n({action:"void"}),color:"primary",divider:!0},{label:e("admin.customer.view"),handler:()=>{l(a?`/admin/customers/${i.customer_id}`:"/customer")},color:"primary"}].filter(Boolean);return s==="compact"&&f.push({label:e("admin.invoice.view"),handler:()=>{l(a?`/admin/billing/${i.id}`:`/customer/invoice/${i.id}`)},color:"primary"}),r.jsxs($,{children:[r.jsx(w,{variant:s,actions:f,onOpenCallback:k}),t.action==="retry-uncollectible"&&r.jsx(u,{onConfirm:m,onCancel:()=>n({action:""}),title:e("admin.invoice.retryUncollectible.title"),message:e("admin.invoice.retryUncollectible.tip"),loading:t.loading,color:"primary"}),t.action==="return-stake"&&r.jsx(u,{onConfirm:m,onCancel:()=>n({action:""}),title:e("admin.invoice.returnStake.title"),message:e("admin.invoice.returnStake.tip"),loading:t.loading}),t.action==="void"&&r.jsx(u,{onConfirm:m,onCancel:()=>n({action:""}),title:e("admin.invoice.void.title"),message:e("admin.invoice.void.tip"),loading:t.loading})]})}export{P as I};
1
+ import{j as r}from"./vendor-mui-BXZut9Pz.js";import{V as C,Y as x,P as j,Z as c}from"./vendor-blocklet-DcLR2Cyf.js";import{I as u,e as d,k as A}from"./index-BarN7DfU.js";import{A as w}from"./actions-BJDN6Op2.js";import{C as $}from"./click-boundary-CafubiPp.js";import{a as I}from"./vendor-react-BPknnnEA.js";const R=i=>d.get(`/api/invoices/${i}/return-stake`).then(s=>s.data);function q({data:i,variant:s="compact",onChange:y,mode:b="admin"}){const{t:e}=C(),l=I(),[t,n]=x({action:"",loading:!1}),g=["stake","stake_overdraft_protection"].includes(i.billing_reason),h=i.status==="paid",a=b==="admin",v=a&&g&&h&&i.paymentMethod?.type==="arcblock",{data:p={value:"0"},runAsync:k}=j(()=>v?R(i.id):Promise.resolve({value:"0"}),{manual:!0}),m=async()=>{try{if(n({loading:!0}),t.action==="return-stake"){const o=await d.post(`/api/invoices/${i.id}/return-stake`).then(S=>S.data);o.success?c.success(e("admin.invoice.returnStake.success")):c.error(o.error)}t.action==="retry-uncollectible"&&(await d.get("/api/invoices/retry-uncollectible",{params:{invoiceId:i.id}}).then(o=>o.data),c.success(e("admin.invoice.retryUncollectible.success"))),t.action==="void"&&(await d.post(`/api/invoices/${i.id}/void`).then(o=>o.data),c.success(e("admin.invoice.void.success"))),y(t.action)}catch(o){console.error(o),c.error(A(o))}finally{n({loading:!1,action:""})}},f=[a&&{label:e("admin.invoice.edit"),handler:()=>n({action:"edit"}),color:"primary",disabled:i.status!=="draft"},a&&{label:e("admin.invoice.duplicate"),handler:()=>n({action:"duplicate"}),color:"primary",disabled:i.status!=="draft",divider:!0},a&&i.status==="uncollectible"&&{label:e("admin.invoice.retryUncollectible.title"),handler:()=>n({action:"retry-uncollectible"}),color:"primary"},v&&p&&p.value!=="0"&&{label:e("admin.invoice.returnStake.title"),handler:()=>n({action:"return-stake"}),color:"primary",divider:!0},a&&!["paid","void","draft"].includes(i.status)&&{label:e("admin.invoice.void.title"),handler:()=>n({action:"void"}),color:"primary",divider:!0},{label:e("admin.customer.view"),handler:()=>{l(a?`/admin/customers/${i.customer_id}`:"/customer")},color:"primary"}].filter(Boolean);return s==="compact"&&f.push({label:e("admin.invoice.view"),handler:()=>{l(a?`/admin/billing/${i.id}`:`/customer/invoice/${i.id}`)},color:"primary"}),r.jsxs($,{children:[r.jsx(w,{variant:s,actions:f,onOpenCallback:k}),t.action==="retry-uncollectible"&&r.jsx(u,{onConfirm:m,onCancel:()=>n({action:""}),title:e("admin.invoice.retryUncollectible.title"),message:e("admin.invoice.retryUncollectible.tip"),loading:t.loading,color:"primary"}),t.action==="return-stake"&&r.jsx(u,{onConfirm:m,onCancel:()=>n({action:""}),title:e("admin.invoice.returnStake.title"),message:e("admin.invoice.returnStake.tip"),loading:t.loading}),t.action==="void"&&r.jsx(u,{onConfirm:m,onCancel:()=>n({action:""}),title:e("admin.invoice.void.title"),message:e("admin.invoice.void.tip"),loading:t.loading})]})}export{q as I};
@@ -1 +1 @@
1
- import{j as s}from"./vendor-mui-BXZut9Pz.js";import{V as f,X as p,Y as l}from"./vendor-blocklet-D_i_QeSo.js";import{I as u,e as y,k as g}from"./index-DgSc1Qy8.js";import{A as C}from"./actions-jxGAdGfb.js";import{C as h}from"./click-boundary-y8dVA_tr.js";import{a as b}from"./vendor-react-BPknnnEA.js";function A({data:a,variant:i="compact",onChange:d=()=>{}}){const{t:e}=f(),r=b(),[o,n]=p({action:"",loading:!1}),t=[{label:e("admin.customer.view"),handler:()=>r(`/admin/customers/${a.customer_id}`),color:"primary",disabled:!1}];i==="compact"&&t.push({label:e("admin.refund.view"),handler:()=>r(`/admin/payments/${a.id}`),color:"primary",disabled:!1}),["succeeded","canceled"].includes(a.status)||t.push({label:e("admin.paymentIntent.cancelRefund"),handler:()=>n({action:"cancel"}),color:"error",disabled:!1});const m=async()=>{try{n({loading:!0}),await y.post(`/api/refunds/${a?.id}/cancel`),l.success(e("admin.paymentIntent.refundCanceled")),d(o.action)}catch(c){console.error(c),l.error(g(c))}finally{n({loading:!1,action:""})}};return s.jsxs(h,{children:[s.jsx(C,{variant:i,actions:t}),o.action==="cancel"&&s.jsx(u,{onConfirm:m,onCancel:()=>n({action:""}),title:e("admin.paymentIntent.cancelRefund"),message:e("admin.paymentIntent.refundCanceledTip"),loading:o.loading})]})}export{A as R};
1
+ import{j as s}from"./vendor-mui-BXZut9Pz.js";import{V as f,Y as p,Z as l}from"./vendor-blocklet-DcLR2Cyf.js";import{I as u,e as y,k as g}from"./index-BarN7DfU.js";import{A as C}from"./actions-BJDN6Op2.js";import{C as h}from"./click-boundary-CafubiPp.js";import{a as b}from"./vendor-react-BPknnnEA.js";function A({data:a,variant:i="compact",onChange:d=()=>{}}){const{t:e}=f(),r=b(),[o,n]=p({action:"",loading:!1}),t=[{label:e("admin.customer.view"),handler:()=>r(`/admin/customers/${a.customer_id}`),color:"primary",disabled:!1}];i==="compact"&&t.push({label:e("admin.refund.view"),handler:()=>r(`/admin/payments/${a.id}`),color:"primary",disabled:!1}),["succeeded","canceled"].includes(a.status)||t.push({label:e("admin.paymentIntent.cancelRefund"),handler:()=>n({action:"cancel"}),color:"error",disabled:!1});const m=async()=>{try{n({loading:!0}),await y.post(`/api/refunds/${a?.id}/cancel`),l.success(e("admin.paymentIntent.refundCanceled")),d(o.action)}catch(c){console.error(c),l.error(g(c))}finally{n({loading:!1,action:""})}};return s.jsxs(h,{children:[s.jsx(C,{variant:i,actions:t}),o.action==="cancel"&&s.jsx(u,{onConfirm:m,onCancel:()=>n({action:""}),title:e("admin.paymentIntent.cancelRefund"),message:e("admin.paymentIntent.refundCanceledTip"),loading:o.loading})]})}export{A as R};
@@ -1 +1 @@
1
- import{j as n,a3 as R,x as P,w as B}from"./vendor-mui-BXZut9Pz.js";import{V as E,G as j,$ as I,Y as o,X as z,O as L,a9 as C}from"./vendor-blocklet-D_i_QeSo.js";import{h as V,F as M,I as w,e as m,b8 as _,k as y}from"./index-DgSc1Qy8.js";import{A as O}from"./actions-jxGAdGfb.js";import{l as S}from"./lodash-B4Ozcv0x.js";import{o as U}from"./util-mDHAL0lx.js";import{D as W,a as D}from"./form-P4luyUpY.js";import{P as G}from"./product-select-0ScZE2e8.js";import{a as H}from"./vendor-react-BPknnnEA.js";function K({price:e,loading:s,onSave:v,onCancel:l,productType:g=""}){const{t:r}=E(),f=t=>S.isEmpty(t)?{}:t,d=V({mode:"onChange",defaultValues:{...e,unit_amount:j(e.unit_amount,e.currency?.decimal),model:U(e),metadata:f(e.metadata),recurring:e.recurring?{...e.recurring}:W.recurring,currency_options:S.cloneDeep(e.currency_options).map(t=>(t.unit_amount=j(t.unit_amount,t.currency?.decimal),t))}}),{handleSubmit:b,reset:h,formState:{errors:c}}=d,a=()=>{Object.keys(c).length>0||b(async t=>{if(t.metadata===void 0&&(t.metadata=d.getValues("metadata")),Number(t.quantity_available)>0&&Number(t.quantity_available)<Number(t.quantity_sold)){o.warning(r("admin.price.quantityAvailable.valid"));return}await v(t),h(),l(null)})()};return n.jsx(I,{open:!0,disableEscapeKeyDown:!0,fullWidth:!0,maxWidth:"sm",className:"base-dialog",onClose:()=>l(null),showCloseButton:!1,title:r("admin.price.edit"),actions:n.jsxs(R,{direction:"row",children:[n.jsx(P,{size:"small",sx:{mr:2},onClick:l,children:r("common.cancel")}),n.jsxs(P,{variant:"contained",color:"primary",size:"small",disabled:s,onClick:a,children:[s&&n.jsx(B,{size:"small"})," ",r("common.save")]})]}),children:n.jsx(M,{...d,children:n.jsx(G,{children:n.jsx(D,{productType:g||e.product?.type})})})})}const X=async e=>(await m.get(`/api/payment-currencies/${e}/recharge-config`)).data;function ne({data:e,onChange:s,variant:v="compact",setAsDefault:l=!1,product:g=null}){const{t:r}=E(),f=H(),d=e.active,b=e.active,h=!e.locked&&!l,[c,a]=z({action:"",loading:!1}),t=async i=>{if(Number(i.quantity_available)>0&&Number(i.quantity_available)<Number(i.quantity_sold)){o.warning(r("admin.price.quantityAvailable.valid"));return}try{a({loading:!0}),await m.put(`/api/prices/${e.id}`,i).then(p=>p.data),o.success(r("common.saved")),_("price.updated"),s(c.action)}catch(p){throw console.error(p),o.error(y(p)),p}finally{a({loading:!1})}},k=async()=>{try{a({loading:!0}),await m.put(`/api/prices/${e.id}/archive`).then(i=>i.data),o.success(r("common.saved")),_("price.updated"),s(c.action)}catch(i){console.error(i),o.error(y(i))}finally{a({loading:!1,action:""})}},A=async()=>{try{a({loading:!0}),await m.delete(`/api/prices/${e.id}`).then(i=>i.data),o.success(r("common.removed")),_("price.deleted"),s(c.action)}catch(i){console.error(i),o.error(y(i))}finally{a({loading:!1,action:""})}},T=async()=>{try{a({loading:!0}),await m.put(`/api/products/${e.product_id}`,{default_price_id:e.id}).then(i=>i.data),o.success(r("common.saveAsDefaultPriceSuccess")),s(c.action)}catch(i){console.error(i),o.error(y(i))}finally{a({loading:!1,action:""})}},q=()=>{f(`/admin/products/links?price_id=${e.id}`)},$=()=>{f(`/admin/products/pricing-tables?price_id=${e.id}`)},u=e.metadata?.credit_config?.currency_id,{data:N}=L(()=>X(u),{refreshDeps:[u],ready:!!u}),F=async()=>{try{a({loading:!0}),await m.put(`/api/payment-currencies/${u}/recharge-config`,{base_price_id:e.id}),o.success(r("admin.price.credit.saveSuccess")),s(c.action)}catch(i){console.error(i),o.error(y(i))}finally{a({loading:!1,action:""})}},x=[{label:r("admin.pricing"),handler:C,color:"text.primary",disabled:!0},{label:r("admin.price.edit"),handler:()=>a({action:"edit"}),color:d?"text.primary":"text.disabled",disabled:!d},{label:r("admin.price.archive"),handler:()=>a({action:"archive"}),color:b?"text.primary":"text.disabled",disabled:!b},{label:r("admin.price.remove"),handler:()=>a({action:"remove"}),color:h?"error.main":"text.disabled",disabled:!h,divider:!l},{label:r("admin.payments"),handler:C,color:"text.primary",disabled:!0},{label:r("admin.paymentLink.add"),handler:q,color:"primary"},{label:r("admin.pricingTable.add"),handler:$,color:"primary",disabled:!e.recurring}].filter(Boolean);if(l||x.splice(4,0,{label:r("admin.price.setAsDefault"),handler:T,color:"text.primary",disabled:!1,divider:!0}),u&&N?.recharge_config?.base_price_id!==e.id){const i=l?4:5;x.splice(i,0,{label:r("admin.price.credit.saveAsBasePrice"),handler:F,color:"text.primary",disabled:!1,divider:!1})}return n.jsxs(n.Fragment,{children:[n.jsx(O,{variant:v,actions:x}),c.action==="edit"&&n.jsx(K,{price:e,onSave:t,onCancel:()=>a({action:""}),productType:g?.type}),c.action==="archive"&&n.jsx(w,{onConfirm:k,onCancel:()=>a({action:""}),title:r("admin.price.archive"),message:r("admin.price.archiveTip")}),c.action==="remove"&&n.jsx(w,{onConfirm:A,onCancel:()=>a({action:""}),title:r("admin.price.remove"),message:r("admin.price.removeTip")})]})}export{K as E,ne as P};
1
+ import{j as n,a3 as R,x as P,w as B}from"./vendor-mui-BXZut9Pz.js";import{V as E,H as j,$ as I,Z as o,Y as z,P as L,aa as C}from"./vendor-blocklet-DcLR2Cyf.js";import{h as V,F as H,I as w,e as m,b8 as _,k as y}from"./index-BarN7DfU.js";import{A as M}from"./actions-BJDN6Op2.js";import{l as S}from"./lodash-B4Ozcv0x.js";import{o as U}from"./util-DxXTXkeY.js";import{D as W,a as D}from"./form-cX026J4G.js";import{P as K}from"./product-select-ChEyoJqJ.js";import{a as O}from"./vendor-react-BPknnnEA.js";function Y({price:e,loading:s,onSave:v,onCancel:l,productType:g=""}){const{t:r}=E(),f=t=>S.isEmpty(t)?{}:t,d=V({mode:"onChange",defaultValues:{...e,unit_amount:j(e.unit_amount,e.currency?.decimal),model:U(e),metadata:f(e.metadata),recurring:e.recurring?{...e.recurring}:W.recurring,currency_options:S.cloneDeep(e.currency_options).map(t=>(t.unit_amount=j(t.unit_amount,t.currency?.decimal),t))}}),{handleSubmit:b,reset:h,formState:{errors:c}}=d,a=()=>{Object.keys(c).length>0||b(async t=>{if(t.metadata===void 0&&(t.metadata=d.getValues("metadata")),Number(t.quantity_available)>0&&Number(t.quantity_available)<Number(t.quantity_sold)){o.warning(r("admin.price.quantityAvailable.valid"));return}await v(t),h(),l(null)})()};return n.jsx(I,{open:!0,disableEscapeKeyDown:!0,fullWidth:!0,maxWidth:"sm",className:"base-dialog",onClose:()=>l(null),showCloseButton:!1,title:r("admin.price.edit"),actions:n.jsxs(R,{direction:"row",children:[n.jsx(P,{size:"small",sx:{mr:2},onClick:l,children:r("common.cancel")}),n.jsxs(P,{variant:"contained",color:"primary",size:"small",disabled:s,onClick:a,children:[s&&n.jsx(B,{size:"small"})," ",r("common.save")]})]}),children:n.jsx(H,{...d,children:n.jsx(K,{children:n.jsx(D,{productType:g||e.product?.type})})})})}const Z=async e=>(await m.get(`/api/payment-currencies/${e}/recharge-config`)).data;function ne({data:e,onChange:s,variant:v="compact",setAsDefault:l=!1,product:g=null}){const{t:r}=E(),f=O(),d=e.active,b=e.active,h=!e.locked&&!l,[c,a]=z({action:"",loading:!1}),t=async i=>{if(Number(i.quantity_available)>0&&Number(i.quantity_available)<Number(i.quantity_sold)){o.warning(r("admin.price.quantityAvailable.valid"));return}try{a({loading:!0}),await m.put(`/api/prices/${e.id}`,i).then(p=>p.data),o.success(r("common.saved")),_("price.updated"),s(c.action)}catch(p){throw console.error(p),o.error(y(p)),p}finally{a({loading:!1})}},k=async()=>{try{a({loading:!0}),await m.put(`/api/prices/${e.id}/archive`).then(i=>i.data),o.success(r("common.saved")),_("price.updated"),s(c.action)}catch(i){console.error(i),o.error(y(i))}finally{a({loading:!1,action:""})}},A=async()=>{try{a({loading:!0}),await m.delete(`/api/prices/${e.id}`).then(i=>i.data),o.success(r("common.removed")),_("price.deleted"),s(c.action)}catch(i){console.error(i),o.error(y(i))}finally{a({loading:!1,action:""})}},T=async()=>{try{a({loading:!0}),await m.put(`/api/products/${e.product_id}`,{default_price_id:e.id}).then(i=>i.data),o.success(r("common.saveAsDefaultPriceSuccess")),s(c.action)}catch(i){console.error(i),o.error(y(i))}finally{a({loading:!1,action:""})}},q=()=>{f(`/admin/products/links?price_id=${e.id}`)},$=()=>{f(`/admin/products/pricing-tables?price_id=${e.id}`)},u=e.metadata?.credit_config?.currency_id,{data:N}=L(()=>Z(u),{refreshDeps:[u],ready:!!u}),F=async()=>{try{a({loading:!0}),await m.put(`/api/payment-currencies/${u}/recharge-config`,{base_price_id:e.id}),o.success(r("admin.price.credit.saveSuccess")),s(c.action)}catch(i){console.error(i),o.error(y(i))}finally{a({loading:!1,action:""})}},x=[{label:r("admin.pricing"),handler:C,color:"text.primary",disabled:!0},{label:r("admin.price.edit"),handler:()=>a({action:"edit"}),color:d?"text.primary":"text.disabled",disabled:!d},{label:r("admin.price.archive"),handler:()=>a({action:"archive"}),color:b?"text.primary":"text.disabled",disabled:!b},{label:r("admin.price.remove"),handler:()=>a({action:"remove"}),color:h?"error.main":"text.disabled",disabled:!h,divider:!l},{label:r("admin.payments"),handler:C,color:"text.primary",disabled:!0},{label:r("admin.paymentLink.add"),handler:q,color:"primary"},{label:r("admin.pricingTable.add"),handler:$,color:"primary",disabled:!e.recurring}].filter(Boolean);if(l||x.splice(4,0,{label:r("admin.price.setAsDefault"),handler:T,color:"text.primary",disabled:!1,divider:!0}),u&&N?.recharge_config?.base_price_id!==e.id){const i=l?4:5;x.splice(i,0,{label:r("admin.price.credit.saveAsBasePrice"),handler:F,color:"text.primary",disabled:!1,divider:!1})}return n.jsxs(n.Fragment,{children:[n.jsx(M,{variant:v,actions:x}),c.action==="edit"&&n.jsx(Y,{price:e,onSave:t,onCancel:()=>a({action:""}),productType:g?.type}),c.action==="archive"&&n.jsx(w,{onConfirm:k,onCancel:()=>a({action:""}),title:r("admin.price.archive"),message:r("admin.price.archiveTip")}),c.action==="remove"&&n.jsx(w,{onConfirm:A,onCancel:()=>a({action:""}),title:r("admin.price.remove"),message:r("admin.price.removeTip")})]})}export{Y as E,ne as P};
@@ -1 +1 @@
1
- import{r as a,j as e,aJ as v,ad as p,aH as d,a1 as k,x as u,c3 as x,I as C,c2 as y}from"./vendor-mui-BXZut9Pz.js";import{V as z}from"./vendor-blocklet-D_i_QeSo.js";import{b4 as m}from"./index-DgSc1Qy8.js";function M(f){const s=Object.assign({variant:"compact",sx:{},onOpenCallback:null},f),{t:h}=z(),[o,i]=a.useState(null),j=!!o,b=a.useRef(null),[g,l]=a.useState(!1),t=n=>{if(m(n),b.current=n.currentTarget,s.onOpenCallback&&typeof s.onOpenCallback=="function"){const r=s.onOpenCallback();r instanceof Promise&&(l(!0),r.finally(()=>{l(!1)}))}i(n.currentTarget)},c=(n,r)=>{m(n),i(null),typeof r=="function"&&r()},O=()=>s.variant==="outlined"?e.jsx(u,{"aria-label":"actions",sx:{minWidth:0,padding:"5px",...s.sx},variant:"outlined",onClick:t,size:"small",children:e.jsx(x,{})}):s.variant==="compact"?e.jsx(C,{"aria-label":"actions",sx:s.sx,"aria-haspopup":"true",onClick:t,size:"small",children:e.jsx(x,{})}):e.jsxs(u,{sx:s.sx,onClick:t,size:"small",variant:"contained",color:"primary",children:[h("common.actions")," ",e.jsx(y,{fontSize:"small"})]});return e.jsxs(e.Fragment,{children:[O(),e.jsx(v,{anchorEl:o,open:j,onClose:c,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:s.actions.map(n=>g?e.jsx(p,{dense:!0,disabled:!0,children:e.jsx(d,{primary:e.jsx(k,{}),slotProps:{primary:{width:"56px"}}})},n.label):e.jsx(p,{divider:!!n.divider,dense:!!n.dense,disabled:!!n.disabled,onClick:r=>c(r,n.handler),children:e.jsx(d,{primary:n.label,slotProps:{primary:{color:n.color}}})},n.label))})]})}export{M as A};
1
+ import{r as a,j as e,aJ as v,ad as p,aH as d,a1 as k,x as u,c3 as x,I as C,c2 as y}from"./vendor-mui-BXZut9Pz.js";import{V as z}from"./vendor-blocklet-DcLR2Cyf.js";import{b4 as m}from"./index-BarN7DfU.js";function M(f){const s=Object.assign({variant:"compact",sx:{},onOpenCallback:null},f),{t:h}=z(),[o,i]=a.useState(null),j=!!o,b=a.useRef(null),[g,l]=a.useState(!1),t=n=>{if(m(n),b.current=n.currentTarget,s.onOpenCallback&&typeof s.onOpenCallback=="function"){const r=s.onOpenCallback();r instanceof Promise&&(l(!0),r.finally(()=>{l(!1)}))}i(n.currentTarget)},c=(n,r)=>{m(n),i(null),typeof r=="function"&&r()},O=()=>s.variant==="outlined"?e.jsx(u,{"aria-label":"actions",sx:{minWidth:0,padding:"5px",...s.sx},variant:"outlined",onClick:t,size:"small",children:e.jsx(x,{})}):s.variant==="compact"?e.jsx(C,{"aria-label":"actions",sx:s.sx,"aria-haspopup":"true",onClick:t,size:"small",children:e.jsx(x,{})}):e.jsxs(u,{sx:s.sx,onClick:t,size:"small",variant:"contained",color:"primary",children:[h("common.actions")," ",e.jsx(y,{fontSize:"small"})]});return e.jsxs(e.Fragment,{children:[O(),e.jsx(v,{anchorEl:o,open:j,onClose:c,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:s.actions.map(n=>g?e.jsx(p,{dense:!0,disabled:!0,children:e.jsx(d,{primary:e.jsx(k,{}),slotProps:{primary:{width:"56px"}}})},n.label):e.jsx(p,{divider:!!n.divider,dense:!!n.dense,disabled:!!n.disabled,onClick:r=>c(r,n.handler),children:e.jsx(d,{primary:n.label,slotProps:{primary:{color:n.color}}})},n.label))})]})}export{M as A};
@@ -1 +1 @@
1
- import{j as n}from"./vendor-mui-BXZut9Pz.js";import{V as g,X as C,Y as o}from"./vendor-blocklet-D_i_QeSo.js";import{I as f,e as v,k as x}from"./index-DgSc1Qy8.js";import{A as y}from"./actions-jxGAdGfb.js";import{C as h}from"./click-boundary-y8dVA_tr.js";import{a as j}from"./vendor-react-BPknnnEA.js";function E({data:t,variant:s="compact",onChange:p}){const{t:e}=g(),u=j(),[i,r]=C({action:"",loading:!1}),c=a=>async()=>{try{r({loading:!0}),a==="delete"?await v.delete(`/api/meters/${t.id}`):await v.put(`/api/meters/${t.id}/${a}`),a==="activate"?o.success(e("admin.meter.activated")):a==="deactivate"?o.success(e("admin.meter.deactivated")):a==="delete"&&o.success(e("admin.meter.deleted")),p(a)}catch(d){console.error(d),o.error(x(d))}finally{r({loading:!1,action:""})}},m=()=>{r({action:""})},l=[{label:t.status==="inactive"?e("admin.meter.activate"):e("admin.meter.deactivate"),handler:()=>r({action:t.status==="inactive"?"activate":"deactivate"}),color:t.status==="inactive"?"primary":"error"}];return s==="compact"&&l.push({label:e("admin.meter.view"),handler:()=>u(`/admin/billing/${t.id}`),color:"primary"}),n.jsxs(h,{children:[n.jsx(y,{variant:s,actions:l}),i.action==="activate"&&n.jsx(f,{onConfirm:c("activate"),onCancel:m,title:e("admin.meter.activate"),message:e("admin.meter.activateConfirm"),loading:i.loading,color:"primary"}),i.action==="deactivate"&&n.jsx(f,{onConfirm:c("deactivate"),onCancel:m,title:e("admin.meter.deactivate"),message:e("admin.meter.deactivateConfirm"),loading:i.loading,color:"warning"})]})}export{E as M};
1
+ import{j as n}from"./vendor-mui-BXZut9Pz.js";import{V as g,Y as C,Z as o}from"./vendor-blocklet-DcLR2Cyf.js";import{I as f,e as v,k as x}from"./index-BarN7DfU.js";import{A as y}from"./actions-BJDN6Op2.js";import{C as h}from"./click-boundary-CafubiPp.js";import{a as j}from"./vendor-react-BPknnnEA.js";function E({data:t,variant:s="compact",onChange:p}){const{t:e}=g(),u=j(),[i,r]=C({action:"",loading:!1}),c=a=>async()=>{try{r({loading:!0}),a==="delete"?await v.delete(`/api/meters/${t.id}`):await v.put(`/api/meters/${t.id}/${a}`),a==="activate"?o.success(e("admin.meter.activated")):a==="deactivate"?o.success(e("admin.meter.deactivated")):a==="delete"&&o.success(e("admin.meter.deleted")),p(a)}catch(d){console.error(d),o.error(x(d))}finally{r({loading:!1,action:""})}},m=()=>{r({action:""})},l=[{label:t.status==="inactive"?e("admin.meter.activate"):e("admin.meter.deactivate"),handler:()=>r({action:t.status==="inactive"?"activate":"deactivate"}),color:t.status==="inactive"?"primary":"error"}];return s==="compact"&&l.push({label:e("admin.meter.view"),handler:()=>u(`/admin/billing/${t.id}`),color:"primary"}),n.jsxs(h,{children:[n.jsx(y,{variant:s,actions:l}),i.action==="activate"&&n.jsx(f,{onConfirm:c("activate"),onCancel:m,title:e("admin.meter.activate"),message:e("admin.meter.activateConfirm"),loading:i.loading,color:"primary"}),i.action==="deactivate"&&n.jsx(f,{onConfirm:c("deactivate"),onCancel:m,title:e("admin.meter.deactivate"),message:e("admin.meter.deactivateConfirm"),loading:i.loading,color:"warning"})]})}export{E as M};