Skip to content

Commit d2c766e

Browse files
fix(checkout): transfer widget fires standard commerce events (#2690)
1 parent 7012d57 commit d2c766e

File tree

3 files changed

+56
-2
lines changed

3 files changed

+56
-2
lines changed

packages/checkout/sdk/src/widgets/definitions/events/commerce.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
import { SwapFailed, SwapRejected, SwapSuccess } from './swap';
1818
import { WalletNetworkSwitch } from './wallet';
1919
import { AddTokensFailed, AddTokensSuccess, AddTokensConnectSuccess } from './addTokens';
20+
import { TransferSuccess, TransferFailed } from './transfer';
2021

2122
export enum CommerceEventType {
2223
INITIALISED = 'INITIALISED',
@@ -38,6 +39,7 @@ export enum CommerceSuccessEventType {
3839
BRIDGE_CLAIM_WITHDRAWAL_SUCCESS = 'BRIDGE_CLAIM_WITHDRAWAL_SUCCESS',
3940
ADD_TOKENS_SUCCESS = 'ADD_TOKENS_SUCCESS',
4041
ADD_TOKENS_CONNECT_SUCCESS = 'ADD_TOKENS_CONNECT_SUCCESS',
42+
TRANSFER_SUCCESS = 'TRANSFER_SUCCESS',
4143
}
4244

4345
export enum CommerceFailureEventType {
@@ -49,6 +51,7 @@ export enum CommerceFailureEventType {
4951
SALE_FAILED = 'SALE_FAILED',
5052
ONRAMP_FAILED = 'ONRAMP_FAILED',
5153
ADD_TOKENS_FAILED = 'ADD_TOKENS_FAILED',
54+
TRANSFER_FAILED = 'TRANSFER_FAILED',
5255
}
5356

5457
export enum CommerceUserActionEventType {
@@ -111,6 +114,11 @@ export type CommerceAddTokensConnectSuccessEvent = {
111114
data: AddTokensConnectSuccess;
112115
};
113116

117+
export type CommerceTransferSuccessEvent = {
118+
type: CommerceSuccessEventType.TRANSFER_SUCCESS;
119+
data: TransferSuccess;
120+
};
121+
114122
export type CommerceSuccessEvent =
115123
| CommerceAddTokensSuccessEvent
116124
| CommerceAddTokensConnectSuccessEvent
@@ -120,7 +128,8 @@ export type CommerceSuccessEvent =
120128
| CommerceOnRampSuccessEvent
121129
| CommerceSwapSuccessEvent
122130
| CommerceSaleSuccessEvent
123-
| CommerceSaleSuccessfulTransactionEvent;
131+
| CommerceSaleSuccessfulTransactionEvent
132+
| CommerceTransferSuccessEvent;
124133

125134
export type CommerceBridgeFailureEvent = {
126135
type: CommerceFailureEventType.BRIDGE_FAILED;
@@ -162,6 +171,11 @@ export type CommerceAddTokensFailureEvent = {
162171
data: AddTokensFailed;
163172
};
164173

174+
export type CommerceTransferFailureEvent = {
175+
type: CommerceFailureEventType.TRANSFER_FAILED;
176+
data: TransferFailed;
177+
};
178+
165179
export type CommerceFailureEvent =
166180
| CommerceAddTokensFailureEvent
167181
| CommerceBridgeFailureEvent
@@ -170,7 +184,8 @@ export type CommerceFailureEvent =
170184
| CommerceOnRampFailureEvent
171185
| CommerceSwapFailureEvent
172186
| CommerceSwapRejectedEvent
173-
| CommerceSaleFailureEvent;
187+
| CommerceSaleFailureEvent
188+
| CommerceTransferFailureEvent;
174189

175190
export type CommercePaymentMethodSelectedEvent = {
176191
type: CommerceUserActionEventType.PAYMENT_METHOD_SELECTED;

packages/checkout/widgets-lib/src/widgets/immutable-commerce/functions/getCommerceWidgetEvent.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
PurchaseEventType,
1313
SaleEventType,
1414
SwapEventType,
15+
TransferEventType,
1516
WalletEventType,
1617
} from '@imtbl/checkout-sdk';
1718

@@ -348,6 +349,41 @@ function mapPurchaseWidgetEvent(
348349
}
349350
}
350351

352+
/**
353+
* Map Transfer Widget Events
354+
*/
355+
function mapTransferWidgetEvent(
356+
event: CustomEvent<{ type: TransferEventType; data: Record<string, unknown> }>,
357+
): CommerceEventDetail {
358+
const { type, data } = event.detail;
359+
360+
switch (type) {
361+
case TransferEventType.SUCCESS:
362+
return {
363+
type: CommerceEventType.SUCCESS,
364+
data: {
365+
type: CommerceSuccessEventType.TRANSFER_SUCCESS,
366+
data,
367+
},
368+
};
369+
case TransferEventType.FAILURE:
370+
return {
371+
type: CommerceEventType.FAILURE,
372+
data: {
373+
type: CommerceFailureEventType.TRANSFER_FAILED,
374+
data,
375+
},
376+
};
377+
case TransferEventType.CLOSE_WIDGET:
378+
return {
379+
type: CommerceEventType.CLOSE,
380+
data: {},
381+
};
382+
default:
383+
throw new Error(`Unknown transfer event type "${event.detail.type}"`);
384+
}
385+
}
386+
351387
/**
352388
* Map widget events to commerce widget event detail
353389
*/
@@ -378,6 +414,8 @@ export function getCommerceWidgetEvent(
378414
return mapSaleWidgetEvent(event);
379415
case IMTBLWidgetEvents.IMTBL_PURCHASE_WIDGET_EVENT:
380416
return mapPurchaseWidgetEvent(event);
417+
case IMTBLWidgetEvents.IMTBL_TRANSFER_WIDGET_EVENT:
418+
return mapTransferWidgetEvent(event);
381419
default:
382420
throw new Error(`Unknown widget event type "${event.type}"`);
383421
}

packages/checkout/widgets-lib/src/widgets/immutable-commerce/hooks/useWidgetEvents.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const widgetEvents = [
2626
IMTBLWidgetEvents.IMTBL_SALE_WIDGET_EVENT,
2727
IMTBLWidgetEvents.IMTBL_ADD_TOKENS_WIDGET_EVENT,
2828
IMTBLWidgetEvents.IMTBL_PURCHASE_WIDGET_EVENT,
29+
IMTBLWidgetEvents.IMTBL_TRANSFER_WIDGET_EVENT,
2930
];
3031

3132
/**

0 commit comments

Comments
 (0)