ublo-lib 1.47.60 → 1.47.62
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/es/esf/hooks/use-gesco-referral.d.ts +2 -0
- package/es/esf/hooks/use-gesco-referral.d.ts.map +1 -0
- package/es/esf/hooks/use-gesco-referral.js +18 -0
- package/es/future/components/msem-preset-editor/editors/ski-rental.d.ts +1 -1
- package/es/future/components/msem-preset-editor/editors/ski-rental.d.ts.map +1 -1
- package/es/future/components/msem-preset-editor/editors/ski-rental.js +104 -4
- package/es/future/components/msem-preset-editor/services/api.d.ts +2 -0
- package/es/future/components/msem-preset-editor/services/api.d.ts.map +1 -1
- package/es/future/components/msem-preset-editor/services/api.js +8 -0
- package/es/future/components/plausible/services/callback.d.ts +2 -1
- package/es/future/components/plausible/services/callback.d.ts.map +1 -1
- package/es/future/components/plausible/services/callback.js +84 -8
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-gesco-referral.d.ts","sourceRoot":"","sources":["../../../src/esf/hooks/use-gesco-referral.js"],"names":[],"mappings":"AAMA,iDAcC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as Plausible from "../../future/components/plausible";
|
|
3
|
+
const STORAGE_KEY = "gescoReferral";
|
|
4
|
+
const CHECKER_STORAGE_KEY = "gescoReferralChecked";
|
|
5
|
+
export default function useGescoReferral() {
|
|
6
|
+
React.useEffect(() => {
|
|
7
|
+
const storedChecker = window.sessionStorage.getItem(CHECKER_STORAGE_KEY);
|
|
8
|
+
const storedGescoReferral = window.localStorage.getItem(STORAGE_KEY);
|
|
9
|
+
if (!storedChecker && storedGescoReferral) {
|
|
10
|
+
const { type, exp } = JSON.parse(storedGescoReferral);
|
|
11
|
+
const isExpired = exp < Date.now();
|
|
12
|
+
if (!isExpired && type !== -1) {
|
|
13
|
+
Plausible.sendGoal("MseM: Payment link", { GescoReferral: type });
|
|
14
|
+
window.sessionStorage.setItem(CHECKER_STORAGE_KEY, "true");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}, []);
|
|
18
|
+
}
|
|
@@ -13,6 +13,6 @@ type Props = {
|
|
|
13
13
|
onChange?: (preset: Record<string, any> | null) => void;
|
|
14
14
|
testPreset: () => void;
|
|
15
15
|
};
|
|
16
|
-
export default function SkiRental({ msemServicesUrl, preset, setPreset, setShowPresetDialog, onChange, testPreset, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export default function SkiRental({ msemServicesUrl, preset, setPreset, facet, setShowPresetDialog, onChange, testPreset, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
17
17
|
export {};
|
|
18
18
|
//# sourceMappingURL=ski-rental.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ski-rental.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/msem-preset-editor/editors/ski-rental.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ski-rental.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/msem-preset-editor/editors/ski-rental.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC5E,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IACxD,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AA2BF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,eAAe,EACf,MAAM,EACN,SAAS,EACT,KAAK,EACL,mBAAmB,EACnB,QAAQ,EACR,UAAU,GACX,EAAE,KAAK,2CAgUP"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import MultipleSelect from "dt-design-system/es/multiple-select";
|
|
4
|
+
import Select from "dt-design-system/es/select";
|
|
4
5
|
import NumberPicker from "dt-design-system/es/number-picker";
|
|
5
6
|
import Input from "dt-design-system/es/input";
|
|
6
7
|
import Form from "../components/form";
|
|
@@ -14,14 +15,31 @@ const DEFAULT_DATA = {
|
|
|
14
15
|
rentFrom: "",
|
|
15
16
|
activity: "",
|
|
16
17
|
level: "",
|
|
17
|
-
productId:
|
|
18
|
+
productId: "",
|
|
18
19
|
};
|
|
19
|
-
|
|
20
|
+
const activities = [
|
|
21
|
+
{ label: "", value: "" },
|
|
22
|
+
{ label: "Ski", value: "SKI" },
|
|
23
|
+
{ label: "Snow", value: "SNOW" },
|
|
24
|
+
{ label: "Autre", value: "OTHER" },
|
|
25
|
+
];
|
|
26
|
+
const levels = [
|
|
27
|
+
{ label: "", value: "" },
|
|
28
|
+
{ label: "Débutant", value: "DEBUTANT" },
|
|
29
|
+
{ label: "Intermédiaire", value: "INTERMEDIAIRE" },
|
|
30
|
+
{ label: "Confirmé", value: "CONFIRME" },
|
|
31
|
+
];
|
|
32
|
+
export default function SkiRental({ msemServicesUrl, preset, setPreset, facet, setShowPresetDialog, onChange, testPreset, }) {
|
|
20
33
|
const savedPreset = React.useRef(preset);
|
|
21
34
|
const { channel, resort, merchant } = preset?.options;
|
|
22
35
|
const mode = merchant === undefined ? "LISTING" : "MERCHANT";
|
|
23
36
|
const [loading, setLoading] = React.useState(false);
|
|
37
|
+
const [loadingProducts, setLoadingProducts] = React.useState(false);
|
|
24
38
|
const [merchantList, setMerchantList] = React.useState([]);
|
|
39
|
+
const [catalogs, setCatalogs] = React.useState([]);
|
|
40
|
+
const [catalog, setCatalog] = React.useState(preset?.options?.catalog || "");
|
|
41
|
+
const isReady = catalogs !== null;
|
|
42
|
+
const [products, setProducts] = React.useState([]);
|
|
25
43
|
const [merchants, setMerchants] = React.useState(getDefaultData(preset, "LISTING"));
|
|
26
44
|
const [data, setData] = React.useState(getDefaultData(preset, "MERCHANT"));
|
|
27
45
|
const formattedMerchants = merchantList.map(({ name, code }) => {
|
|
@@ -66,12 +84,25 @@ export default function SkiRental({ msemServicesUrl, preset, setPreset, setShowP
|
|
|
66
84
|
setPreset((current = {}) => {
|
|
67
85
|
let newPreset = current;
|
|
68
86
|
if (mode === "LISTING") {
|
|
87
|
+
const catalog = data.catalog || undefined;
|
|
88
|
+
const duration = data.duration || undefined;
|
|
89
|
+
const rentFrom = data.rentFrom || undefined;
|
|
90
|
+
const activity = data.activity || undefined;
|
|
91
|
+
const level = data.level || undefined;
|
|
69
92
|
newPreset = {
|
|
70
93
|
...current,
|
|
71
94
|
presets: {
|
|
72
95
|
...(current?.presets || {}),
|
|
96
|
+
duration,
|
|
97
|
+
rentFrom,
|
|
98
|
+
activity,
|
|
99
|
+
level,
|
|
73
100
|
merchants,
|
|
74
101
|
},
|
|
102
|
+
options: {
|
|
103
|
+
...(current?.options || {}),
|
|
104
|
+
catalog,
|
|
105
|
+
},
|
|
75
106
|
};
|
|
76
107
|
}
|
|
77
108
|
if (mode === "MERCHANT") {
|
|
@@ -101,15 +132,84 @@ export default function SkiRental({ msemServicesUrl, preset, setPreset, setShowP
|
|
|
101
132
|
return newPreset;
|
|
102
133
|
});
|
|
103
134
|
}, [data, merchants, mode, onChange, setPreset]);
|
|
135
|
+
React.useEffect(() => {
|
|
136
|
+
const getMerchantSettings = async () => {
|
|
137
|
+
try {
|
|
138
|
+
setLoading(true);
|
|
139
|
+
const catalogs = await API.getSkiRentalCatalogs(msemServicesUrl, merchant);
|
|
140
|
+
const products = await API.getSkiRentalProducts(msemServicesUrl, merchant, facet, data.catalog || undefined);
|
|
141
|
+
setCatalogs(catalogs);
|
|
142
|
+
setProducts(products.map((product) => ({
|
|
143
|
+
label: product.label,
|
|
144
|
+
value: product.id,
|
|
145
|
+
})));
|
|
146
|
+
}
|
|
147
|
+
catch (e) {
|
|
148
|
+
console.error(e);
|
|
149
|
+
}
|
|
150
|
+
finally {
|
|
151
|
+
setLoading(false);
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
if (mode === "MERCHANT" && merchant !== undefined) {
|
|
155
|
+
getMerchantSettings();
|
|
156
|
+
}
|
|
157
|
+
}, [mode, merchant, msemServicesUrl, facet, data.catalog]);
|
|
158
|
+
React.useEffect(() => {
|
|
159
|
+
const getProducts = async () => {
|
|
160
|
+
try {
|
|
161
|
+
setLoadingProducts(true);
|
|
162
|
+
const products = await API.getSkiRentalProducts(msemServicesUrl, merchant, facet, data.catalog || undefined, data.activity || undefined, data.level || undefined);
|
|
163
|
+
setProducts(products.map((product) => ({
|
|
164
|
+
label: product.label,
|
|
165
|
+
value: product.id,
|
|
166
|
+
})));
|
|
167
|
+
}
|
|
168
|
+
catch (e) {
|
|
169
|
+
console.error(e);
|
|
170
|
+
}
|
|
171
|
+
finally {
|
|
172
|
+
setLoadingProducts(false);
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
if (mode === "MERCHANT") {
|
|
176
|
+
getProducts();
|
|
177
|
+
}
|
|
178
|
+
}, [
|
|
179
|
+
msemServicesUrl,
|
|
180
|
+
mode,
|
|
181
|
+
merchant,
|
|
182
|
+
facet,
|
|
183
|
+
data.catalog,
|
|
184
|
+
data.activity,
|
|
185
|
+
data.level,
|
|
186
|
+
]);
|
|
187
|
+
React.useEffect(() => {
|
|
188
|
+
const checkProduct = async () => {
|
|
189
|
+
if (data.productId &&
|
|
190
|
+
!products.some((product) => product.value === parseInt(data.productId))) {
|
|
191
|
+
setData((current = {}) => ({
|
|
192
|
+
...current,
|
|
193
|
+
productId: DEFAULT_DATA.productId,
|
|
194
|
+
}));
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
if (mode === "MERCHANT") {
|
|
198
|
+
checkProduct();
|
|
199
|
+
}
|
|
200
|
+
}, [mode, products, data.productId]);
|
|
104
201
|
const selectedMerchants = merchants?.map((merchant) => formattedMerchants.find((d) => d.value === merchant));
|
|
105
202
|
const title = mode === "LISTING"
|
|
106
203
|
? "Presets loueurs de matériel"
|
|
107
|
-
:
|
|
204
|
+
: `Presets ${preset?.name}`;
|
|
108
205
|
return (_jsxs(Form, { title: title, width: 420, preset: preset, buttonsActions: {
|
|
109
206
|
testPreset,
|
|
110
207
|
cancelPreset,
|
|
111
208
|
confirmPreset,
|
|
112
|
-
}, children: [mode === "LISTING" && merchantList?.length > 0 && (_jsx(MultipleSelect, { label: "Liste de marchands", options: formattedMerchants, values: selectedMerchants, onChange: updateMerchants, disabled: loading, withSearch: true })
|
|
209
|
+
}, children: [mode === "LISTING" && merchantList?.length > 0 && (_jsxs(_Fragment, { children: [_jsx(MultipleSelect, { label: "Liste de marchands", options: formattedMerchants, values: selectedMerchants, onChange: updateMerchants, disabled: loading, withSearch: true }), _jsx(Input, { label: "Catalogue", value: data.catalog || DEFAULT_DATA.catalog, onValueChange: updateData("catalog"), disabled: loading }), _jsx(Input, { type: "date", label: "Date de d\u00E9but", value: data.rentFrom || DEFAULT_DATA.rentFrom, onValueChange: updateData("rentFrom"), disabled: loading }), _jsx(NumberPicker, { label: "Dur\u00E9e", value: data.duration || DEFAULT_DATA.duration, onChange: updateData("duration"), disabled: loading }), _jsx(Select, { label: "Activit\u00E9", value: data.activity || DEFAULT_DATA.activity, options: activities, onValueChange: updateData("activity"), disabled: loading }), _jsx(Select, { label: "Niveau", value: data.level || DEFAULT_DATA.level, options: levels, onValueChange: updateData("level"), disabled: loading })] })), mode === "MERCHANT" && (_jsxs(_Fragment, { children: [_jsx(Select, { label: "Catalogue", value: catalog, options: catalogs ? ["", ...catalogs] : [], onValueChange: (value) => {
|
|
210
|
+
setCatalog(value);
|
|
211
|
+
setData({ ...data, catalog: value });
|
|
212
|
+
}, loading: !isReady }), _jsx(Input, { type: "date", label: "Date de d\u00E9but", value: data.rentFrom || DEFAULT_DATA.rentFrom, onValueChange: updateData("rentFrom"), disabled: loading }), _jsx(NumberPicker, { label: "Dur\u00E9e", value: data.duration || DEFAULT_DATA.duration, onChange: updateData("duration"), disabled: loading }), _jsx(Select, { label: "Activit\u00E9", value: data.activity || DEFAULT_DATA.activity, options: activities, onValueChange: updateData("activity"), disabled: loading }), _jsx(Select, { label: "Niveau", value: data.level || DEFAULT_DATA.level, options: levels, onValueChange: updateData("level"), disabled: loading }), _jsx(Select, { label: "Produit", value: data.productId || DEFAULT_DATA.productId, options: products ? ["", ...products] : [], onValueChange: updateData("productId"), loading: loadingProducts })] }))] }));
|
|
113
213
|
}
|
|
114
214
|
function getDefaultData(preset, mode) {
|
|
115
215
|
if (mode === "LISTING") {
|
|
@@ -13,5 +13,7 @@ export declare function getVakarioCategories(msemServicesUrl: string, channel: s
|
|
|
13
13
|
export declare function getVakarioLevels(msemServicesUrl: string, channel: string, merchant: string, kind: string, age: string, category: string, lang: "fr" | "en"): Promise<any>;
|
|
14
14
|
export declare function getOtherProductsCategories(msemServicesUrl: string, facet: string, merchant: string, lang: "fr" | "en"): Promise<any>;
|
|
15
15
|
export declare function getRenterList(msemServicesUrl: string, channel: string, resort: number | string, date?: string): Promise<any>;
|
|
16
|
+
export declare function getSkiRentalCatalogs(msemServicesUrl: string, merchant: string): Promise<any>;
|
|
17
|
+
export declare function getSkiRentalProducts(msemServicesUrl: string, merchant: string, facet: string, catalog?: string, activity?: string, level?: string): Promise<any>;
|
|
16
18
|
export declare function getEsfKinds(msemServicesUrl: string, channel: string, resort: number, stayFrom: string, stayTo: string, season: string, lang: "fr" | "en"): Promise<any>;
|
|
17
19
|
//# sourceMappingURL=api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/msem-preset-editor/services/api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/msem-preset-editor/services/api.ts"],"names":[],"mappings":"AAGA,wBAAgB,SAAS,CACvB,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,KAAK,EAAE,MAAM,gBAId;AAWD,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,gBAMb;AAED,wBAAsB,UAAU,CAC9B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,gBAIxB;AAED,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,gBAIjB;AAED,wBAAsB,mBAAmB,CACvC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,gBAIhB;AAGD,wBAAsB,WAAW,CAC/B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,gBAIf;AAED,wBAAsB,iBAAiB,CACrC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,GAAG,IAAI,gBAIlB;AAED,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,GAAG,IAAI,EACjB,OAAO,UAAQ,gBAIhB;AAED,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,IAAI,GAAG,IAAI,gBAIlB;AAED,wBAAsB,eAAe,CACnC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,IAAI,GAAG,IAAI,gBAIlB;AAED,wBAAsB,cAAc,CAClC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,GAAG,IAAI,gBAIlB;AAED,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,IAAI,GAAG,IAAI,gBAIlB;AAED,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,IAAI,GAAG,IAAI,gBAIlB;AAED,wBAAsB,0BAA0B,CAC9C,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,IAAI,GAAG,IAAI,gBAIlB;AAED,wBAAsB,aAAa,CACjC,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,IAAI,CAAC,EAAE,MAAM,gBAId;AAED,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,gBAIjB;AAED,wBAAsB,oBAAoB,CACxC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,gBAIf;AAED,wBAAsB,WAAW,CAC/B,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,GAAG,IAAI,gBAYlB"}
|
|
@@ -70,6 +70,14 @@ export async function getRenterList(msemServicesUrl, channel, resort, date) {
|
|
|
70
70
|
const endpoint = `${msemServicesUrl}/api/ski-rental/${resort}/renters`;
|
|
71
71
|
return POST(endpoint, { channel, date });
|
|
72
72
|
}
|
|
73
|
+
export async function getSkiRentalCatalogs(msemServicesUrl, merchant) {
|
|
74
|
+
const endpoint = `${msemServicesUrl}/api/ski-rental/settings/${merchant}/catalogs`;
|
|
75
|
+
return POST(endpoint);
|
|
76
|
+
}
|
|
77
|
+
export async function getSkiRentalProducts(msemServicesUrl, merchant, facet, catalog, activity, level) {
|
|
78
|
+
const endpoint = `${msemServicesUrl}/api/ski-rental/settings/${merchant}/products`;
|
|
79
|
+
return POST(endpoint, { facet, catalog, activity, level });
|
|
80
|
+
}
|
|
73
81
|
export async function getEsfKinds(msemServicesUrl, channel, resort, stayFrom, stayTo, season, lang) {
|
|
74
82
|
const endpoint = `${msemServicesUrl}/api/esf/kinds`;
|
|
75
83
|
return POST(endpoint, {
|
|
@@ -18,7 +18,8 @@ type Props = {
|
|
|
18
18
|
orderId?: string;
|
|
19
19
|
cartId?: string;
|
|
20
20
|
currency?: string;
|
|
21
|
+
type?: string;
|
|
21
22
|
};
|
|
22
|
-
export declare function MseM({ event, payment_type: paymentType, execcode, items, orderId, cartId, currency, }: Props): void
|
|
23
|
+
export declare function MseM({ event, payment_type: paymentType, execcode, items, orderId, cartId, currency, type, }: Props): Promise<void>;
|
|
23
24
|
export {};
|
|
24
25
|
//# sourceMappingURL=callback.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/plausible/services/callback.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"callback.d.ts","sourceRoot":"","sources":["../../../../../src/future/components/plausible/services/callback.ts"],"names":[],"mappings":"AAIA,KAAK,IAAI,GAAG;IACV,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AA6BF,wBAAsB,IAAI,CAAC,EACzB,KAAK,EACL,YAAY,EAAE,WAAW,EACzB,QAAQ,EACR,KAAU,EACV,OAAO,EACP,MAAM,EACN,QAAgB,EAChB,IAAI,GACL,EAAE,KAAK,iBA8MP"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { fetchCart } from "../../../../common/components/cart-preview/api";
|
|
1
2
|
import sendGoal from "./send-goal";
|
|
3
|
+
import * as Utils from "../../../../common/components/cart-preview/utils";
|
|
2
4
|
const EVENT_NAMES = {
|
|
3
5
|
view_item: "MseM: View item",
|
|
6
|
+
gesco_event: "Contact-",
|
|
4
7
|
add_to_cart: "MseM: Add to cart",
|
|
5
8
|
remove_from_cart: "MseM: Remove from cart",
|
|
6
9
|
checkout: "MseM: Begin checkout",
|
|
@@ -8,8 +11,13 @@ const EVENT_NAMES = {
|
|
|
8
11
|
purchase: "MseM: Payment success",
|
|
9
12
|
payment_failure: "MseM: Payment failure",
|
|
10
13
|
};
|
|
11
|
-
|
|
14
|
+
const GESCO_EVENT_NAMES = {
|
|
15
|
+
tunnel: "CPSM",
|
|
16
|
+
vel: "VEL",
|
|
17
|
+
};
|
|
18
|
+
export async function MseM({ event, payment_type: paymentType, execcode, items = [], orderId, cartId, currency = "EUR", type, }) {
|
|
12
19
|
const hoteId = getBusinessProvider();
|
|
20
|
+
const gescoReferral = getGescoProvenance();
|
|
13
21
|
const stay = getStay();
|
|
14
22
|
const amount = items.reduce((acc, item) => {
|
|
15
23
|
return acc + item.gtmData.price * item.gtmData.quantity;
|
|
@@ -32,12 +40,21 @@ export function MseM({ event, payment_type: paymentType, execcode, items = [], o
|
|
|
32
40
|
Activity: item.gtmData.item_category2,
|
|
33
41
|
Code: item.gtmData.item_category3,
|
|
34
42
|
Product: item.gtmData.item_variant,
|
|
43
|
+
Price: item.gtmData.price,
|
|
44
|
+
Quantity: item.gtmData.quantity,
|
|
35
45
|
};
|
|
36
46
|
});
|
|
37
47
|
const sendPerProductGoals = (name, perProductProps) => perProductProps.forEach((props) => {
|
|
38
|
-
|
|
48
|
+
const { Price, Quantity, ...filteredProps } = props;
|
|
49
|
+
sendGoal(name + " item", {
|
|
50
|
+
...filteredProps,
|
|
51
|
+
GescoReferral: gescoReferral,
|
|
52
|
+
hoteId,
|
|
53
|
+
stayFrom: stay?.from,
|
|
54
|
+
stayTo: stay?.to,
|
|
55
|
+
}, {
|
|
39
56
|
currency,
|
|
40
|
-
amount:
|
|
57
|
+
amount: Price * Quantity,
|
|
41
58
|
});
|
|
42
59
|
});
|
|
43
60
|
switch (event) {
|
|
@@ -48,7 +65,11 @@ export function MseM({ event, payment_type: paymentType, execcode, items = [], o
|
|
|
48
65
|
hoteId,
|
|
49
66
|
stay,
|
|
50
67
|
});
|
|
51
|
-
sendGoal(name, {
|
|
68
|
+
sendGoal(name, {
|
|
69
|
+
...firstProductProps,
|
|
70
|
+
stayFrom: stay?.from,
|
|
71
|
+
rawData,
|
|
72
|
+
});
|
|
52
73
|
break;
|
|
53
74
|
}
|
|
54
75
|
case "add_to_cart": {
|
|
@@ -69,6 +90,15 @@ export function MseM({ event, payment_type: paymentType, execcode, items = [], o
|
|
|
69
90
|
stay,
|
|
70
91
|
});
|
|
71
92
|
sendGoal(name, { ...firstProductProps, stayFrom: stay?.from, rawData }, revenue);
|
|
93
|
+
try {
|
|
94
|
+
const response = await fetchCart(cartId);
|
|
95
|
+
const { orders: bareOrders } = response?.cart;
|
|
96
|
+
const orders = Utils.getOrders(bareOrders);
|
|
97
|
+
if (!response || !orders || orders.length === 0) {
|
|
98
|
+
removeGescoProvenance();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch { }
|
|
72
102
|
break;
|
|
73
103
|
}
|
|
74
104
|
case "checkout": {
|
|
@@ -78,7 +108,7 @@ export function MseM({ event, payment_type: paymentType, execcode, items = [], o
|
|
|
78
108
|
hoteId,
|
|
79
109
|
stay,
|
|
80
110
|
});
|
|
81
|
-
sendGoal(name, { cartId, stayFrom: stay?.from, rawData }, revenue);
|
|
111
|
+
sendGoal(name, { cartId, stayFrom: stay?.from, rawData, GescoReferral: gescoReferral }, revenue);
|
|
82
112
|
sendPerProductGoals(name, perProductProps);
|
|
83
113
|
break;
|
|
84
114
|
}
|
|
@@ -90,10 +120,23 @@ export function MseM({ event, payment_type: paymentType, execcode, items = [], o
|
|
|
90
120
|
stay,
|
|
91
121
|
paymentMethod: paymentType,
|
|
92
122
|
});
|
|
93
|
-
sendGoal(name, {
|
|
123
|
+
sendGoal(name, {
|
|
124
|
+
cartId,
|
|
125
|
+
"Payment type": paymentType,
|
|
126
|
+
stayFrom: stay?.from,
|
|
127
|
+
rawData,
|
|
128
|
+
GescoReferral: gescoReferral,
|
|
129
|
+
}, revenue);
|
|
94
130
|
sendPerProductGoals(name, perProductProps);
|
|
95
131
|
break;
|
|
96
132
|
}
|
|
133
|
+
case "gesco_event": {
|
|
134
|
+
if (type !== "tunnel" && type !== "vel")
|
|
135
|
+
return;
|
|
136
|
+
name += GESCO_EVENT_NAMES[type];
|
|
137
|
+
sendGoal(name, { stayFrom: stay?.from });
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
97
140
|
case "purchase": {
|
|
98
141
|
const isFailure = execcode !== "0000";
|
|
99
142
|
const formattedItems = formatPeekPerformancesItem(items);
|
|
@@ -108,7 +151,14 @@ export function MseM({ event, payment_type: paymentType, execcode, items = [], o
|
|
|
108
151
|
});
|
|
109
152
|
if (isFailure) {
|
|
110
153
|
name = EVENT_NAMES.payment_failure;
|
|
111
|
-
sendGoal(name, {
|
|
154
|
+
sendGoal(name, {
|
|
155
|
+
cartId,
|
|
156
|
+
orderId,
|
|
157
|
+
Code: execcode,
|
|
158
|
+
stayFrom: stay?.from,
|
|
159
|
+
rawData,
|
|
160
|
+
GescoReferral: gescoReferral,
|
|
161
|
+
}, revenue);
|
|
112
162
|
sendPerProductGoals(name, perProductProps);
|
|
113
163
|
if (cartId) {
|
|
114
164
|
setPurchaseAttempts(cartId, attempts + 1);
|
|
@@ -118,8 +168,16 @@ export function MseM({ event, payment_type: paymentType, execcode, items = [], o
|
|
|
118
168
|
const isQuotation = checkQuotation(amount);
|
|
119
169
|
if (isQuotation)
|
|
120
170
|
return;
|
|
121
|
-
sendGoal(name, {
|
|
171
|
+
sendGoal(name, {
|
|
172
|
+
cartId,
|
|
173
|
+
orderId,
|
|
174
|
+
Code: execcode,
|
|
175
|
+
stayFrom: stay?.from,
|
|
176
|
+
rawData,
|
|
177
|
+
GescoReferral: gescoReferral,
|
|
178
|
+
}, revenue);
|
|
122
179
|
sendPerProductGoals(name, perProductProps);
|
|
180
|
+
removeGescoProvenance();
|
|
123
181
|
}
|
|
124
182
|
break;
|
|
125
183
|
}
|
|
@@ -175,3 +233,21 @@ function getBusinessProvider() {
|
|
|
175
233
|
catch (e) { }
|
|
176
234
|
}
|
|
177
235
|
}
|
|
236
|
+
function getGescoProvenance() {
|
|
237
|
+
const gescoReferral = window.localStorage.getItem("gescoReferral");
|
|
238
|
+
if (gescoReferral) {
|
|
239
|
+
try {
|
|
240
|
+
const { type, exp } = JSON.parse(gescoReferral);
|
|
241
|
+
const isExpired = exp < Date.now();
|
|
242
|
+
if (!isExpired && type !== -1) {
|
|
243
|
+
return type;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
catch (e) { }
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
function removeGescoProvenance() {
|
|
250
|
+
window.localStorage.removeItem("gescoReferral");
|
|
251
|
+
window.sessionStorage.removeItem("gescoReferral");
|
|
252
|
+
window.localStorage.removeItem("gescoReferralChecked");
|
|
253
|
+
}
|