Skip to content

Commit ee1cb7a

Browse files
committed
Add support for onDataChanged and user-id
1 parent 401d4a0 commit ee1cb7a

2 files changed

Lines changed: 53 additions & 28 deletions

File tree

src/faslet-widget.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,16 @@ export interface FasletWidgetProps {
2929
shopPageUrl?: string
3030
onAddToCart?: (id: string) => Promise<unknown>
3131
onResult?: ({ label }: { label: string }, resultType: 'auto' | 'result-screen') => unknown
32+
onDataChanged?: (userData: {
33+
userId: string
34+
widgetVersion?: string
35+
seenExperiments?: string
36+
experimentVariants?: string
37+
profile?: unknown
38+
}) => unknown
39+
userId?: string
40+
onButtonShow?: () => unknown
41+
onButtonHidden?: () => unknown
3242
}
3343

3444
export function FasletWidget({
@@ -45,6 +55,10 @@ export function FasletWidget({
4555
onAddToCart,
4656
shopPageUrl,
4757
onResult,
58+
onDataChanged,
59+
userId,
60+
onButtonShow,
61+
onButtonHidden,
4862
}: FasletWidgetProps) {
4963
// Add script tag to head
5064
useEffect(() => {
@@ -83,6 +97,9 @@ export function FasletWidget({
8397
shopUrl: shopPageUrl,
8498
addToCart: onAddToCart,
8599
onResult,
100+
onDataChanged,
101+
onButtonShow,
102+
onButtonHidden,
86103
}
87104

88105
const extraAttributes: Record<string, any> = {}
@@ -91,6 +108,10 @@ export function FasletWidget({
91108
extraAttributes['disable-product-recommendations'] = true
92109
}
93110

111+
if (userId) {
112+
extraAttributes['user-id'] = userId
113+
}
114+
94115
return (
95116
<faslet-app
96117
shop-id={shopId}

src/global.d.ts

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,38 @@
11
interface Window {
22
_faslet?: {
3-
id: string; // The product identifier
4-
sku: string; // The product SKU if it exists
5-
shopUrl: string;
6-
addToCart?: (variantId: string) => Promise<unknown>;
7-
onButtonShow?: () => unknown;
8-
onButtonHidden?: () => unknown;
9-
openWidget?: () => unknown;
10-
onResult?: (
11-
{ label: string },
12-
resultType: 'auto' | 'result-screen'
13-
) => unknown;
14-
onColorSelected?: (colorId: string) => unknown;
15-
selectColor?: (colorId: string) => unknown;
3+
id: string // The product identifier
4+
sku: string // The product SKU if it exists
5+
shopUrl: string
6+
addToCart?: (variantId: string) => Promise<unknown>
7+
onButtonShow?: () => unknown
8+
onButtonHidden?: () => unknown
9+
openWidget?: () => unknown
10+
onResult?: ({ label: string }, resultType: 'auto' | 'result-screen') => unknown
11+
onColorSelected?: (colorId: string) => unknown
12+
selectColor?: (colorId: string) => unknown
1613
variants: {
17-
size: string;
18-
color?: string;
19-
id: string;
20-
available: boolean;
21-
sku: string;
22-
price?: number;
23-
imageUrl?: string;
24-
}[];
14+
size: string
15+
color?: string
16+
id: string
17+
available: boolean
18+
sku: string
19+
price?: number
20+
imageUrl?: string
21+
}[]
2522
colors?: {
26-
id: string;
27-
name: string;
28-
}[];
29-
};
23+
id: string
24+
name: string
25+
}[]
26+
onDataChanged?: (userData: {
27+
userId: string
28+
widgetVersion?: string
29+
seenExperiments?: string
30+
experimentVariants?: string
31+
profile?: unknown
32+
}) => unknown
33+
}
3034
_faslet_orders?: {
31-
configure: () => unknown;
32-
event: (name: string, shopId: string, eventData: unknown) => unknown;
33-
};
35+
configure: () => unknown
36+
event: (name: string, shopId: string, eventData: unknown) => unknown
37+
}
3438
}

0 commit comments

Comments
 (0)