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.
@@ -0,0 +1,2 @@
1
+ export default function useGescoReferral(): void;
2
+ //# sourceMappingURL=use-gesco-referral.d.ts.map
@@ -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;AAO/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;AAeF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,eAAe,EACf,MAAM,EACN,SAAS,EAET,mBAAmB,EACnB,QAAQ,EACR,UAAU,GACX,EAAE,KAAK,2CA6KP"}
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: null,
18
+ productId: "",
18
19
  };
19
- export default function SkiRental({ msemServicesUrl, preset, setPreset, setShowPresetDialog, onChange, testPreset, }) {
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
- : "Presets loueur de matériel";
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 })), mode === "MERCHANT" && (_jsxs(_Fragment, { children: [_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(Input, { label: "Activit\u00E9", value: data.activity || DEFAULT_DATA.activity, onValueChange: updateData("activity"), disabled: loading }), _jsx(Input, { label: "Niveau", value: data.level || DEFAULT_DATA.level, onValueChange: updateData("level"), disabled: loading }), _jsx(Input, { label: "Id produit", value: data.productId || DEFAULT_DATA.productId, onValueChange: updateData("productId"), disabled: loading })] }))] }));
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":"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"}
@@ -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":"AAEA,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;CACnB,CAAC;AAYF,wBAAgB,IAAI,CAAC,EACnB,KAAK,EACL,YAAY,EAAE,WAAW,EACzB,QAAQ,EACR,KAAU,EACV,OAAO,EACP,MAAM,EACN,QAAgB,GACjB,EAAE,KAAK,QAwJP"}
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
- export function MseM({ event, payment_type: paymentType, execcode, items = [], orderId, cartId, currency = "EUR", }) {
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
- sendGoal(name + " item", props, {
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: props.Price * props.Quantity,
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, { ...firstProductProps, stayFrom: stay?.from, rawData });
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, { cartId, "Payment type": paymentType, stayFrom: stay?.from, rawData }, revenue);
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, { cartId, orderId, Code: execcode, stayFrom: stay?.from, rawData }, revenue);
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, { cartId, orderId, Code: execcode, stayFrom: stay?.from, rawData }, revenue);
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
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ublo-lib",
3
- "version": "1.47.60",
3
+ "version": "1.47.62",
4
4
  "peerDependencies": {
5
5
  "classnames": "^2.5.1",
6
6
  "dt-design-system": "^3.12.0",