@relayprotocol/relay-kit-ui 9.1.4 → 10.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_cjs/src/components/common/CustomAddressModal.js +18 -8
- package/_cjs/src/components/common/CustomAddressModal.js.map +1 -1
- package/_cjs/src/components/common/RefundReason.js +106 -3
- package/_cjs/src/components/common/RefundReason.js.map +1 -1
- package/_cjs/src/components/common/TransactionModal/DepositAddressModalRenderer.js +7 -10
- package/_cjs/src/components/common/TransactionModal/DepositAddressModalRenderer.js.map +1 -1
- package/_cjs/src/components/common/TransactionModal/steps/DepositAddressValidatingStep.js.map +1 -1
- package/_cjs/src/components/common/TransactionModal/steps/ErrorStep.js +2 -2
- package/_cjs/src/components/common/TransactionModal/steps/ErrorStep.js.map +1 -1
- package/_cjs/src/components/common/TransactionModal/steps/SwapSuccessStep.js +15 -16
- package/_cjs/src/components/common/TransactionModal/steps/SwapSuccessStep.js.map +1 -1
- package/_cjs/src/components/primitives/ChainIcon.js +2 -1
- package/_cjs/src/components/primitives/ChainIcon.js.map +1 -1
- package/_cjs/src/components/primitives/ChainTokenIcon.js +6 -2
- package/_cjs/src/components/primitives/ChainTokenIcon.js.map +1 -1
- package/_cjs/src/components/widgets/OnrampWidget/modals/OnrampModal.js +10 -13
- package/_cjs/src/components/widgets/OnrampWidget/modals/OnrampModal.js.map +1 -1
- package/_cjs/src/components/widgets/OnrampWidget/widget/index.js +1 -1
- package/_cjs/src/components/widgets/OnrampWidget/widget/index.js.map +1 -1
- package/_cjs/src/components/widgets/SwapWidget/index.js +4 -4
- package/_cjs/src/components/widgets/SwapWidget/index.js.map +1 -1
- package/_cjs/src/components/widgets/SwapWidgetRenderer.js +22 -9
- package/_cjs/src/components/widgets/SwapWidgetRenderer.js.map +1 -1
- package/_cjs/src/components/widgets/WidgetContainer.js +1 -1
- package/_cjs/src/components/widgets/WidgetContainer.js.map +1 -1
- package/_cjs/src/constants/events.js +2 -1
- package/_cjs/src/constants/events.js.map +1 -1
- package/_cjs/src/constants/maxGasBuffer.js +1 -2
- package/_cjs/src/constants/maxGasBuffer.js.map +1 -1
- package/_cjs/src/hooks/index.js +3 -1
- package/_cjs/src/hooks/index.js.map +1 -1
- package/_cjs/src/hooks/useKnownTokenContract.js +45 -0
- package/_cjs/src/hooks/useKnownTokenContract.js.map +1 -0
- package/_cjs/src/providers/RelayKitProvider.js +22 -1
- package/_cjs/src/providers/RelayKitProvider.js.map +1 -1
- package/_cjs/src/types/RelayTransaction.js.map +1 -1
- package/_cjs/src/utils/nativeMaxAmount.js +4 -4
- package/_cjs/src/utils/nativeMaxAmount.js.map +1 -1
- package/_cjs/src/utils/relayTransaction.js +14 -1
- package/_cjs/src/utils/relayTransaction.js.map +1 -1
- package/_cjs/src/version.js +1 -1
- package/_cjs/src/version.js.map +1 -1
- package/_cjs/tsconfig.build.tsbuildinfo +1 -1
- package/_esm/src/components/common/CustomAddressModal.js +24 -10
- package/_esm/src/components/common/CustomAddressModal.js.map +1 -1
- package/_esm/src/components/common/RefundReason.js +107 -4
- package/_esm/src/components/common/RefundReason.js.map +1 -1
- package/_esm/src/components/common/TransactionModal/DepositAddressModalRenderer.js +10 -10
- package/_esm/src/components/common/TransactionModal/DepositAddressModalRenderer.js.map +1 -1
- package/_esm/src/components/common/TransactionModal/steps/DepositAddressValidatingStep.js +1 -1
- package/_esm/src/components/common/TransactionModal/steps/DepositAddressValidatingStep.js.map +1 -1
- package/_esm/src/components/common/TransactionModal/steps/ErrorStep.js +2 -2
- package/_esm/src/components/common/TransactionModal/steps/ErrorStep.js.map +1 -1
- package/_esm/src/components/common/TransactionModal/steps/SwapSuccessStep.js +15 -16
- package/_esm/src/components/common/TransactionModal/steps/SwapSuccessStep.js.map +1 -1
- package/_esm/src/components/primitives/ChainIcon.js +3 -2
- package/_esm/src/components/primitives/ChainIcon.js.map +1 -1
- package/_esm/src/components/primitives/ChainTokenIcon.js +6 -3
- package/_esm/src/components/primitives/ChainTokenIcon.js.map +1 -1
- package/_esm/src/components/widgets/OnrampWidget/modals/OnrampModal.js +14 -14
- package/_esm/src/components/widgets/OnrampWidget/modals/OnrampModal.js.map +1 -1
- package/_esm/src/components/widgets/OnrampWidget/widget/index.js +1 -1
- package/_esm/src/components/widgets/OnrampWidget/widget/index.js.map +1 -1
- package/_esm/src/components/widgets/SwapWidget/index.js +4 -4
- package/_esm/src/components/widgets/SwapWidget/index.js.map +1 -1
- package/_esm/src/components/widgets/SwapWidgetRenderer.js +27 -11
- package/_esm/src/components/widgets/SwapWidgetRenderer.js.map +1 -1
- package/_esm/src/components/widgets/WidgetContainer.js +1 -1
- package/_esm/src/components/widgets/WidgetContainer.js.map +1 -1
- package/_esm/src/constants/events.js +2 -1
- package/_esm/src/constants/events.js.map +1 -1
- package/_esm/src/constants/maxGasBuffer.js +0 -1
- package/_esm/src/constants/maxGasBuffer.js.map +1 -1
- package/_esm/src/hooks/index.js +2 -1
- package/_esm/src/hooks/index.js.map +1 -1
- package/_esm/src/hooks/useKnownTokenContract.js +52 -0
- package/_esm/src/hooks/useKnownTokenContract.js.map +1 -0
- package/_esm/src/providers/RelayKitProvider.js +31 -2
- package/_esm/src/providers/RelayKitProvider.js.map +1 -1
- package/_esm/src/types/RelayTransaction.js.map +1 -1
- package/_esm/src/utils/nativeMaxAmount.js +4 -4
- package/_esm/src/utils/nativeMaxAmount.js.map +1 -1
- package/_esm/src/utils/relayTransaction.js +20 -0
- package/_esm/src/utils/relayTransaction.js.map +1 -1
- package/_esm/src/version.js +1 -1
- package/_esm/src/version.js.map +1 -1
- package/_esm/tsconfig.build.tsbuildinfo +1 -1
- package/_types/src/components/common/CustomAddressModal.d.ts.map +1 -1
- package/_types/src/components/common/RefundReason.d.ts +1 -1
- package/_types/src/components/common/RefundReason.d.ts.map +1 -1
- package/_types/src/components/common/TransactionModal/DepositAddressModalRenderer.d.ts.map +1 -1
- package/_types/src/components/common/TransactionModal/steps/DepositAddressValidatingStep.d.ts +2 -2
- package/_types/src/components/common/TransactionModal/steps/DepositAddressValidatingStep.d.ts.map +1 -1
- package/_types/src/components/common/TransactionModal/steps/SwapSuccessStep.d.ts.map +1 -1
- package/_types/src/components/primitives/ChainIcon.d.ts.map +1 -1
- package/_types/src/components/primitives/ChainTokenIcon.d.ts.map +1 -1
- package/_types/src/components/widgets/OnrampWidget/modals/OnrampModal.d.ts.map +1 -1
- package/_types/src/components/widgets/OnrampWidget/widget/index.d.ts.map +1 -1
- package/_types/src/components/widgets/SwapWidget/index.d.ts +0 -2
- package/_types/src/components/widgets/SwapWidget/index.d.ts.map +1 -1
- package/_types/src/components/widgets/SwapWidgetRenderer.d.ts +0 -2
- package/_types/src/components/widgets/SwapWidgetRenderer.d.ts.map +1 -1
- package/_types/src/components/widgets/WidgetContainer.d.ts.map +1 -1
- package/_types/src/constants/events.d.ts +1 -0
- package/_types/src/constants/events.d.ts.map +1 -1
- package/_types/src/constants/maxGasBuffer.d.ts +0 -1
- package/_types/src/constants/maxGasBuffer.d.ts.map +1 -1
- package/_types/src/hooks/index.d.ts +2 -1
- package/_types/src/hooks/index.d.ts.map +1 -1
- package/_types/src/hooks/useKnownTokenContract.d.ts +35 -0
- package/_types/src/hooks/useKnownTokenContract.d.ts.map +1 -0
- package/_types/src/providers/RelayKitProvider.d.ts +13 -5
- package/_types/src/providers/RelayKitProvider.d.ts.map +1 -1
- package/_types/src/types/RelayTransaction.d.ts +1 -1
- package/_types/src/utils/nativeMaxAmount.d.ts +2 -2
- package/_types/src/utils/nativeMaxAmount.d.ts.map +1 -1
- package/_types/src/utils/relayTransaction.d.ts +16 -0
- package/_types/src/utils/relayTransaction.d.ts.map +1 -1
- package/_types/src/utils/tokens.d.ts +1 -1
- package/_types/src/version.d.ts +1 -1
- package/_types/src/version.d.ts.map +1 -1
- package/_types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/readme.md +14 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorStep.js","sourceRoot":"","sources":["../../../../../../src/components/common/TransactionModal/steps/ErrorStep.tsx"],"names":[],"mappings":";;;;;AACA,2DAA8E;AAC9E,sEAAgE;AAChE,+FAA2F;AAC3F,iFAA6E;AAC7E,8EAA0C;AAG1C,yDAA2D;AAC3D,mFAA+E;AAC/E,mFAA+E;AAG/E,yFAAkF;AAClF,2DAAyD;AACzD,qEAA8D;AAC9D,8FAA0D;AAC1D,kFAA8C;AAC9C,6EAAsE;AAiB/D,MAAM,SAAS,GAAuB,CAAC,EAC5C,KAAK,EACL,OAAO,EACP,WAAW,EACX,WAAW,EACX,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACb,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,IAAA,uBAAW,EAAC,KAAK,CAAC,CAAA;IACtC,MAAM,YAAY,GAAG,WAAW,EAAE,IAAI,EAAE,UAAU,IAAI,WAAW,EAAE,OAAO,CAAA;IAC1E,MAAM,QAAQ,GACZ,YAAY,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,UAAU,CAAC;QACjD,WAAW,EAAE,MAAM,KAAK,QAAQ,CAAA;IAClC,MAAM,WAAW,GAAG,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA;IACzD,MAAM,qBAAqB,GAAG,WAAW,EAAE,OAAO,EAAE,QAAQ,CAC1D,qBAAqB,CACtB,CAAA;IACD,MAAM,WAAW,GAAG,IAAA,yBAAc,GAAE,CAAA;IACpC,MAAM,kBAAkB,GAAG,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;QACrE,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,oBAAoB,CAAA;IACxB,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC1D,MAAM,YAAY,GAAG,IAAA,gDAAqB,EACxC,SAAS,EAAE,OAAO,EAClB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,CAClB,CAAA;IACD,IAAI,MAAM,GAAoD,SAAS,CAAA;IAEvE,IAAI,QAAQ,EAAE,CAAC;QACb,IACE,WAAW;YACX,WAAW,CAAC,MAAM,KAAK,QAAQ;YAC/B,WAAW,CAAC,IAAI,EAAE,MAAM;YACxB,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAClC,CAAC;YACD,MAAM,GAAG;gBACP,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAe;gBAClD,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAiB;aACtD,CAAA;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM;YACJ,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;gBACnC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;gBACrC,CAAC,CAAC,SAAS,CAAA;IACjB,CAAC;IACD,MAAM,SAAS,GAAG,IAAA,gDAAqB,EACrC,MAAM,EAAE,OAAO,EACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,CACf,CAAA;IAED,MAAM,WAAW,GACf,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;IAClE,MAAM,aAAa,GAAG,WAAW,EAAE,IAAI,EAAE,kBAAkB,CAAA;IAC3D,MAAM,WAAW,GAAG,WAAW,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO;QAC1E,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CACtB,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,EAAE,KAAK,WAAW,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,CACvE;QACH,CAAC,CAAC,IAAI,CAAA;IAER,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAA;IACrE,MAAM,aAAa,GAAG,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAA;IAC5D,MAAM,IAAI,GAAG,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;IAC1C,MAAM,cAAc,GAAG,aAAa,EAAE,aAAa,IAAI,IAAI,EAAE,IAAI,CAAA;IACjE,MAAM,eAAe,GAAG,aAAa,EAAE,OAAO,IAAI,IAAI,EAAE,OAAO,CAAA;IAC/D,MAAM,gBAAgB,GACpB,CAAC,QAAQ,IAAI,cAAc,IAAI,cAAc,IAAI,eAAe,CAAA;IAClE,MAAM,YAAY,GAAG,gBAAgB;QACnC,CAAC,CAAC,GAAG,kBAAkB,aAAa,IAAI,eAAe,CAAC;YACpD,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC;YAC9B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;SAC/B,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjB,CAAC,CAAC,SAAS,CAAA;IAEb,OAAO,CACL,wBAAC,eAAI,IACH,SAAS,EAAC,QAAQ,EAClB,KAAK,EAAC,QAAQ,EACd,OAAO,EAAC,SAAS,EACjB,SAAS,EAAC,cAAc,aAExB,iCAAK,SAAS,EAAC,2BAA2B,aACvC,QAAQ,CAAC,CAAC,CAAC,CACV,uBAAC,cAAG,IAAC,SAAS,EAAC,yDAAyD,YACtE,uBAAC,mCAAe,IAAC,IAAI,EAAE,6BAAa,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAI,GAC3D,CACP,CAAC,CAAC,CAAC,IAAI,EAEP,CAAC,QAAQ,IAAI,qBAAqB,CAAC,CAAC,CAAC,CACpC,uBAAC,cAAG,IAAC,SAAS,EAAC,0DAA0D,YACvE,uBAAC,mCAAe,IACd,IAAI,EAAE,yCAAmB,EACzB,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GACrB,GACE,CACP,CAAC,CAAC,CAAC,IAAI,EAEP,CAAC,QAAQ,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CACrC,uBAAC,cAAG,IAAC,SAAS,EAAC,wDAAwD,YACrE,uBAAC,mCAAe,IAAC,IAAI,EAAE,6BAAa,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAI,GAC3D,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,EAEL,QAAQ,CAAC,CAAC,CAAC,CACV,WAAW,EAAE,IAAI,EAAE,UAAU,KAAK,SAAS;gBAC3C,CAAC,WAAW,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAC/B,wBAAC,eAAI,IACH,SAAS,EAAC,QAAQ,EAClB,SAAS,EAAC,iDAAiD,aAE3D,wBAAC,eAAI,IAAC,KAAK,EAAC,WAAW,EAAC,SAAS,EAAC,YAAY,gFAE3C,SAAS,IAAI,mBAAmB,IAAI,SAAS;gCAC5C,CAAC,CAAC,mBAAmB,mBAAmB,IAAI,SAAS,CAAC,MAAM,OAAO,SAAS,CAAC,WAAW,GAAG;gCAC3F,CAAC,CAAC,8BAA8B,IAC7B,EAGP,wBAAC,eAAI,IAAC,SAAS,EAAC,gCAAgC,aAC7C,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CACxB,wBAAC,iBAAI,IACH,KAAK,EAAC,MAAM,EACZ,SAAS,EAAC,0CAA0C,aAEpD,uBAAC,kCAAc,IACb,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,YAAY,EAAE,SAAS,CAAC,OAAO,EAC/B,WAAW,EAAE,SAAS,CAAC,MAAM,EAC7B,IAAI,EAAC,MAAM,GACX,EACF,wBAAC,eAAI,IAAC,KAAK,EAAC,WAAW,EAAC,SAAS,EAAC,YAAY,aAC3C,mBAAmB,OAAG,SAAS,CAAC,MAAM,IAClC,IACF,CACR,CAAC,CAAC,CAAC,CACF,uBAAC,eAAI,IAAC,KAAK,EAAC,WAAW,kBAAS,CACjC,EAED,uBAAC,eAAI,IAAC,SAAS,EAAC,mDAAmD,YACjE,uBAAC,mCAAe,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,2BAAY,GAAI,GACxD,EAEN,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CACpB,wBAAC,iBAAI,IACH,KAAK,EAAC,MAAM,EACZ,SAAS,EAAC,0CAA0C,aAEpD,uBAAC,kCAAc,IACb,OAAO,EAAE,OAAO,CAAC,EAAE,EACnB,YAAY,EAAE,OAAO,CAAC,OAAO,EAC7B,WAAW,EAAE,OAAO,CAAC,MAAM,EAC3B,IAAI,EAAC,MAAM,GACX,EACF,wBAAC,eAAI,IAAC,KAAK,EAAC,WAAW,EAAC,SAAS,EAAC,YAAY,aAC3C,iBAAiB,OAAG,OAAO,CAAC,MAAM,IAC9B,IACF,CACR,CAAC,CAAC,CAAC,CACF,uBAAC,eAAI,IAAC,KAAK,EAAC,WAAW,kBAAS,CACjC,IACI,IACF,CACR,CAAC,CAAC,CAAC,CACF,wBAAC,eAAI,IAAC,KAAK,EAAC,WAAW,EAAC,SAAS,EAAC,8BAA8B,aAC9D,uBAAC,yBAAY,IAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,GAAI,EAC1D,aAAa;wBACZ,CAAC,CAAC,mBAAmB,aAAa,CAAC,eAAe,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,OAAO,WAAW,EAAE,WAAW,GAAG;wBACtH,CAAC,CAAC,qFAAqF,IACpF,CACR,CACF,CAAC,CAAC,CAAC,CACF,6DACE,uBAAC,sBAAS,IACR,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,GACpB,EACD,gBAAgB,CAAC,CAAC,CAAC,CAClB,wBAAC,eAAI,IAAC,KAAK,EAAC,WAAW,EAAC,SAAS,EAAC,8BAA8B,+EAE1D,GAAG,EACP,uBAAC,iBAAM,IACL,IAAI,EAAE,YAAY,EAClB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,8BAGlB,EAAC,GAAG,6BAER,CACR,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,EACA,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CACrB,6DACE,uBAAC,eAAI,IACH,SAAS,EAAC,QAAQ,EAClB,SAAS,EAAC,2JAA2J,YAErK,uBAAC,4CAAmB,IAClB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,qBAAqB,EAAE,qBAAqB,EAC5C,UAAU,EAAE,aAAa,EACzB,MAAM,EAAE,MAAM,GACd,GACG,EAEP,wBAAC,eAAI,IAAC,SAAS,EAAC,0BAA0B,aACxC,uBAAC,iBAAM,IACL,KAAK,EAAC,WAAW,EACjB,GAAG,EAAE,IAAI,EACT,OAAO,EAAE,GAAG,EAAE;oCACZ,MAAM,CAAC,IAAI,CACT,SAAS;wCACP,CAAC,CAAC,GAAG,kBAAkB,gBAAgB,SAAS,CAAC,MAAM,EAAE;wCACzD,CAAC,CAAC,GAAG,kBAAkB,yBAAyB,OAAO,EAAE,EAC3D,QAAQ,CACT,CAAA;gCACH,CAAC,EACD,SAAS,EAAC,8CAA8C,6BAGjD,EACT,uBAAC,iBAAM,IACL,GAAG,EAAE,IAAI,EACT,OAAO,EAAE,GAAG,EAAE;oCACZ,YAAY,CAAC,KAAK,CAAC,CAAA;gCACrB,CAAC,EACD,SAAS,EAAC,mCAAmC,qBAGtC,IACJ,IACN,CACJ,CAAC,CAAC,CAAC,CACF,uBAAC,iBAAM,IACL,GAAG,EAAE,IAAI,EACT,OAAO,EAAE,GAAG,EAAE;oBACZ,YAAY,CAAC,KAAK,CAAC,CAAA;gBACrB,CAAC,EACD,SAAS,EAAC,mCAAmC,qBAGtC,CACV,IACI,CACR,CAAA;AACH,CAAC,CAAA;AAnQY,QAAA,SAAS,aAmQrB","sourcesContent":["import { type FC } from 'react'\nimport { Anchor, Box, Button, Flex, Text } from '../../../primitives/index.js'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faCircleExclamation } from '@fortawesome/free-solid-svg-icons/faCircleExclamation'\nimport { faArrowRight } from '@fortawesome/free-solid-svg-icons/faArrowRight'\nimport ErrorWell from '../../ErrorWell.js'\nimport { type Address } from 'viem'\nimport { type TxHashes } from '../TransactionModalRenderer.js'\nimport { useRelayClient } from '../../../../hooks/index.js'\nimport { faCircleXmark } from '@fortawesome/free-solid-svg-icons/faCircleXmark'\nimport { faRotateRight } from '@fortawesome/free-solid-svg-icons/faRotateRight'\nimport type { useRequests } from '@relayprotocol/relay-kit-hooks'\nimport type { RelayChain } from '@relayprotocol/relay-sdk'\nimport { getTxBlockExplorerUrl } from '../../../../utils/getTxBlockExplorerUrl.js'\nimport { JSONToError } from '../../../../utils/errors.js'\nimport { TransactionsByChain } from './TransactionsByChain.js'\nimport RefundReason from '../../../common/RefundReason.js'\nimport Pill from '../../../primitives/Pill.js'\nimport { ChainTokenIcon } from '../../../primitives/ChainTokenIcon.js'\nimport type { Token } from '../../../../types/index.js'\n\ntype ErrorStepProps = {\n error?: Error | null\n address?: Address | string\n allTxHashes: TxHashes\n transaction?: ReturnType<typeof useRequests>['data']['0']\n fromChain?: RelayChain | null\n toChain?: RelayChain | null\n fromToken?: Token\n toToken?: Token\n fromAmountFormatted?: string\n toAmountFormatted?: string\n onOpenChange: (open: boolean) => void\n}\n\nexport const ErrorStep: FC<ErrorStepProps> = ({\n error,\n address,\n allTxHashes,\n transaction,\n fromChain,\n toChain,\n fromToken,\n toToken,\n fromAmountFormatted,\n toAmountFormatted,\n onOpenChange\n}) => {\n const parsedError = JSONToError(error)\n const errorMessage = transaction?.data?.failReason ?? parsedError?.message\n const isRefund =\n errorMessage?.toLowerCase()?.includes('refunded') ||\n transaction?.status === 'refund'\n const hasTxHashes = allTxHashes && allTxHashes.length > 0\n const isSolverStatusTimeout = parsedError?.message?.includes(\n 'solver status check'\n )\n const relayClient = useRelayClient()\n const baseTransactionUrl = relayClient?.baseApiUrl.includes('testnets')\n ? 'https://testnets.relay.link'\n : 'https://relay.link'\n const depositTx = allTxHashes ? allTxHashes[0] : undefined\n const depositTxUrl = getTxBlockExplorerUrl(\n depositTx?.chainId,\n relayClient?.chains,\n depositTx?.txHash\n )\n let fillTx: { txHash: string; chainId: number } | undefined = undefined\n\n if (isRefund) {\n if (\n transaction &&\n transaction.status === 'refund' &&\n transaction.data?.outTxs &&\n transaction.data.outTxs.length > 0\n ) {\n fillTx = {\n txHash: transaction.data.outTxs[0].hash as Address,\n chainId: transaction.data.outTxs[0].chainId as number\n }\n }\n } else {\n fillTx =\n allTxHashes && allTxHashes.length > 1\n ? allTxHashes[allTxHashes.length - 1]\n : undefined\n }\n const fillTxUrl = getTxBlockExplorerUrl(\n fillTx?.chainId,\n relayClient?.chains,\n fillTx?.txHash\n )\n\n const mergedError =\n isRefund && errorMessage ? new Error(errorMessage) : parsedError\n const refundDetails = transaction?.data?.refundCurrencyData\n const refundChain = transaction?.data?.refundCurrencyData?.currency?.chainId\n ? relayClient?.chains.find(\n (chain) =>\n chain.id === transaction.data?.refundCurrencyData?.currency?.chainId\n )\n : null\n\n const isWithdrawable = Boolean(transaction?.protocol?.isWithdrawable)\n const depositOrigin = transaction?.protocol?.deposit?.origin\n const inTx = transaction?.data?.inTxs?.[0]\n const withdrawTxHash = depositOrigin?.transactionId ?? inTx?.hash\n const withdrawChainId = depositOrigin?.chainId ?? inTx?.chainId\n const showWithdrawLink =\n !isRefund && isWithdrawable && withdrawTxHash && withdrawChainId\n const withdrawHref = showWithdrawLink\n ? `${baseTransactionUrl}/withdraw?${new URLSearchParams({\n tab: 'claim',\n chain: String(withdrawChainId),\n txHash: String(withdrawTxHash)\n }).toString()}`\n : undefined\n\n return (\n <Flex\n direction=\"column\"\n align=\"center\"\n justify=\"between\"\n className=\"relay:w-full\"\n >\n <div className=\"relay:animate-icon-pop-in\">\n {isRefund ? (\n <Box className=\"relay:mr-2 relay:text-[color:var(--relay-colors-gray9)]\">\n <FontAwesomeIcon icon={faRotateRight} style={{ height: 40 }} />\n </Box>\n ) : null}\n\n {!isRefund && isSolverStatusTimeout ? (\n <Box className=\"relay:mr-2 relay:text-[color:var(--relay-colors-amber9)]\">\n <FontAwesomeIcon\n icon={faCircleExclamation}\n style={{ height: 40 }}\n />\n </Box>\n ) : null}\n\n {!isRefund && !isSolverStatusTimeout ? (\n <Box className=\"relay:mr-2 relay:text-[color:var(--relay-colors-red9)]\">\n <FontAwesomeIcon icon={faCircleXmark} style={{ height: 40 }} />\n </Box>\n ) : null}\n </div>\n\n {isRefund ? (\n transaction?.data?.failReason === 'UNKNOWN' ||\n !transaction?.data?.failReason ? (\n <Flex\n direction=\"column\"\n className=\"relay:my-4 relay:text-center relay:items-center\"\n >\n <Text style=\"subtitle1\" className=\"relay:mb-4\">\n It looks like an unknown issue occurred during the transaction.\n {fromToken && fromAmountFormatted && fromChain\n ? ` We've refunded ${fromAmountFormatted} ${fromToken.symbol} on ${fromChain.displayName}.`\n : ` We've refunded your tokens.`}\n </Text>\n\n {/* Transaction Pills */}\n <Flex className=\"relay:items-center relay:gap-2\">\n {fromToken && fromChain ? (\n <Pill\n color=\"gray\"\n className=\"relay:items-center relay:py-2 relay:px-3\"\n >\n <ChainTokenIcon\n chainId={fromChain.id}\n tokenlogoURI={fromToken.logoURI}\n tokenSymbol={fromToken.symbol}\n size=\"base\"\n />\n <Text style=\"subtitle1\" className=\"relay:ml-2\">\n {fromAmountFormatted} {fromToken.symbol}\n </Text>\n </Pill>\n ) : (\n <Text style=\"subtitle1\">?</Text>\n )}\n\n <Flex className=\"relay:items-center relay:justify-center relay:p-2\">\n <FontAwesomeIcon style={{ width: 14 }} icon={faArrowRight} />\n </Flex>\n\n {toToken && toChain ? (\n <Pill\n color=\"gray\"\n className=\"relay:items-center relay:py-2 relay:px-3\"\n >\n <ChainTokenIcon\n chainId={toChain.id}\n tokenlogoURI={toToken.logoURI}\n tokenSymbol={toToken.symbol}\n size=\"base\"\n />\n <Text style=\"subtitle1\" className=\"relay:ml-2\">\n {toAmountFormatted} {toToken.symbol}\n </Text>\n </Pill>\n ) : (\n <Text style=\"subtitle1\">?</Text>\n )}\n </Flex>\n </Flex>\n ) : (\n <Text style=\"subtitle2\" className=\"relay:my-4 relay:text-center\">\n <RefundReason reasonCode={transaction?.data?.failReason} />\n {refundDetails\n ? ` We've refunded ${refundDetails.amountFormatted} ${refundDetails.currency?.symbol} on ${refundChain?.displayName}.`\n : ` We apologize for the inconvenience, a refund has been sent to your wallet address.`}\n </Text>\n )\n ) : (\n <>\n <ErrorWell\n error={mergedError}\n hasTxHashes={hasTxHashes}\n fromChain={fromChain}\n />\n {showWithdrawLink ? (\n <Text style=\"subtitle2\" className=\"relay:my-4 relay:text-center\">\n This transaction couldn't be refunded automatically. Visit\n the{' '}\n <Anchor\n href={withdrawHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Withdraw page\n </Anchor>{' '}\n to manually withdraw.\n </Text>\n ) : null}\n </>\n )}\n {depositTx || fillTx ? (\n <>\n <Flex\n direction=\"column\"\n className=\"relay:p-3 relay:border relay:border-solid relay:border-[var(--relay-colors-subtle-border-color)] relay:gap-3 relay:w-full relay:rounded-[12px] relay:mb-6\"\n >\n <TransactionsByChain\n allTxHashes={allTxHashes}\n fromChain={fromChain}\n toChain={toChain}\n isSolverStatusTimeout={isSolverStatusTimeout}\n refundData={refundDetails}\n fillTx={fillTx}\n />\n </Flex>\n\n <Flex className=\"relay:gap-3 relay:w-full\">\n <Button\n color=\"secondary\"\n cta={true}\n onClick={() => {\n window.open(\n depositTx\n ? `${baseTransactionUrl}/transaction/${depositTx.txHash}`\n : `${baseTransactionUrl}/transactions?address=${address}`,\n '_blank'\n )\n }}\n className=\"relay:justify-center relay:whitespace-nowrap\"\n >\n View Details\n </Button>\n <Button\n cta={true}\n onClick={() => {\n onOpenChange(false)\n }}\n className=\"relay:justify-center relay:w-full\"\n >\n Done\n </Button>\n </Flex>\n </>\n ) : (\n <Button\n cta={true}\n onClick={() => {\n onOpenChange(false)\n }}\n className=\"relay:justify-center relay:w-full\"\n >\n Done\n </Button>\n )}\n </Flex>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ErrorStep.js","sourceRoot":"","sources":["../../../../../../src/components/common/TransactionModal/steps/ErrorStep.tsx"],"names":[],"mappings":"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","sourcesContent":["import { type FC } from 'react'\nimport { Anchor, Box, Button, Flex, Text } from '../../../primitives/index.js'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faCircleExclamation } from '@fortawesome/free-solid-svg-icons/faCircleExclamation'\nimport { faArrowRight } from '@fortawesome/free-solid-svg-icons/faArrowRight'\nimport ErrorWell from '../../ErrorWell.js'\nimport { type Address } from 'viem'\nimport { type TxHashes } from '../TransactionModalRenderer.js'\nimport { useRelayClient } from '../../../../hooks/index.js'\nimport { faCircleXmark } from '@fortawesome/free-solid-svg-icons/faCircleXmark'\nimport { faRotateRight } from '@fortawesome/free-solid-svg-icons/faRotateRight'\nimport type { useRequests } from '@relayprotocol/relay-kit-hooks'\nimport type { RelayChain } from '@relayprotocol/relay-sdk'\nimport { getTxBlockExplorerUrl } from '../../../../utils/getTxBlockExplorerUrl.js'\nimport { JSONToError } from '../../../../utils/errors.js'\nimport { TransactionsByChain } from './TransactionsByChain.js'\nimport RefundReason from '../../../common/RefundReason.js'\nimport Pill from '../../../primitives/Pill.js'\nimport { ChainTokenIcon } from '../../../primitives/ChainTokenIcon.js'\nimport type { Token } from '../../../../types/index.js'\n\ntype ErrorStepProps = {\n error?: Error | null\n address?: Address | string\n allTxHashes: TxHashes\n transaction?: ReturnType<typeof useRequests>['data']['0']\n fromChain?: RelayChain | null\n toChain?: RelayChain | null\n fromToken?: Token\n toToken?: Token\n fromAmountFormatted?: string\n toAmountFormatted?: string\n onOpenChange: (open: boolean) => void\n}\n\nexport const ErrorStep: FC<ErrorStepProps> = ({\n error,\n address,\n allTxHashes,\n transaction,\n fromChain,\n toChain,\n fromToken,\n toToken,\n fromAmountFormatted,\n toAmountFormatted,\n onOpenChange\n}) => {\n const parsedError = JSONToError(error)\n const errorMessage = transaction?.data?.failReason ?? parsedError?.message\n const isRefund =\n errorMessage?.toLowerCase()?.includes('refunded') ||\n transaction?.status === 'refund'\n const hasTxHashes = allTxHashes && allTxHashes.length > 0\n const isSolverStatusTimeout = parsedError?.message?.includes(\n 'solver status check'\n )\n const relayClient = useRelayClient()\n const baseTransactionUrl = relayClient?.baseApiUrl.includes('testnets')\n ? 'https://testnets.relay.link'\n : 'https://relay.link'\n const depositTx = allTxHashes ? allTxHashes[0] : undefined\n const depositTxUrl = getTxBlockExplorerUrl(\n depositTx?.chainId,\n relayClient?.chains,\n depositTx?.txHash\n )\n let fillTx: { txHash: string; chainId: number } | undefined = undefined\n\n if (isRefund) {\n if (\n transaction &&\n transaction.status === 'refund' &&\n transaction.data?.outTxs &&\n transaction.data.outTxs.length > 0\n ) {\n fillTx = {\n txHash: transaction.data.outTxs[0].txHash as Address,\n chainId: transaction.data.outTxs[0].chainId as number\n }\n }\n } else {\n fillTx =\n allTxHashes && allTxHashes.length > 1\n ? allTxHashes[allTxHashes.length - 1]\n : undefined\n }\n const fillTxUrl = getTxBlockExplorerUrl(\n fillTx?.chainId,\n relayClient?.chains,\n fillTx?.txHash\n )\n\n const mergedError =\n isRefund && errorMessage ? new Error(errorMessage) : parsedError\n const refundDetails = transaction?.data?.refundCurrencyData\n const refundChain = transaction?.data?.refundCurrencyData?.currency?.chainId\n ? relayClient?.chains.find(\n (chain) =>\n chain.id === transaction.data?.refundCurrencyData?.currency?.chainId\n )\n : null\n\n const isWithdrawable = Boolean(transaction?.protocol?.isWithdrawable)\n const depositOrigin = transaction?.protocol?.deposit?.origin\n const inTx = transaction?.data?.inTxs?.[0]\n const withdrawTxHash = depositOrigin?.transactionId ?? inTx?.txHash\n const withdrawChainId = depositOrigin?.chainId ?? inTx?.chainId\n const showWithdrawLink =\n !isRefund && isWithdrawable && withdrawTxHash && withdrawChainId\n const withdrawHref = showWithdrawLink\n ? `${baseTransactionUrl}/withdraw?${new URLSearchParams({\n tab: 'claim',\n chain: String(withdrawChainId),\n txHash: String(withdrawTxHash)\n }).toString()}`\n : undefined\n\n return (\n <Flex\n direction=\"column\"\n align=\"center\"\n justify=\"between\"\n className=\"relay:w-full\"\n >\n <div className=\"relay:animate-icon-pop-in\">\n {isRefund ? (\n <Box className=\"relay:mr-2 relay:text-[color:var(--relay-colors-gray9)]\">\n <FontAwesomeIcon icon={faRotateRight} style={{ height: 40 }} />\n </Box>\n ) : null}\n\n {!isRefund && isSolverStatusTimeout ? (\n <Box className=\"relay:mr-2 relay:text-[color:var(--relay-colors-amber9)]\">\n <FontAwesomeIcon\n icon={faCircleExclamation}\n style={{ height: 40 }}\n />\n </Box>\n ) : null}\n\n {!isRefund && !isSolverStatusTimeout ? (\n <Box className=\"relay:mr-2 relay:text-[color:var(--relay-colors-red9)]\">\n <FontAwesomeIcon icon={faCircleXmark} style={{ height: 40 }} />\n </Box>\n ) : null}\n </div>\n\n {isRefund ? (\n transaction?.data?.failReason === 'UNKNOWN' ||\n !transaction?.data?.failReason ? (\n <Flex\n direction=\"column\"\n className=\"relay:my-4 relay:text-center relay:items-center\"\n >\n <Text style=\"subtitle1\" className=\"relay:mb-4\">\n It looks like an unknown issue occurred during the transaction.\n {fromToken && fromAmountFormatted && fromChain\n ? ` We've refunded ${fromAmountFormatted} ${fromToken.symbol} on ${fromChain.displayName}.`\n : ` We've refunded your tokens.`}\n </Text>\n\n {/* Transaction Pills */}\n <Flex className=\"relay:items-center relay:gap-2\">\n {fromToken && fromChain ? (\n <Pill\n color=\"gray\"\n className=\"relay:items-center relay:py-2 relay:px-3\"\n >\n <ChainTokenIcon\n chainId={fromChain.id}\n tokenlogoURI={fromToken.logoURI}\n tokenSymbol={fromToken.symbol}\n size=\"base\"\n />\n <Text style=\"subtitle1\" className=\"relay:ml-2\">\n {fromAmountFormatted} {fromToken.symbol}\n </Text>\n </Pill>\n ) : (\n <Text style=\"subtitle1\">?</Text>\n )}\n\n <Flex className=\"relay:items-center relay:justify-center relay:p-2\">\n <FontAwesomeIcon style={{ width: 14 }} icon={faArrowRight} />\n </Flex>\n\n {toToken && toChain ? (\n <Pill\n color=\"gray\"\n className=\"relay:items-center relay:py-2 relay:px-3\"\n >\n <ChainTokenIcon\n chainId={toChain.id}\n tokenlogoURI={toToken.logoURI}\n tokenSymbol={toToken.symbol}\n size=\"base\"\n />\n <Text style=\"subtitle1\" className=\"relay:ml-2\">\n {toAmountFormatted} {toToken.symbol}\n </Text>\n </Pill>\n ) : (\n <Text style=\"subtitle1\">?</Text>\n )}\n </Flex>\n </Flex>\n ) : (\n <Text style=\"subtitle2\" className=\"relay:my-4 relay:text-center\">\n <RefundReason reasonCode={transaction?.data?.failReason} />\n {refundDetails\n ? ` We've refunded ${refundDetails.amountFormatted} ${refundDetails.currency?.symbol} on ${refundChain?.displayName}.`\n : ` We apologize for the inconvenience, a refund has been sent to your wallet address.`}\n </Text>\n )\n ) : (\n <>\n <ErrorWell\n error={mergedError}\n hasTxHashes={hasTxHashes}\n fromChain={fromChain}\n />\n {showWithdrawLink ? (\n <Text style=\"subtitle2\" className=\"relay:my-4 relay:text-center\">\n This transaction couldn't be refunded automatically. Visit\n the{' '}\n <Anchor\n href={withdrawHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n Withdraw page\n </Anchor>{' '}\n to manually withdraw.\n </Text>\n ) : null}\n </>\n )}\n {depositTx || fillTx ? (\n <>\n <Flex\n direction=\"column\"\n className=\"relay:p-3 relay:border relay:border-solid relay:border-[var(--relay-colors-subtle-border-color)] relay:gap-3 relay:w-full relay:rounded-[12px] relay:mb-6\"\n >\n <TransactionsByChain\n allTxHashes={allTxHashes}\n fromChain={fromChain}\n toChain={toChain}\n isSolverStatusTimeout={isSolverStatusTimeout}\n refundData={refundDetails}\n fillTx={fillTx}\n />\n </Flex>\n\n <Flex className=\"relay:gap-3 relay:w-full\">\n <Button\n color=\"secondary\"\n cta={true}\n onClick={() => {\n window.open(\n depositTx\n ? `${baseTransactionUrl}/transaction/${depositTx.txHash}`\n : `${baseTransactionUrl}/transactions?address=${address}`,\n '_blank'\n )\n }}\n className=\"relay:justify-center relay:whitespace-nowrap\"\n >\n View Details\n </Button>\n <Button\n cta={true}\n onClick={() => {\n onOpenChange(false)\n }}\n className=\"relay:justify-center relay:w-full\"\n >\n Done\n </Button>\n </Flex>\n </>\n ) : (\n <Button\n cta={true}\n onClick={() => {\n onOpenChange(false)\n }}\n className=\"relay:justify-center relay:w-full\"\n >\n Done\n </Button>\n )}\n </Flex>\n )\n}\n"]}
|
|
@@ -17,6 +17,7 @@ const index_js_3 = require("../../../../icons/index.js");
|
|
|
17
17
|
const RelayKitProvider_js_1 = require("../../../../providers/RelayKitProvider.js");
|
|
18
18
|
const getTxBlockExplorerUrl_js_1 = require("../../../../utils/getTxBlockExplorerUrl.js");
|
|
19
19
|
const truncate_js_1 = require("../../../../utils/truncate.js");
|
|
20
|
+
const relayTransaction_js_1 = require("../../../../utils/relayTransaction.js");
|
|
20
21
|
const SwapSuccessStep = ({ fromToken, toToken, fromAmountFormatted, toAmountFormatted, allTxHashes, transaction, fillTime, seconds, timeEstimate, details, isLoadingTransaction, onOpenChange, requestId, isGasSponsored, currentCheckStatus }) => {
|
|
21
22
|
const relayClient = (0, index_js_2.useRelayClient)();
|
|
22
23
|
const haptic = (0, RelayKitProvider_js_1.useHapticEvent)();
|
|
@@ -24,18 +25,17 @@ const SwapSuccessStep = ({ fromToken, toToken, fromAmountFormatted, toAmountForm
|
|
|
24
25
|
const isUnwrap = details?.operation === 'unwrap';
|
|
25
26
|
const providerOptionsContext = (0, react_1.useContext)(RelayKitProvider_js_1.ProviderOptionsContext);
|
|
26
27
|
const chains = relayClient?.chains;
|
|
27
|
-
const
|
|
28
|
-
|
|
28
|
+
const { currencyIn: requestCurrencyIn, currencyOut: requestCurrencyOut, currencyGasTopup: requestCurrencyGasTopup } = (0, relayTransaction_js_1.getRequestCurrencies)(transaction);
|
|
29
|
+
const _fromAmountFormatted = requestCurrencyIn?.amount
|
|
30
|
+
? (0, numbers_js_1.formatSignificantDigits)(requestCurrencyIn.amount, requestCurrencyIn.currency?.decimals ?? 18)
|
|
29
31
|
: fromAmountFormatted;
|
|
30
|
-
const _fromToken =
|
|
31
|
-
const fromTokenLogoUri =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
? (0, numbers_js_1.formatSignificantDigits)(transaction?.data?.metadata?.currencyOut?.amount, transaction?.data?.metadata?.currencyOut?.currency?.decimals ?? 18)
|
|
32
|
+
const _fromToken = requestCurrencyIn?.currency ?? fromToken;
|
|
33
|
+
const fromTokenLogoUri = requestCurrencyIn?.currency?.metadata?.logoURI ?? fromToken?.logoURI;
|
|
34
|
+
const _toAmountFormatted = requestCurrencyOut?.amount
|
|
35
|
+
? (0, numbers_js_1.formatSignificantDigits)(requestCurrencyOut.amount, requestCurrencyOut.currency?.decimals ?? 18)
|
|
35
36
|
: toAmountFormatted;
|
|
36
|
-
const _toToken =
|
|
37
|
-
const toTokenLogoUri =
|
|
38
|
-
toToken?.logoURI;
|
|
37
|
+
const _toToken = requestCurrencyOut?.currency ?? toToken;
|
|
38
|
+
const toTokenLogoUri = requestCurrencyOut?.currency?.metadata?.logoURI ?? toToken?.logoURI;
|
|
39
39
|
const baseTransactionUrl = relayClient?.baseApiUrl.includes('testnets')
|
|
40
40
|
? 'https://testnets.relay.link'
|
|
41
41
|
: 'https://relay.link';
|
|
@@ -59,14 +59,13 @@ const SwapSuccessStep = ({ fromToken, toToken, fromAmountFormatted, toAmountForm
|
|
|
59
59
|
const estimatedMinutes = isBitcoinOrigin || isBitcoinDestination
|
|
60
60
|
? 10
|
|
61
61
|
: Math.round(timeEstimateMs / 1000 / 60);
|
|
62
|
-
const gasTopUpAmountCurrency =
|
|
63
|
-
const formattedGasTopUpAmount =
|
|
64
|
-
?.
|
|
65
|
-
? (0, numbers_js_1.formatSignificantDigits)(BigInt(transaction?.data?.metadata?.currencyGasTopup?.amount), gasTopUpAmountCurrency?.decimals ?? 18)
|
|
62
|
+
const gasTopUpAmountCurrency = requestCurrencyGasTopup?.currency;
|
|
63
|
+
const formattedGasTopUpAmount = requestCurrencyGasTopup?.amount
|
|
64
|
+
? (0, numbers_js_1.formatSignificantDigits)(BigInt(requestCurrencyGasTopup.amount), gasTopUpAmountCurrency?.decimals ?? 18)
|
|
66
65
|
: undefined;
|
|
67
66
|
const getTxHashForChain = (chainId, skipRefundCheck = false) => {
|
|
68
67
|
if (isRefund && !skipRefundCheck) {
|
|
69
|
-
const refundTxHash = transaction?.data?.outTxs?.[0]?.
|
|
68
|
+
const refundTxHash = transaction?.data?.outTxs?.[0]?.txHash;
|
|
70
69
|
const refundChainId = transaction?.data?.outTxs?.[0]?.chainId;
|
|
71
70
|
if (refundChainId === chainId && refundTxHash) {
|
|
72
71
|
return refundTxHash;
|
|
@@ -85,7 +84,7 @@ const SwapSuccessStep = ({ fromToken, toToken, fromAmountFormatted, toAmountForm
|
|
|
85
84
|
? `Bitcoin confirmation takes ${estimatedMinutes} minutes. Track progress on the transaction page.`
|
|
86
85
|
: `Processing bridge, this will take ~${estimatedMinutes} ${estimatedMinutes === 1 ? 'min' : 'mins'}.` }), (0, jsx_runtime_1.jsxs)(index_js_1.Flex, { align: "center", className: "relay:gap-2 relay:mb-[24px]", children: [fromChain ? ((0, jsx_runtime_1.jsxs)(index_js_1.Pill, { color: "gray", className: "relay:items-center relay:py-2 relay:px-3", children: [(0, jsx_runtime_1.jsx)(index_js_1.ChainTokenIcon, { chainId: fromChain.id, tokenlogoURI: fromTokenLogoUri, tokenSymbol: _fromToken?.symbol, size: "sm", chainRadius: 2.5 }), (0, jsx_runtime_1.jsxs)(index_js_1.Text, { style: "subtitle1", className: "relay:ml-2", children: [_fromAmountFormatted, " ", _fromToken?.symbol] })] })) : ((0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "subtitle1", children: "?" })), (0, jsx_runtime_1.jsx)(index_js_1.Flex, { className: "relay:items-center relay:justify-center relay:p-2", children: (0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { style: { width: 14 }, icon: faArrowRight_1.faArrowRight }) }), toChain ? ((0, jsx_runtime_1.jsxs)(index_js_1.Pill, { color: "gray", className: "relay:items-center relay:py-2 relay:px-3", children: [(0, jsx_runtime_1.jsx)(index_js_1.ChainTokenIcon, { chainId: toChain.id, tokenlogoURI: toTokenLogoUri, tokenSymbol: _toToken?.symbol, size: "sm", chainRadius: 2.5 }), (0, jsx_runtime_1.jsxs)(index_js_1.Text, { style: "subtitle1", className: "relay:ml-2", children: [_toAmountFormatted, " ", _toToken?.symbol] })] })) : ((0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "subtitle1", children: "?" }))] }), (0, jsx_runtime_1.jsx)(index_js_1.Text, { style: "body2", className: "relay:rounded-[12px] relay:text-center relay:p-4 relay:bg-[var(--relay-colors-gray2)]", children: "You can close this modal while it finalizes on the blockchain. The transaction will continue in the background." }), (() => {
|
|
87
86
|
if (isRefund) {
|
|
88
|
-
const refundTxHash = transaction?.data?.outTxs?.[0]?.
|
|
87
|
+
const refundTxHash = transaction?.data?.outTxs?.[0]?.txHash;
|
|
89
88
|
const refundChainId = transaction?.data?.outTxs?.[0]?.chainId;
|
|
90
89
|
if (refundTxHash && refundChainId) {
|
|
91
90
|
const txUrl = getTxUrl(refundChainId, refundTxHash);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SwapSuccessStep.js","sourceRoot":"","sources":["../../../../../../src/components/common/TransactionModal/steps/SwapSuccessStep.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, type FC } from 'react'\nimport {\n Box,\n Button,\n Flex,\n Pill,\n Text,\n ChainTokenIcon,\n Skeleton,\n Anchor\n} from '../../../primitives/index.js'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { type TxHashes } from '../TransactionModalRenderer.js'\nimport { type Token } from '../../../../types/index.js'\nimport type { useRequests } from '@relayprotocol/relay-kit-hooks'\nimport { useRelayClient } from '../../../../hooks/index.js'\nimport { faClockFour } from '@fortawesome/free-solid-svg-icons/faClockFour'\nimport {\n ASSETS_RELAY_API,\n type Execute,\n type ExecuteStepItem\n} from '@relayprotocol/relay-sdk'\nimport { bitcoin } from '../../../../utils/bitcoin.js'\nimport { formatSignificantDigits } from '../../../../utils/numbers.js'\nimport { TransactionsByChain } from './TransactionsByChain.js'\nimport { faArrowRight } from '@fortawesome/free-solid-svg-icons/faArrowRight'\nimport { faCheck } from '@fortawesome/free-solid-svg-icons/faCheck'\nimport { RelayIcon, XIcon } from '../../../../icons/index.js'\nimport {\n ProviderOptionsContext,\n useHapticEvent\n} from '../../../../providers/RelayKitProvider.js'\nimport { getTxBlockExplorerUrl } from '../../../../utils/getTxBlockExplorerUrl.js'\nimport { truncateAddress } from '../../../../utils/truncate.js'\n\ntype SwapSuccessStepProps = {\n fromToken?: Token\n toToken?: Token\n fromAmountFormatted?: string\n toAmountFormatted?: string\n allTxHashes: TxHashes\n transaction?: ReturnType<typeof useRequests>['data']['0']\n seconds: number\n fillTime: string\n timeEstimate?: string\n details?: Execute['details'] | null\n isLoadingTransaction?: boolean\n onOpenChange: (open: boolean) => void\n requestId: string | null\n isGasSponsored?: boolean\n currentCheckStatus?: ExecuteStepItem['checkStatus']\n}\n\nexport const SwapSuccessStep: FC<SwapSuccessStepProps> = ({\n fromToken,\n toToken,\n fromAmountFormatted,\n toAmountFormatted,\n allTxHashes,\n transaction,\n fillTime,\n seconds,\n timeEstimate,\n details,\n isLoadingTransaction,\n onOpenChange,\n requestId,\n isGasSponsored,\n currentCheckStatus\n}) => {\n const relayClient = useRelayClient()\n const haptic = useHapticEvent()\n const isWrap = details?.operation === 'wrap'\n const isUnwrap = details?.operation === 'unwrap'\n const providerOptionsContext = useContext(ProviderOptionsContext)\n\n // Get chains data for explorer URL generation\n const chains = relayClient?.chains\n\n const _fromAmountFormatted = transaction?.data?.metadata?.currencyIn?.amount\n ? formatSignificantDigits(\n transaction?.data?.metadata?.currencyIn?.amount,\n transaction?.data?.metadata?.currencyIn?.currency?.decimals ?? 18\n )\n : fromAmountFormatted\n const _fromToken =\n transaction?.data?.metadata?.currencyIn?.currency ?? fromToken\n const fromTokenLogoUri =\n transaction?.data?.metadata?.currencyIn?.currency?.metadata?.logoURI ??\n fromToken?.logoURI\n const _toAmountFormatted = transaction?.data?.metadata?.currencyOut?.amount\n ? formatSignificantDigits(\n transaction?.data?.metadata?.currencyOut?.amount,\n transaction?.data?.metadata?.currencyOut?.currency?.decimals ?? 18\n )\n : toAmountFormatted\n const _toToken = transaction?.data?.metadata?.currencyOut?.currency ?? toToken\n const toTokenLogoUri =\n transaction?.data?.metadata?.currencyOut?.currency?.metadata?.logoURI ??\n toToken?.logoURI\n\n const baseTransactionUrl = relayClient?.baseApiUrl.includes('testnets')\n ? 'https://testnets.relay.link'\n : 'https://relay.link'\n const fromChain = _fromToken\n ? relayClient?.chains.find((chain) => chain.id === _fromToken?.chainId)\n : null\n const toChain = _toToken\n ? relayClient?.chains.find((chain) => chain.id === _toToken?.chainId)\n : null\n\n const isSameChainSwap = fromChain?.id === toChain?.id && !isWrap && !isUnwrap\n const delayedTxUrl = requestId\n ? `${baseTransactionUrl}/transaction/${requestId}`\n : null\n const timeEstimateMs = (details?.timeEstimate ?? 0) * 1000\n\n const isBitcoinOrigin = fromChain?.id === bitcoin.id\n const isBitcoinDestination = toChain?.id === bitcoin.id\n\n const isRefund =\n transaction?.status === 'refund' || transaction?.data?.refundCurrencyData\n\n // Show delayed screen when:\n // 1. Bitcoin as origin: Immediately (no status check needed, tx takes 10+ mins)\n // 2. Bitcoin as destination: When status reaches 'submitted'\n\n const isDelayedTx =\n isBitcoinOrigin ||\n (isBitcoinDestination &&\n (currentCheckStatus === 'submitted' || currentCheckStatus === 'success'))\n\n // Bitcoin transactions typically take 10+ minutes for confirmation\n const estimatedMinutes =\n isBitcoinOrigin || isBitcoinDestination\n ? 10\n : Math.round(timeEstimateMs / 1000 / 60)\n\n const gasTopUpAmountCurrency =\n transaction?.data?.metadata?.currencyGasTopup?.currency\n const formattedGasTopUpAmount = transaction?.data?.metadata?.currencyGasTopup\n ?.amount\n ? formatSignificantDigits(\n BigInt(transaction?.data?.metadata?.currencyGasTopup?.amount),\n gasTopUpAmountCurrency?.decimals ?? 18\n )\n : undefined\n\n // Helper function to get transaction hash for a specific chain\n const getTxHashForChain = (chainId: number, skipRefundCheck = false) => {\n if (isRefund && !skipRefundCheck) {\n const refundTxHash = transaction?.data?.outTxs?.[0]?.hash\n const refundChainId = transaction?.data?.outTxs?.[0]?.chainId\n if (refundChainId === chainId && refundTxHash) {\n return refundTxHash\n }\n if (transaction?.data?.refundCurrencyData && !refundTxHash) {\n return undefined\n }\n }\n return allTxHashes.find((tx) => tx.chainId === chainId)?.txHash\n }\n\n // Helper function to get transaction URL for a specific chain and hash\n const getTxUrl = (chainId: number, txHash: string) => {\n return getTxBlockExplorerUrl(chainId, chains, txHash)\n }\n\n const shareIconFill =\n providerOptionsContext.themeScheme === 'dark' ? '#fff' : '#000'\n\n return isDelayedTx ? (\n <>\n <Flex direction=\"column\" align=\"center\" justify=\"between\">\n <div className=\"relay:animate-icon-pop-in\">\n <Flex\n align=\"center\"\n justify=\"center\"\n className=\"relay:relative relay:rounded-full relay:h-[80px] relay:w-[78px] relay:bg-[var(--relay-colors-amber2)]\"\n >\n <svg\n className=\"relay:absolute relay:top-[7px] relay:left-0 relay:z-0\"\n width=\"76\"\n height=\"80\"\n viewBox=\"0 0 64 54\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <mask id=\"path-1-inside-1_1551_3458\" fill=\"white\">\n <path d=\"M60.5983 22C62.477 22 64.0187 23.5272 63.8194 25.3953C63.3839 29.4763 62.1661 33.4465 60.2215 37.0847C57.7408 41.7257 54.1538 45.6834 49.7782 48.607C45.4027 51.5307 40.3736 53.3301 35.1366 53.8459C29.8995 54.3617 24.616 53.578 19.7541 51.5641C14.8923 49.5503 10.6021 46.3685 7.26367 42.3006C3.92522 38.2327 1.64152 33.4042 0.614871 28.2429C-0.411778 23.0816 -0.149694 17.7467 1.37791 12.7109C2.57543 8.7632 4.52167 5.09478 7.09947 1.90114C8.27945 0.439263 10.4495 0.449489 11.7779 1.77792C13.1063 3.10635 13.0848 5.24829 11.9473 6.74343C10.1382 9.12126 8.76082 11.8094 7.88827 14.6858C6.68544 18.651 6.47907 22.8516 7.28745 26.9156C8.09583 30.9796 9.89401 34.7816 12.5227 37.9846C15.1514 41.1877 18.5294 43.693 22.3576 45.2787C26.1859 46.8644 30.346 47.4815 34.4697 47.0754C38.5934 46.6692 42.5532 45.2524 45.9985 42.9503C49.4438 40.6482 52.2682 37.532 54.2215 33.8776C55.6384 31.2267 56.5653 28.352 56.9674 25.3914C57.2203 23.5298 58.7197 22 60.5983 22Z\" />\n </mask>\n <path\n d=\"M60.5983 22C62.477 22 64.0187 23.5272 63.8194 25.3953C63.3839 29.4763 62.1661 33.4465 60.2215 37.0847C57.7408 41.7257 54.1538 45.6834 49.7782 48.607C45.4027 51.5307 40.3736 53.3301 35.1366 53.8459C29.8995 54.3617 24.616 53.578 19.7541 51.5641C14.8923 49.5503 10.6021 46.3685 7.26367 42.3006C3.92522 38.2327 1.64152 33.4042 0.614871 28.2429C-0.411778 23.0816 -0.149694 17.7467 1.37791 12.7109C2.57543 8.7632 4.52167 5.09478 7.09947 1.90114C8.27945 0.439263 10.4495 0.449489 11.7779 1.77792C13.1063 3.10635 13.0848 5.24829 11.9473 6.74343C10.1382 9.12126 8.76082 11.8094 7.88827 14.6858C6.68544 18.651 6.47907 22.8516 7.28745 26.9156C8.09583 30.9796 9.89401 34.7816 12.5227 37.9846C15.1514 41.1877 18.5294 43.693 22.3576 45.2787C26.1859 46.8644 30.346 47.4815 34.4697 47.0754C38.5934 46.6692 42.5532 45.2524 45.9985 42.9503C49.4438 40.6482 52.2682 37.532 54.2215 33.8776C55.6384 31.2267 56.5653 28.352 56.9674 25.3914C57.2203 23.5298 58.7197 22 60.5983 22Z\"\n stroke=\"#FFB224\"\n strokeWidth=\"8\"\n strokeLinejoin=\"round\"\n mask=\"url(#path-1-inside-1_1551_3458)\"\n />\n </svg>\n\n <Box\n className=\"relay:z-[1] relay:text-[color:var(--relay-colors-amber9)] relay:mr-2\"\n >\n <FontAwesomeIcon icon={faClockFour} style={{ height: 32 }} />\n </Box>\n </Flex>\n </div>\n\n <Text\n style=\"subtitle1\"\n className=\"relay:my-4 relay:text-center\"\n >\n {isBitcoinOrigin || isBitcoinDestination\n ? `Bitcoin confirmation takes ${estimatedMinutes} minutes. Track progress on the transaction page.`\n : `Processing bridge, this will take ~${estimatedMinutes} ${estimatedMinutes === 1 ? 'min' : 'mins'}.`}\n </Text>\n\n <Flex align=\"center\" className=\"relay:gap-2 relay:mb-[24px]\">\n {fromChain ? (\n <Pill color=\"gray\" className=\"relay:items-center relay:py-2 relay:px-3\">\n <ChainTokenIcon\n chainId={fromChain.id}\n tokenlogoURI={fromTokenLogoUri}\n tokenSymbol={_fromToken?.symbol}\n size=\"sm\"\n chainRadius={2.5}\n />\n <Text style=\"subtitle1\" className=\"relay:ml-2\">\n {_fromAmountFormatted} {_fromToken?.symbol}\n </Text>\n </Pill>\n ) : (\n <Text style=\"subtitle1\">?</Text>\n )}\n <Flex className=\"relay:items-center relay:justify-center relay:p-2\">\n <FontAwesomeIcon style={{ width: 14 }} icon={faArrowRight} />\n </Flex>\n {toChain ? (\n <Pill color=\"gray\" className=\"relay:items-center relay:py-2 relay:px-3\">\n <ChainTokenIcon\n chainId={toChain.id}\n tokenlogoURI={toTokenLogoUri}\n tokenSymbol={_toToken?.symbol}\n size=\"sm\"\n chainRadius={2.5}\n />\n <Text style=\"subtitle1\" className=\"relay:ml-2\">\n {_toAmountFormatted} {_toToken?.symbol}\n </Text>\n </Pill>\n ) : (\n <Text style=\"subtitle1\">?</Text>\n )}\n </Flex>\n <Text\n style=\"body2\"\n className=\"relay:rounded-[12px] relay:text-center relay:p-4 relay:bg-[var(--relay-colors-gray2)]\"\n >\n You can close this modal while it finalizes on the blockchain. The\n transaction will continue in the background.\n </Text>\n\n {(() => {\n // For refunds, show the refund tx from outTxs, not the original send tx\n if (isRefund) {\n const refundTxHash = transaction?.data?.outTxs?.[0]?.hash\n const refundChainId = transaction?.data?.outTxs?.[0]?.chainId\n\n // Only show if refund tx is available (don't fall back to send tx)\n if (refundTxHash && refundChainId) {\n const txUrl = getTxUrl(refundChainId, refundTxHash)\n const truncatedHash = truncateAddress(refundTxHash, '...', 6, 4)\n\n return txUrl && truncatedHash ? (\n <Anchor\n href={txUrl}\n target=\"_blank\"\n className=\"relay:text-center relay:text-[14px] relay:mt-[12px]\"\n >\n View Refund Tx: {truncatedHash}\n </Anchor>\n ) : null\n }\n // If refund but no outTxs yet, show loading or nothing\n return isLoadingTransaction ? (\n <Text\n style=\"body3\"\n color=\"subtle\"\n className=\"relay:text-center relay:mt-3\"\n >\n Fetching refund transaction...\n </Text>\n ) : null\n }\n\n // Normal flow: show the first tx hash\n if (allTxHashes && allTxHashes.length > 0) {\n const txHash = allTxHashes[0]?.txHash\n const chainId = allTxHashes[0]?.chainId\n const txUrl =\n txHash && chainId ? getTxUrl(chainId, txHash) : undefined\n const truncatedHash = truncateAddress(txHash, '...', 6, 4)\n\n return txUrl && truncatedHash ? (\n <Anchor\n href={txUrl}\n target=\"_blank\"\n className=\"relay:text-center relay:text-[14px] relay:mt-[12px]\"\n >\n View Tx: {truncatedHash}\n </Anchor>\n ) : null\n }\n\n return null\n })()}\n </Flex>\n\n {!delayedTxUrl ? (\n <Flex\n direction=\"column\"\n className=\"relay:p-3 relay:border relay:border-solid relay:border-[var(--relay-colors-subtle-border-color)] relay:gap-3 relay:w-full relay:rounded-[12px]\"\n >\n <TransactionsByChain\n allTxHashes={allTxHashes}\n fromChain={fromChain}\n toChain={toChain}\n fillTx={null}\n />\n </Flex>\n ) : null}\n\n <Flex className=\"relay:w-full relay:gap-3 relay:mt-[8px]\">\n <Button\n cta={true}\n color={'secondary'}\n onClick={() => {\n haptic('light')\n onOpenChange(false)\n }}\n className=\"relay:justify-center relay:w-full\"\n >\n Done\n </Button>\n {delayedTxUrl ? (\n <a href={delayedTxUrl} className=\"relay:w-full\" target=\"_blank\">\n <Button\n cta={true}\n color={'primary'}\n className=\"relay:justify-center relay:w-max\"\n >\n Track Progress\n </Button>\n </a>\n ) : null}\n </Flex>\n </>\n ) : (\n <>\n <Flex direction=\"column\" align=\"center\" justify=\"between\">\n <div className=\"relay:animate-icon-pop-in\">\n <Flex align=\"center\">\n <RelayIcon />\n <Flex\n align=\"center\"\n justify=\"center\"\n className=\"relay:rounded-full relay:border-2 relay:border-solid relay:border-white relay:w-[40px] relay:h-[40px] relay:bg-[var(--relay-colors-green9)] relay:text-white relay:ml-[-8px]\"\n >\n <FontAwesomeIcon\n icon={faCheck}\n className=\"relay:h-[20px] relay:text-white\"\n />\n </Flex>\n </Flex>\n </div>\n\n <Text\n style=\"h6\"\n className=\"relay:text-center relay:my-3 relay:[&_.green-time]:text-[color:var(--relay-colors-green11)]\"\n >\n {fillTime && fillTime !== '-' ? (\n <>\n Completed in <span className=\"green-time\">{fillTime}</span>\n </>\n ) : (\n 'Transaction Completed'\n )}\n </Text>\n\n <Flex\n direction=\"column\"\n className=\"relay:gap-3 relay:p-3 relay:border relay:border-solid relay:border-[var(--relay-colors-slate-5)] relay:rounded-[12px] relay:w-full\"\n >\n {_fromToken ? (\n <Flex direction=\"column\" className=\"relay:gap-[4px]\">\n <Text style=\"subtitle2\" color=\"subtle\">\n Sent\n </Text>\n <Flex justify=\"between\">\n <Flex align=\"center\" className=\"relay:gap-[4px]\">\n <ChainTokenIcon\n size=\"sm\"\n chainId={_fromToken.chainId}\n tokenlogoURI={fromTokenLogoUri}\n tokenSymbol={_fromToken.symbol}\n chainRadius={2.5}\n />\n {isLoadingTransaction ? (\n <Skeleton\n className=\"relay:h-[24px] relay:w-[60px] relay:bg-[var(--relay-colors-gray5)]\"\n />\n ) : (\n <Text style=\"h6\">\n {_fromAmountFormatted} {_fromToken.symbol}\n </Text>\n )}\n </Flex>\n {!isSameChainSwap &&\n _fromToken?.chainId &&\n (() => {\n // For \"Sent\" section, always use the original send tx (skip refund check)\n const txHash = getTxHashForChain(_fromToken.chainId, true)\n const txUrl = txHash\n ? getTxUrl(_fromToken.chainId, txHash)\n : undefined\n return txHash ? (\n <Anchor\n href={txUrl}\n target=\"_blank\"\n className=\"relay:text-[color:var(--relay-colors-primary11)] relay:text-[14px]\"\n >\n {truncateAddress(txHash, '...', 6, 4)}\n </Anchor>\n ) : null\n })()}\n </Flex>\n </Flex>\n ) : (\n <Text style=\"subtitle1\">?</Text>\n )}\n\n {_toToken ? (\n <Flex direction=\"column\" className=\"relay:gap-[4px]\">\n <Text style=\"subtitle2\" color=\"subtle\">\n Received\n </Text>\n <Flex justify=\"between\">\n <Flex align=\"center\" className=\"relay:gap-[4px]\">\n <ChainTokenIcon\n size=\"sm\"\n chainId={_toToken.chainId}\n tokenlogoURI={toTokenLogoUri}\n tokenSymbol={_toToken.symbol}\n chainRadius={2.5}\n />\n {isLoadingTransaction ? (\n <Skeleton\n className=\"relay:h-[24px] relay:w-[60px] relay:bg-[var(--relay-colors-gray5)]\"\n />\n ) : (\n <Text style=\"h6\">\n {_toAmountFormatted} {_toToken.symbol}\n </Text>\n )}\n </Flex>\n\n {_toToken?.chainId &&\n (() => {\n const txHash = getTxHashForChain(_toToken.chainId)\n const txUrl = txHash\n ? getTxUrl(_toToken.chainId, txHash)\n : undefined\n return txHash ? (\n <Anchor\n href={txUrl}\n target=\"_blank\"\n className=\"relay:text-[color:var(--relay-colors-primary11)] relay:text-[14px]\"\n >\n {truncateAddress(txHash, '...', 6, 4)}\n </Anchor>\n ) : null\n })()}\n </Flex>\n\n {/* Additional Gas - positioned below transaction hash with 8px spacing */}\n {formattedGasTopUpAmount && gasTopUpAmountCurrency ? (\n <Flex align=\"center\" className=\"relay:gap-[4px] relay:mt-[4px]\">\n <ChainTokenIcon\n size=\"sm\"\n chainId={gasTopUpAmountCurrency.chainId}\n tokenlogoURI={`${ASSETS_RELAY_API}/icons/currencies/${\n gasTopUpAmountCurrency?.symbol?.toLowerCase() ??\n gasTopUpAmountCurrency?.chainId\n }.png`}\n tokenSymbol={gasTopUpAmountCurrency.symbol}\n chainRadius={2.5}\n />\n <Text style=\"h6\">\n {formattedGasTopUpAmount} {gasTopUpAmountCurrency.symbol}\n </Text>\n </Flex>\n ) : null}\n </Flex>\n ) : (\n <Text style=\"subtitle1\">?</Text>\n )}\n </Flex>\n </Flex>\n\n <Flex className=\"relay:w-full relay:gap-3\">\n {requestId ? (\n <a\n href={`${baseTransactionUrl}/transaction/${requestId}`}\n className=\"relay:w-full\"\n target=\"_blank\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n <Button\n color=\"secondary\"\n cta={true}\n className=\"relay:justify-center relay:w-max\"\n >\n View Details\n </Button>\n </a>\n ) : null}\n <Button\n cta={true}\n onClick={() => {\n haptic('light')\n onOpenChange(false)\n }}\n className=\"relay:justify-center relay:w-full\"\n >\n Done\n </Button>\n </Flex>\n </>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SwapSuccessStep.js","sourceRoot":"","sources":["../../../../../../src/components/common/TransactionModal/steps/SwapSuccessStep.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, type FC } from 'react'\nimport {\n Box,\n Button,\n Flex,\n Pill,\n Text,\n ChainTokenIcon,\n Skeleton,\n Anchor\n} from '../../../primitives/index.js'\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { type TxHashes } from '../TransactionModalRenderer.js'\nimport { type Token } from '../../../../types/index.js'\nimport type { useRequests } from '@relayprotocol/relay-kit-hooks'\nimport { useRelayClient } from '../../../../hooks/index.js'\nimport { faClockFour } from '@fortawesome/free-solid-svg-icons/faClockFour'\nimport {\n ASSETS_RELAY_API,\n type Execute,\n type ExecuteStepItem\n} from '@relayprotocol/relay-sdk'\nimport { bitcoin } from '../../../../utils/bitcoin.js'\nimport { formatSignificantDigits } from '../../../../utils/numbers.js'\nimport { TransactionsByChain } from './TransactionsByChain.js'\nimport { faArrowRight } from '@fortawesome/free-solid-svg-icons/faArrowRight'\nimport { faCheck } from '@fortawesome/free-solid-svg-icons/faCheck'\nimport { RelayIcon, XIcon } from '../../../../icons/index.js'\nimport {\n ProviderOptionsContext,\n useHapticEvent\n} from '../../../../providers/RelayKitProvider.js'\nimport { getTxBlockExplorerUrl } from '../../../../utils/getTxBlockExplorerUrl.js'\nimport { truncateAddress } from '../../../../utils/truncate.js'\nimport { getRequestCurrencies } from '../../../../utils/relayTransaction.js'\n\ntype SwapSuccessStepProps = {\n fromToken?: Token\n toToken?: Token\n fromAmountFormatted?: string\n toAmountFormatted?: string\n allTxHashes: TxHashes\n transaction?: ReturnType<typeof useRequests>['data']['0']\n seconds: number\n fillTime: string\n timeEstimate?: string\n details?: Execute['details'] | null\n isLoadingTransaction?: boolean\n onOpenChange: (open: boolean) => void\n requestId: string | null\n isGasSponsored?: boolean\n currentCheckStatus?: ExecuteStepItem['checkStatus']\n}\n\nexport const SwapSuccessStep: FC<SwapSuccessStepProps> = ({\n fromToken,\n toToken,\n fromAmountFormatted,\n toAmountFormatted,\n allTxHashes,\n transaction,\n fillTime,\n seconds,\n timeEstimate,\n details,\n isLoadingTransaction,\n onOpenChange,\n requestId,\n isGasSponsored,\n currentCheckStatus\n}) => {\n const relayClient = useRelayClient()\n const haptic = useHapticEvent()\n const isWrap = details?.operation === 'wrap'\n const isUnwrap = details?.operation === 'unwrap'\n const providerOptionsContext = useContext(ProviderOptionsContext)\n\n // Get chains data for explorer URL generation\n const chains = relayClient?.chains\n\n const {\n currencyIn: requestCurrencyIn,\n currencyOut: requestCurrencyOut,\n currencyGasTopup: requestCurrencyGasTopup\n } = getRequestCurrencies(transaction)\n\n const _fromAmountFormatted = requestCurrencyIn?.amount\n ? formatSignificantDigits(\n requestCurrencyIn.amount,\n requestCurrencyIn.currency?.decimals ?? 18\n )\n : fromAmountFormatted\n const _fromToken = requestCurrencyIn?.currency ?? fromToken\n const fromTokenLogoUri =\n requestCurrencyIn?.currency?.metadata?.logoURI ?? fromToken?.logoURI\n const _toAmountFormatted = requestCurrencyOut?.amount\n ? formatSignificantDigits(\n requestCurrencyOut.amount,\n requestCurrencyOut.currency?.decimals ?? 18\n )\n : toAmountFormatted\n const _toToken = requestCurrencyOut?.currency ?? toToken\n const toTokenLogoUri =\n requestCurrencyOut?.currency?.metadata?.logoURI ?? toToken?.logoURI\n\n const baseTransactionUrl = relayClient?.baseApiUrl.includes('testnets')\n ? 'https://testnets.relay.link'\n : 'https://relay.link'\n const fromChain = _fromToken\n ? relayClient?.chains.find((chain) => chain.id === _fromToken?.chainId)\n : null\n const toChain = _toToken\n ? relayClient?.chains.find((chain) => chain.id === _toToken?.chainId)\n : null\n\n const isSameChainSwap = fromChain?.id === toChain?.id && !isWrap && !isUnwrap\n const delayedTxUrl = requestId\n ? `${baseTransactionUrl}/transaction/${requestId}`\n : null\n const timeEstimateMs = (details?.timeEstimate ?? 0) * 1000\n\n const isBitcoinOrigin = fromChain?.id === bitcoin.id\n const isBitcoinDestination = toChain?.id === bitcoin.id\n\n const isRefund =\n transaction?.status === 'refund' || transaction?.data?.refundCurrencyData\n\n // Show delayed screen when:\n // 1. Bitcoin as origin: Immediately (no status check needed, tx takes 10+ mins)\n // 2. Bitcoin as destination: When status reaches 'submitted'\n\n const isDelayedTx =\n isBitcoinOrigin ||\n (isBitcoinDestination &&\n (currentCheckStatus === 'submitted' || currentCheckStatus === 'success'))\n\n // Bitcoin transactions typically take 10+ minutes for confirmation\n const estimatedMinutes =\n isBitcoinOrigin || isBitcoinDestination\n ? 10\n : Math.round(timeEstimateMs / 1000 / 60)\n\n const gasTopUpAmountCurrency = requestCurrencyGasTopup?.currency\n const formattedGasTopUpAmount = requestCurrencyGasTopup?.amount\n ? formatSignificantDigits(\n BigInt(requestCurrencyGasTopup.amount),\n gasTopUpAmountCurrency?.decimals ?? 18\n )\n : undefined\n\n // Helper function to get transaction hash for a specific chain\n const getTxHashForChain = (chainId: number, skipRefundCheck = false) => {\n if (isRefund && !skipRefundCheck) {\n const refundTxHash = transaction?.data?.outTxs?.[0]?.txHash\n const refundChainId = transaction?.data?.outTxs?.[0]?.chainId\n if (refundChainId === chainId && refundTxHash) {\n return refundTxHash\n }\n if (transaction?.data?.refundCurrencyData && !refundTxHash) {\n return undefined\n }\n }\n return allTxHashes.find((tx) => tx.chainId === chainId)?.txHash\n }\n\n // Helper function to get transaction URL for a specific chain and hash\n const getTxUrl = (chainId: number, txHash: string) => {\n return getTxBlockExplorerUrl(chainId, chains, txHash)\n }\n\n const shareIconFill =\n providerOptionsContext.themeScheme === 'dark' ? '#fff' : '#000'\n\n return isDelayedTx ? (\n <>\n <Flex direction=\"column\" align=\"center\" justify=\"between\">\n <div className=\"relay:animate-icon-pop-in\">\n <Flex\n align=\"center\"\n justify=\"center\"\n className=\"relay:relative relay:rounded-full relay:h-[80px] relay:w-[78px] relay:bg-[var(--relay-colors-amber2)]\"\n >\n <svg\n className=\"relay:absolute relay:top-[7px] relay:left-0 relay:z-0\"\n width=\"76\"\n height=\"80\"\n viewBox=\"0 0 64 54\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <mask id=\"path-1-inside-1_1551_3458\" fill=\"white\">\n <path d=\"M60.5983 22C62.477 22 64.0187 23.5272 63.8194 25.3953C63.3839 29.4763 62.1661 33.4465 60.2215 37.0847C57.7408 41.7257 54.1538 45.6834 49.7782 48.607C45.4027 51.5307 40.3736 53.3301 35.1366 53.8459C29.8995 54.3617 24.616 53.578 19.7541 51.5641C14.8923 49.5503 10.6021 46.3685 7.26367 42.3006C3.92522 38.2327 1.64152 33.4042 0.614871 28.2429C-0.411778 23.0816 -0.149694 17.7467 1.37791 12.7109C2.57543 8.7632 4.52167 5.09478 7.09947 1.90114C8.27945 0.439263 10.4495 0.449489 11.7779 1.77792C13.1063 3.10635 13.0848 5.24829 11.9473 6.74343C10.1382 9.12126 8.76082 11.8094 7.88827 14.6858C6.68544 18.651 6.47907 22.8516 7.28745 26.9156C8.09583 30.9796 9.89401 34.7816 12.5227 37.9846C15.1514 41.1877 18.5294 43.693 22.3576 45.2787C26.1859 46.8644 30.346 47.4815 34.4697 47.0754C38.5934 46.6692 42.5532 45.2524 45.9985 42.9503C49.4438 40.6482 52.2682 37.532 54.2215 33.8776C55.6384 31.2267 56.5653 28.352 56.9674 25.3914C57.2203 23.5298 58.7197 22 60.5983 22Z\" />\n </mask>\n <path\n d=\"M60.5983 22C62.477 22 64.0187 23.5272 63.8194 25.3953C63.3839 29.4763 62.1661 33.4465 60.2215 37.0847C57.7408 41.7257 54.1538 45.6834 49.7782 48.607C45.4027 51.5307 40.3736 53.3301 35.1366 53.8459C29.8995 54.3617 24.616 53.578 19.7541 51.5641C14.8923 49.5503 10.6021 46.3685 7.26367 42.3006C3.92522 38.2327 1.64152 33.4042 0.614871 28.2429C-0.411778 23.0816 -0.149694 17.7467 1.37791 12.7109C2.57543 8.7632 4.52167 5.09478 7.09947 1.90114C8.27945 0.439263 10.4495 0.449489 11.7779 1.77792C13.1063 3.10635 13.0848 5.24829 11.9473 6.74343C10.1382 9.12126 8.76082 11.8094 7.88827 14.6858C6.68544 18.651 6.47907 22.8516 7.28745 26.9156C8.09583 30.9796 9.89401 34.7816 12.5227 37.9846C15.1514 41.1877 18.5294 43.693 22.3576 45.2787C26.1859 46.8644 30.346 47.4815 34.4697 47.0754C38.5934 46.6692 42.5532 45.2524 45.9985 42.9503C49.4438 40.6482 52.2682 37.532 54.2215 33.8776C55.6384 31.2267 56.5653 28.352 56.9674 25.3914C57.2203 23.5298 58.7197 22 60.5983 22Z\"\n stroke=\"#FFB224\"\n strokeWidth=\"8\"\n strokeLinejoin=\"round\"\n mask=\"url(#path-1-inside-1_1551_3458)\"\n />\n </svg>\n\n <Box\n className=\"relay:z-[1] relay:text-[color:var(--relay-colors-amber9)] relay:mr-2\"\n >\n <FontAwesomeIcon icon={faClockFour} style={{ height: 32 }} />\n </Box>\n </Flex>\n </div>\n\n <Text\n style=\"subtitle1\"\n className=\"relay:my-4 relay:text-center\"\n >\n {isBitcoinOrigin || isBitcoinDestination\n ? `Bitcoin confirmation takes ${estimatedMinutes} minutes. Track progress on the transaction page.`\n : `Processing bridge, this will take ~${estimatedMinutes} ${estimatedMinutes === 1 ? 'min' : 'mins'}.`}\n </Text>\n\n <Flex align=\"center\" className=\"relay:gap-2 relay:mb-[24px]\">\n {fromChain ? (\n <Pill color=\"gray\" className=\"relay:items-center relay:py-2 relay:px-3\">\n <ChainTokenIcon\n chainId={fromChain.id}\n tokenlogoURI={fromTokenLogoUri}\n tokenSymbol={_fromToken?.symbol}\n size=\"sm\"\n chainRadius={2.5}\n />\n <Text style=\"subtitle1\" className=\"relay:ml-2\">\n {_fromAmountFormatted} {_fromToken?.symbol}\n </Text>\n </Pill>\n ) : (\n <Text style=\"subtitle1\">?</Text>\n )}\n <Flex className=\"relay:items-center relay:justify-center relay:p-2\">\n <FontAwesomeIcon style={{ width: 14 }} icon={faArrowRight} />\n </Flex>\n {toChain ? (\n <Pill color=\"gray\" className=\"relay:items-center relay:py-2 relay:px-3\">\n <ChainTokenIcon\n chainId={toChain.id}\n tokenlogoURI={toTokenLogoUri}\n tokenSymbol={_toToken?.symbol}\n size=\"sm\"\n chainRadius={2.5}\n />\n <Text style=\"subtitle1\" className=\"relay:ml-2\">\n {_toAmountFormatted} {_toToken?.symbol}\n </Text>\n </Pill>\n ) : (\n <Text style=\"subtitle1\">?</Text>\n )}\n </Flex>\n <Text\n style=\"body2\"\n className=\"relay:rounded-[12px] relay:text-center relay:p-4 relay:bg-[var(--relay-colors-gray2)]\"\n >\n You can close this modal while it finalizes on the blockchain. The\n transaction will continue in the background.\n </Text>\n\n {(() => {\n // For refunds, show the refund tx from outTxs, not the original send tx\n if (isRefund) {\n const refundTxHash = transaction?.data?.outTxs?.[0]?.txHash\n const refundChainId = transaction?.data?.outTxs?.[0]?.chainId\n\n // Only show if refund tx is available (don't fall back to send tx)\n if (refundTxHash && refundChainId) {\n const txUrl = getTxUrl(refundChainId, refundTxHash)\n const truncatedHash = truncateAddress(refundTxHash, '...', 6, 4)\n\n return txUrl && truncatedHash ? (\n <Anchor\n href={txUrl}\n target=\"_blank\"\n className=\"relay:text-center relay:text-[14px] relay:mt-[12px]\"\n >\n View Refund Tx: {truncatedHash}\n </Anchor>\n ) : null\n }\n // If refund but no outTxs yet, show loading or nothing\n return isLoadingTransaction ? (\n <Text\n style=\"body3\"\n color=\"subtle\"\n className=\"relay:text-center relay:mt-3\"\n >\n Fetching refund transaction...\n </Text>\n ) : null\n }\n\n // Normal flow: show the first tx hash\n if (allTxHashes && allTxHashes.length > 0) {\n const txHash = allTxHashes[0]?.txHash\n const chainId = allTxHashes[0]?.chainId\n const txUrl =\n txHash && chainId ? getTxUrl(chainId, txHash) : undefined\n const truncatedHash = truncateAddress(txHash, '...', 6, 4)\n\n return txUrl && truncatedHash ? (\n <Anchor\n href={txUrl}\n target=\"_blank\"\n className=\"relay:text-center relay:text-[14px] relay:mt-[12px]\"\n >\n View Tx: {truncatedHash}\n </Anchor>\n ) : null\n }\n\n return null\n })()}\n </Flex>\n\n {!delayedTxUrl ? (\n <Flex\n direction=\"column\"\n className=\"relay:p-3 relay:border relay:border-solid relay:border-[var(--relay-colors-subtle-border-color)] relay:gap-3 relay:w-full relay:rounded-[12px]\"\n >\n <TransactionsByChain\n allTxHashes={allTxHashes}\n fromChain={fromChain}\n toChain={toChain}\n fillTx={null}\n />\n </Flex>\n ) : null}\n\n <Flex className=\"relay:w-full relay:gap-3 relay:mt-[8px]\">\n <Button\n cta={true}\n color={'secondary'}\n onClick={() => {\n haptic('light')\n onOpenChange(false)\n }}\n className=\"relay:justify-center relay:w-full\"\n >\n Done\n </Button>\n {delayedTxUrl ? (\n <a href={delayedTxUrl} className=\"relay:w-full\" target=\"_blank\">\n <Button\n cta={true}\n color={'primary'}\n className=\"relay:justify-center relay:w-max\"\n >\n Track Progress\n </Button>\n </a>\n ) : null}\n </Flex>\n </>\n ) : (\n <>\n <Flex direction=\"column\" align=\"center\" justify=\"between\">\n <div className=\"relay:animate-icon-pop-in\">\n <Flex align=\"center\">\n <RelayIcon />\n <Flex\n align=\"center\"\n justify=\"center\"\n className=\"relay:rounded-full relay:border-2 relay:border-solid relay:border-white relay:w-[40px] relay:h-[40px] relay:bg-[var(--relay-colors-green9)] relay:text-white relay:ml-[-8px]\"\n >\n <FontAwesomeIcon\n icon={faCheck}\n className=\"relay:h-[20px] relay:text-white\"\n />\n </Flex>\n </Flex>\n </div>\n\n <Text\n style=\"h6\"\n className=\"relay:text-center relay:my-3 relay:[&_.green-time]:text-[color:var(--relay-colors-green11)]\"\n >\n {fillTime && fillTime !== '-' ? (\n <>\n Completed in <span className=\"green-time\">{fillTime}</span>\n </>\n ) : (\n 'Transaction Completed'\n )}\n </Text>\n\n <Flex\n direction=\"column\"\n className=\"relay:gap-3 relay:p-3 relay:border relay:border-solid relay:border-[var(--relay-colors-slate-5)] relay:rounded-[12px] relay:w-full\"\n >\n {_fromToken ? (\n <Flex direction=\"column\" className=\"relay:gap-[4px]\">\n <Text style=\"subtitle2\" color=\"subtle\">\n Sent\n </Text>\n <Flex justify=\"between\">\n <Flex align=\"center\" className=\"relay:gap-[4px]\">\n <ChainTokenIcon\n size=\"sm\"\n chainId={_fromToken.chainId}\n tokenlogoURI={fromTokenLogoUri}\n tokenSymbol={_fromToken.symbol}\n chainRadius={2.5}\n />\n {isLoadingTransaction ? (\n <Skeleton\n className=\"relay:h-[24px] relay:w-[60px] relay:bg-[var(--relay-colors-gray5)]\"\n />\n ) : (\n <Text style=\"h6\">\n {_fromAmountFormatted} {_fromToken.symbol}\n </Text>\n )}\n </Flex>\n {!isSameChainSwap &&\n _fromToken?.chainId &&\n (() => {\n // For \"Sent\" section, always use the original send tx (skip refund check)\n const txHash = getTxHashForChain(_fromToken.chainId, true)\n const txUrl = txHash\n ? getTxUrl(_fromToken.chainId, txHash)\n : undefined\n return txHash ? (\n <Anchor\n href={txUrl}\n target=\"_blank\"\n className=\"relay:text-[color:var(--relay-colors-primary11)] relay:text-[14px]\"\n >\n {truncateAddress(txHash, '...', 6, 4)}\n </Anchor>\n ) : null\n })()}\n </Flex>\n </Flex>\n ) : (\n <Text style=\"subtitle1\">?</Text>\n )}\n\n {_toToken ? (\n <Flex direction=\"column\" className=\"relay:gap-[4px]\">\n <Text style=\"subtitle2\" color=\"subtle\">\n Received\n </Text>\n <Flex justify=\"between\">\n <Flex align=\"center\" className=\"relay:gap-[4px]\">\n <ChainTokenIcon\n size=\"sm\"\n chainId={_toToken.chainId}\n tokenlogoURI={toTokenLogoUri}\n tokenSymbol={_toToken.symbol}\n chainRadius={2.5}\n />\n {isLoadingTransaction ? (\n <Skeleton\n className=\"relay:h-[24px] relay:w-[60px] relay:bg-[var(--relay-colors-gray5)]\"\n />\n ) : (\n <Text style=\"h6\">\n {_toAmountFormatted} {_toToken.symbol}\n </Text>\n )}\n </Flex>\n\n {_toToken?.chainId &&\n (() => {\n const txHash = getTxHashForChain(_toToken.chainId)\n const txUrl = txHash\n ? getTxUrl(_toToken.chainId, txHash)\n : undefined\n return txHash ? (\n <Anchor\n href={txUrl}\n target=\"_blank\"\n className=\"relay:text-[color:var(--relay-colors-primary11)] relay:text-[14px]\"\n >\n {truncateAddress(txHash, '...', 6, 4)}\n </Anchor>\n ) : null\n })()}\n </Flex>\n\n {/* Additional Gas - positioned below transaction hash with 8px spacing */}\n {formattedGasTopUpAmount && gasTopUpAmountCurrency ? (\n <Flex align=\"center\" className=\"relay:gap-[4px] relay:mt-[4px]\">\n <ChainTokenIcon\n size=\"sm\"\n chainId={gasTopUpAmountCurrency.chainId}\n tokenlogoURI={`${ASSETS_RELAY_API}/icons/currencies/${\n gasTopUpAmountCurrency?.symbol?.toLowerCase() ??\n gasTopUpAmountCurrency?.chainId\n }.png`}\n tokenSymbol={gasTopUpAmountCurrency.symbol}\n chainRadius={2.5}\n />\n <Text style=\"h6\">\n {formattedGasTopUpAmount} {gasTopUpAmountCurrency.symbol}\n </Text>\n </Flex>\n ) : null}\n </Flex>\n ) : (\n <Text style=\"subtitle1\">?</Text>\n )}\n </Flex>\n </Flex>\n\n <Flex className=\"relay:w-full relay:gap-3\">\n {requestId ? (\n <a\n href={`${baseTransactionUrl}/transaction/${requestId}`}\n className=\"relay:w-full\"\n target=\"_blank\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n <Button\n color=\"secondary\"\n cta={true}\n className=\"relay:justify-center relay:w-max\"\n >\n View Details\n </Button>\n </a>\n ) : null}\n <Button\n cta={true}\n onClick={() => {\n haptic('light')\n onOpenChange(false)\n }}\n className=\"relay:justify-center relay:w-full\"\n >\n Done\n </Button>\n </Flex>\n </>\n )\n}\n"]}
|
|
@@ -7,6 +7,7 @@ const useRelayClient_js_1 = tslib_1.__importDefault(require("../../hooks/useRela
|
|
|
7
7
|
const RelayKitProvider_js_1 = require("../../providers/RelayKitProvider.js");
|
|
8
8
|
const cn_js_1 = require("../../utils/cn.js");
|
|
9
9
|
const ChainIcon = ({ chainId, className, height = 14, width = 14, square = true, borderRadius = 4 }) => {
|
|
10
|
+
const [erroredSrc, setErroredSrc] = (0, react_1.useState)(null);
|
|
10
11
|
const providerOptions = (0, react_1.useContext)(RelayKitProvider_js_1.ProviderOptionsContext);
|
|
11
12
|
const client = (0, useRelayClient_js_1.default)();
|
|
12
13
|
const chain = chainId
|
|
@@ -22,7 +23,7 @@ const ChainIcon = ({ chainId, className, height = 14, width = 14, square = true,
|
|
|
22
23
|
height: height,
|
|
23
24
|
width: width,
|
|
24
25
|
borderRadius: borderRadius
|
|
25
|
-
}, children: iconUrl ? ((0, jsx_runtime_1.jsx)("img", { src: iconUrl, alt: `Chain #${chainId}`, style: {
|
|
26
|
+
}, children: iconUrl && erroredSrc !== iconUrl ? ((0, jsx_runtime_1.jsx)("img", { src: iconUrl, alt: `Chain #${chainId}`, onError: () => setErroredSrc(iconUrl ?? null), style: {
|
|
26
27
|
borderRadius: square ? borderRadius : 0,
|
|
27
28
|
width: '100%',
|
|
28
29
|
height: '100%'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChainIcon.js","sourceRoot":"","sources":["../../../../src/components/primitives/ChainIcon.tsx"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"ChainIcon.js","sourceRoot":"","sources":["../../../../src/components/primitives/ChainIcon.tsx"],"names":[],"mappings":";;;;AAAA,iCAAqD;AACrD,8FAA0D;AAC1D,6EAA4E;AAC5E,6CAAsC;AAWtC,MAAM,SAAS,GAAc,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,MAAM,GAAG,EAAE,EACX,KAAK,GAAG,EAAE,EACV,MAAM,GAAG,IAAI,EACb,YAAY,GAAG,CAAC,EACjB,EAAE,EAAE;IACH,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAgB,IAAI,CAAC,CAAA;IACjE,MAAM,eAAe,GAAG,IAAA,kBAAU,EAAC,4CAAsB,CAAC,CAAA;IAC1D,MAAM,MAAM,GAAG,IAAA,2BAAc,GAAE,CAAA;IAC/B,MAAM,KAAK,GAAG,OAAO;QACnB,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC;QACvD,CAAC,CAAC,IAAI,CAAA;IAER,MAAM,IAAI,GAAG,KAAK;QAChB,CAAC,CAAC,eAAe,CAAC,WAAW,KAAK,MAAM;YACtC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK;YACvC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK;QACrB,CAAC,CAAC,IAAI,CAAA;IAER,MAAM,OAAO,GACX,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAEnE,OAAO,OAAO,CAAC,CAAC,CAAC,CACf,gCACE,SAAS,EAAE,IAAA,UAAE,EAAC,2BAA2B,EAAE,SAAS,CAAC,EACrD,KAAK,EAAE;YACL,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,KAAK;YACZ,YAAY,EAAE,YAAY;SAC3B,YAEA,OAAO,IAAI,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,CACnC,gCACE,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,UAAU,OAAO,EAAE,EACxB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC,EAC7C,KAAK,EAAE;gBACL,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBACvC,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,MAAM;aACf,GACD,CACH,CAAC,CAAC,CAAC,IAAI,GACJ,CACP,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAA;AAED,kBAAe,SAAS,CAAA","sourcesContent":["import { useContext, useState, type FC } from 'react'\nimport useRelayClient from '../../hooks/useRelayClient.js'\nimport { ProviderOptionsContext } from '../../providers/RelayKitProvider.js'\nimport { cn } from '../../utils/cn.js'\n\ntype Props = {\n chainId?: number\n height?: number\n width?: number\n className?: string\n square?: boolean\n borderRadius?: number\n}\n\nconst ChainIcon: FC<Props> = ({\n chainId,\n className,\n height = 14,\n width = 14,\n square = true,\n borderRadius = 4\n}) => {\n const [erroredSrc, setErroredSrc] = useState<string | null>(null)\n const providerOptions = useContext(ProviderOptionsContext)\n const client = useRelayClient()\n const chain = chainId\n ? client?.chains?.find((chain) => chain.id === chainId)\n : null\n\n const icon = chain\n ? providerOptions.themeScheme === 'dark'\n ? chain.icon?.dark || chain.icon?.light\n : chain.icon?.light\n : null\n\n const iconUrl =\n square && icon ? icon.replace('/icons/', '/icons/square/') : icon\n\n return iconUrl ? (\n <div\n className={cn('relay:flex relay:shrink-0', className)}\n style={{\n height: height,\n width: width,\n borderRadius: borderRadius\n }}\n >\n {iconUrl && erroredSrc !== iconUrl ? (\n <img\n src={iconUrl}\n alt={`Chain #${chainId}`}\n onError={() => setErroredSrc(iconUrl ?? null)}\n style={{\n borderRadius: square ? borderRadius : 0,\n width: '100%',\n height: '100%'\n }}\n />\n ) : null}\n </div>\n ) : null\n}\n\nexport default ChainIcon\n"]}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ChainTokenIcon = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const react_1 = require("react");
|
|
6
7
|
const ChainIcon_js_1 = tslib_1.__importDefault(require("./ChainIcon.js"));
|
|
7
8
|
const Text_js_1 = tslib_1.__importDefault(require("./Text.js"));
|
|
8
9
|
const cn_js_1 = require("../../utils/cn.js");
|
|
@@ -25,14 +26,17 @@ const SIZES = {
|
|
|
25
26
|
}
|
|
26
27
|
};
|
|
27
28
|
const ChainTokenIcon = ({ chainId, tokenlogoURI, tokenSymbol, className, size = 'md', chainRadius = 4, chainIconSize }) => {
|
|
28
|
-
const
|
|
29
|
+
const [erroredSrc, setErroredSrc] = (0, react_1.useState)(null);
|
|
30
|
+
const isValidTokenLogo = tokenlogoURI &&
|
|
31
|
+
tokenlogoURI !== 'missing.png' &&
|
|
32
|
+
erroredSrc !== tokenlogoURI;
|
|
29
33
|
const dimensions = SIZES[size];
|
|
30
34
|
const chainSize = chainIconSize ?? dimensions.chain;
|
|
31
35
|
return chainId ? ((0, jsx_runtime_1.jsxs)("div", { className: (0, cn_js_1.cn)('relay:relative relay:shrink-0 relay:overflow-hidden', className), style: {
|
|
32
36
|
width: dimensions.token,
|
|
33
37
|
height: dimensions.token,
|
|
34
38
|
borderRadius: chainRadius
|
|
35
|
-
}, children: [isValidTokenLogo ? ((0, jsx_runtime_1.jsx)("img", { alt: 'Token', src: tokenlogoURI, width: dimensions.token, height: dimensions.token, style: {
|
|
39
|
+
}, children: [isValidTokenLogo ? ((0, jsx_runtime_1.jsx)("img", { alt: 'Token', src: tokenlogoURI, width: dimensions.token, height: dimensions.token, onError: () => setErroredSrc(tokenlogoURI ?? null), style: {
|
|
36
40
|
borderRadius: 9999,
|
|
37
41
|
overflow: 'hidden'
|
|
38
42
|
} })) : tokenSymbol ? ((0, jsx_runtime_1.jsx)("div", { className: "relay:rounded-[50%] relay:bg-[var(--relay-colors-primary4)] relay:text-[color:var(--relay-colors-primary8)] relay:flex relay:items-center relay:justify-center", style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChainTokenIcon.js","sourceRoot":"","sources":["../../../../src/components/primitives/ChainTokenIcon.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"ChainTokenIcon.js","sourceRoot":"","sources":["../../../../src/components/primitives/ChainTokenIcon.tsx"],"names":[],"mappings":";;;;;AAAA,iCAAyC;AACzC,0EAAsC;AACtC,gEAA4B;AAC5B,6CAAsC;AActC,MAAM,KAAK,GAAG;IACZ,EAAE,EAAE;QACF,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;KACV;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;KACV;IACD,EAAE,EAAE;QACF,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;KACV;IACD,EAAE,EAAE;QACF,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE;KACV;CACO,CAAA;AAEH,MAAM,cAAc,GAAwB,CAAC,EAClD,OAAO,EACP,YAAY,EACZ,WAAW,EACX,SAAS,EACT,IAAI,GAAG,IAAI,EACX,WAAW,GAAG,CAAC,EACf,aAAa,EACd,EAAE,EAAE;IACH,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAgB,IAAI,CAAC,CAAA;IACjE,MAAM,gBAAgB,GACpB,YAAY;QACZ,YAAY,KAAK,aAAa;QAC9B,UAAU,KAAK,YAAY,CAAA;IAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,SAAS,GAAG,aAAa,IAAI,UAAU,CAAC,KAAK,CAAA;IAEnD,OAAO,OAAO,CAAC,CAAC,CAAC,CACf,iCACE,SAAS,EAAE,IAAA,UAAE,EACX,qDAAqD,EACrD,SAAS,CACV,EACD,KAAK,EAAE;YACL,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,MAAM,EAAE,UAAU,CAAC,KAAK;YACxB,YAAY,EAAE,WAAW;SAC1B,aAEA,gBAAgB,CAAC,CAAC,CAAC,CAClB,gCACE,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,UAAU,CAAC,KAAK,EACvB,MAAM,EAAE,UAAU,CAAC,KAAK,EACxB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,IAAI,IAAI,CAAC,EAClD,KAAK,EAAE;oBACL,YAAY,EAAE,IAAI;oBAClB,QAAQ,EAAE,QAAQ;iBACnB,GACD,CACH,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAChB,gCACE,SAAS,EAAC,gKAAgK,EAC1K,KAAK,EAAE;oBACL,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,MAAM,EAAE,UAAU,CAAC,KAAK;iBACzB,YAED,uBAAC,iBAAI,IAAC,KAAK,EAAC,IAAI,YAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAQ,GAC1D,CACP,CAAC,CAAC,CAAC,IAAI,EACR,uBAAC,sBAAS,IACR,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,WAAW,EACzB,SAAS,EAAC,uMAAuM,GACjN,IACE,CACP,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAA;AA7DY,QAAA,cAAc,kBA6D1B","sourcesContent":["import { type FC, useState } from 'react'\nimport ChainIcon from './ChainIcon.js'\nimport Text from './Text.js'\nimport { cn } from '../../utils/cn.js'\n\ntype Size = 'sm' | 'base' | 'md' | 'lg'\n\ntype ChainTokenProps = {\n chainId?: number\n tokenlogoURI?: string\n tokenSymbol?: string\n className?: string\n size?: Size\n chainRadius?: number\n chainIconSize?: number\n}\n\nconst SIZES = {\n sm: {\n token: 20,\n chain: 12\n },\n base: {\n token: 24,\n chain: 10\n },\n md: {\n token: 32,\n chain: 16\n },\n lg: {\n token: 40,\n chain: 18\n }\n} as const\n\nexport const ChainTokenIcon: FC<ChainTokenProps> = ({\n chainId,\n tokenlogoURI,\n tokenSymbol,\n className,\n size = 'md',\n chainRadius = 4,\n chainIconSize\n}) => {\n const [erroredSrc, setErroredSrc] = useState<string | null>(null)\n const isValidTokenLogo =\n tokenlogoURI &&\n tokenlogoURI !== 'missing.png' &&\n erroredSrc !== tokenlogoURI\n const dimensions = SIZES[size]\n const chainSize = chainIconSize ?? dimensions.chain\n\n return chainId ? (\n <div\n className={cn(\n 'relay:relative relay:shrink-0 relay:overflow-hidden',\n className\n )}\n style={{\n width: dimensions.token,\n height: dimensions.token,\n borderRadius: chainRadius\n }}\n >\n {isValidTokenLogo ? (\n <img\n alt={'Token'}\n src={tokenlogoURI}\n width={dimensions.token}\n height={dimensions.token}\n onError={() => setErroredSrc(tokenlogoURI ?? null)}\n style={{\n borderRadius: 9999,\n overflow: 'hidden'\n }}\n />\n ) : tokenSymbol ? (\n <div\n className=\"relay:rounded-[50%] relay:bg-[var(--relay-colors-primary4)] relay:text-[color:var(--relay-colors-primary8)] relay:flex relay:items-center relay:justify-center\"\n style={{\n width: dimensions.token,\n height: dimensions.token\n }}\n >\n <Text style=\"h6\">{tokenSymbol?.charAt(0).toUpperCase()}</Text>\n </div>\n ) : null}\n <ChainIcon\n chainId={chainId}\n width={chainSize}\n height={chainSize}\n borderRadius={chainRadius}\n className=\"relay:absolute relay:right-0 relay:bottom-0 relay:overflow-hidden relay:border relay:border-solid relay:border-[var(--relay-colors-modal-background)] relay:bg-[var(--relay-colors-modal-background)]\"\n />\n </div>\n ) : null\n}\n"]}
|
|
@@ -121,13 +121,9 @@ const OnrampModal = ({ open, amount, amountFormatted, recipient, fromToken, toTo
|
|
|
121
121
|
step === OnrampStep.Processing &&
|
|
122
122
|
open,
|
|
123
123
|
refetchInterval(query) {
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
observableStates.includes(query.state.data?.status))) {
|
|
128
|
-
return 1000;
|
|
129
|
-
}
|
|
130
|
-
return 0;
|
|
124
|
+
const terminalStates = ['success', 'failure', 'refund'];
|
|
125
|
+
const status = query.state.data?.status;
|
|
126
|
+
return status && terminalStates.includes(status) ? 0 : 1000;
|
|
131
127
|
}
|
|
132
128
|
});
|
|
133
129
|
const fillTxHash = (0, react_1.useMemo)(() => {
|
|
@@ -137,8 +133,7 @@ const OnrampModal = ({ open, amount, amountFormatted, recipient, fromToken, toTo
|
|
|
137
133
|
}, [executionStatus]);
|
|
138
134
|
const { data: transactions, isLoading: isLoadingTransaction } = (0, relay_kit_hooks_1.useRequests)(step === OnrampStep.Success && fillTxHash
|
|
139
135
|
? {
|
|
140
|
-
|
|
141
|
-
hash: fillTxHash
|
|
136
|
+
fillTxHash
|
|
142
137
|
}
|
|
143
138
|
: undefined, client?.baseApiUrl, {
|
|
144
139
|
enabled: Boolean(step === OnrampStep.Success && fillTxHash),
|
|
@@ -148,9 +143,9 @@ const OnrampModal = ({ open, amount, amountFormatted, recipient, fromToken, toTo
|
|
|
148
143
|
retryOnMount: false
|
|
149
144
|
});
|
|
150
145
|
const transaction = transactions && transactions[0] ? transactions[0] : null;
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
? ((0, numbers_js_1.formatBN)(+
|
|
146
|
+
const { currencyOut: requestCurrencyOut } = (0, relayTransaction_js_1.getRequestCurrencies)(transaction);
|
|
147
|
+
const toAmountFormatted = requestCurrencyOut?.amountFormatted
|
|
148
|
+
? ((0, numbers_js_1.formatBN)(+requestCurrencyOut.amountFormatted, 5, requestCurrencyOut.currency?.decimals ?? 18) ?? undefined)
|
|
154
149
|
: amountToTokenFormatted;
|
|
155
150
|
const fillTxUrl = fillTxHash
|
|
156
151
|
? (0, getTxBlockExplorerUrl_js_1.getTxBlockExplorerUrl)(toToken.chainId, client?.chains, fillTxHash)
|
|
@@ -159,7 +154,9 @@ const OnrampModal = ({ open, amount, amountFormatted, recipient, fromToken, toTo
|
|
|
159
154
|
? `https://buy.moonpay.com/transaction_receipt?transactionId=${moonPayRequestId}`
|
|
160
155
|
: null;
|
|
161
156
|
(0, react_1.useEffect)(() => {
|
|
162
|
-
if (executionStatus?.status === 'pending'
|
|
157
|
+
if ((executionStatus?.status === 'pending' ||
|
|
158
|
+
executionStatus?.status === 'depositing' ||
|
|
159
|
+
executionStatus?.status === 'submitted') &&
|
|
163
160
|
(step !== OnrampStep.Processing ||
|
|
164
161
|
processingStep !== OnrampProcessingStep.Relaying)) {
|
|
165
162
|
setStep(OnrampStep.Processing);
|