@akinon/next 1.55.0 → 1.56.0-rc.0
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/CHANGELOG.md +482 -0
- package/api/client.ts +50 -17
- package/assets/styles/index.css +49 -0
- package/assets/styles/index.css.map +1 -0
- package/assets/styles/index.scss +50 -26
- package/bin/pz-generate-translations.js +41 -0
- package/bin/pz-prebuild.js +1 -0
- package/bin/pz-predev.js +1 -0
- package/components/file-input.tsx +8 -0
- package/components/index.ts +1 -0
- package/components/input.tsx +21 -7
- package/components/link.tsx +17 -13
- package/components/price.tsx +11 -4
- package/components/pz-root.tsx +15 -3
- package/components/selected-payment-option-view.tsx +26 -38
- package/data/client/account.ts +10 -9
- package/data/client/api.ts +1 -1
- package/data/client/b2b.ts +35 -2
- package/data/client/basket.ts +6 -5
- package/data/client/checkout.ts +38 -1
- package/data/client/user.ts +3 -2
- package/data/server/category.ts +43 -19
- package/data/server/flatpage.ts +29 -7
- package/data/server/form.ts +29 -11
- package/data/server/landingpage.ts +26 -7
- package/data/server/list.ts +16 -6
- package/data/server/menu.ts +15 -2
- package/data/server/product.ts +33 -13
- package/data/server/seo.ts +17 -24
- package/data/server/special-page.ts +15 -5
- package/data/server/widget.ts +14 -7
- package/data/urls.ts +8 -1
- package/hocs/server/with-segment-defaults.tsx +4 -1
- package/hooks/index.ts +2 -1
- package/hooks/use-message-listener.ts +24 -0
- package/hooks/use-pagination.ts +2 -2
- package/hooks/use-payment-options.ts +2 -1
- package/lib/cache-handler.mjs +33 -0
- package/lib/cache.ts +8 -6
- package/middlewares/default.ts +87 -8
- package/middlewares/pretty-url.ts +11 -1
- package/middlewares/url-redirection.ts +4 -0
- package/package.json +4 -3
- package/redux/middlewares/checkout.ts +69 -10
- package/redux/reducers/checkout.ts +23 -3
- package/routes/pretty-url.tsx +192 -0
- package/types/commerce/account.ts +1 -0
- package/types/commerce/address.ts +1 -1
- package/types/commerce/b2b.ts +12 -2
- package/types/commerce/checkout.ts +30 -0
- package/types/commerce/order.ts +1 -0
- package/types/index.ts +18 -2
- package/utils/app-fetch.ts +17 -8
- package/utils/generate-commerce-search-params.ts +3 -1
- package/utils/index.ts +27 -6
- package/utils/redirection-iframe.ts +85 -0
- package/utils/server-translation.ts +11 -1
- package/utils/server-variables.ts +2 -1
- package/with-pz-config.js +13 -2
package/data/server/category.ts
CHANGED
|
@@ -5,26 +5,32 @@ import { category, product } from '../urls';
|
|
|
5
5
|
import { Cache, CacheKey } from '../../lib/cache';
|
|
6
6
|
import { parse } from 'lossless-json';
|
|
7
7
|
import logger from '../../utils/log';
|
|
8
|
+
import { headers as nHeaders } from 'next/headers';
|
|
9
|
+
import { ServerVariables } from '../../utils/server-variables';
|
|
8
10
|
|
|
9
11
|
function getCategoryDataHandler(
|
|
10
12
|
pk: number,
|
|
13
|
+
locale: string,
|
|
14
|
+
currency: string,
|
|
11
15
|
searchParams?: URLSearchParams,
|
|
12
16
|
headers?: Record<string, string>
|
|
13
17
|
) {
|
|
14
18
|
return async function () {
|
|
15
19
|
const params = generateCommerceSearchParams(searchParams);
|
|
16
20
|
|
|
17
|
-
const rawData = await appFetch<string>(
|
|
18
|
-
`${category.getCategoryByPk(pk)}${params ? params : ''}`,
|
|
19
|
-
|
|
21
|
+
const rawData = await appFetch<string>({
|
|
22
|
+
url: `${category.getCategoryByPk(pk)}${params ? params : ''}`,
|
|
23
|
+
locale,
|
|
24
|
+
currency,
|
|
25
|
+
init: {
|
|
20
26
|
headers: {
|
|
21
27
|
Accept: 'application/json',
|
|
22
28
|
'Content-Type': 'application/json',
|
|
23
29
|
...(headers ?? {})
|
|
24
30
|
}
|
|
25
31
|
},
|
|
26
|
-
FetchResponseType.TEXT
|
|
27
|
-
);
|
|
32
|
+
responseType: FetchResponseType.TEXT
|
|
33
|
+
});
|
|
28
34
|
|
|
29
35
|
let data: GetCategoryResponse;
|
|
30
36
|
|
|
@@ -58,15 +64,17 @@ function getCategoryDataHandler(
|
|
|
58
64
|
return { data, breadcrumbData: undefined };
|
|
59
65
|
}
|
|
60
66
|
|
|
61
|
-
const breadcrumbData = await appFetch<any>(
|
|
62
|
-
product.breadcrumbUrl(menuItemModel),
|
|
63
|
-
|
|
67
|
+
const breadcrumbData = await appFetch<any>({
|
|
68
|
+
url: product.breadcrumbUrl(menuItemModel),
|
|
69
|
+
locale,
|
|
70
|
+
currency,
|
|
71
|
+
init: {
|
|
64
72
|
headers: {
|
|
65
73
|
Accept: 'application/json',
|
|
66
74
|
'Content-Type': 'application/json'
|
|
67
75
|
}
|
|
68
76
|
}
|
|
69
|
-
);
|
|
77
|
+
});
|
|
70
78
|
|
|
71
79
|
return { data, breadcrumbData: breadcrumbData?.menu };
|
|
72
80
|
};
|
|
@@ -75,33 +83,44 @@ function getCategoryDataHandler(
|
|
|
75
83
|
export const getCategoryData = ({
|
|
76
84
|
pk,
|
|
77
85
|
searchParams,
|
|
78
|
-
headers
|
|
86
|
+
headers,
|
|
87
|
+
locale = ServerVariables.locale,
|
|
88
|
+
currency = ServerVariables.currency
|
|
79
89
|
}: {
|
|
80
90
|
pk: number;
|
|
91
|
+
locale?: string;
|
|
92
|
+
currency?: string;
|
|
81
93
|
searchParams?: URLSearchParams;
|
|
82
94
|
headers?: Record<string, string>;
|
|
83
95
|
}) => {
|
|
84
96
|
return Cache.wrap(
|
|
85
97
|
CacheKey.Category(pk, searchParams, headers),
|
|
86
|
-
|
|
98
|
+
locale,
|
|
99
|
+
getCategoryDataHandler(pk, locale, currency, searchParams, headers),
|
|
87
100
|
{
|
|
88
101
|
expire: 300
|
|
89
102
|
}
|
|
90
103
|
);
|
|
91
104
|
};
|
|
92
105
|
|
|
93
|
-
function getCategoryBySlugDataHandler(
|
|
106
|
+
function getCategoryBySlugDataHandler(
|
|
107
|
+
slug: string,
|
|
108
|
+
locale: string,
|
|
109
|
+
currency: string
|
|
110
|
+
) {
|
|
94
111
|
return async function () {
|
|
95
|
-
const rawData = await appFetch<string>(
|
|
96
|
-
category.getCategoryBySlug(slug),
|
|
97
|
-
|
|
112
|
+
const rawData = await appFetch<string>({
|
|
113
|
+
url: category.getCategoryBySlug(slug),
|
|
114
|
+
locale,
|
|
115
|
+
currency,
|
|
116
|
+
init: {
|
|
98
117
|
headers: {
|
|
99
118
|
Accept: 'application/json',
|
|
100
119
|
'Content-Type': 'application/json'
|
|
101
120
|
}
|
|
102
121
|
},
|
|
103
|
-
FetchResponseType.TEXT
|
|
104
|
-
);
|
|
122
|
+
responseType: FetchResponseType.TEXT
|
|
123
|
+
});
|
|
105
124
|
|
|
106
125
|
let data: GetCategoryResponse;
|
|
107
126
|
|
|
@@ -129,10 +148,15 @@ function getCategoryBySlugDataHandler(slug: string) {
|
|
|
129
148
|
};
|
|
130
149
|
}
|
|
131
150
|
|
|
132
|
-
export const getCategoryBySlugData = async ({
|
|
151
|
+
export const getCategoryBySlugData = async ({
|
|
152
|
+
slug,
|
|
153
|
+
locale = ServerVariables.locale,
|
|
154
|
+
currency = ServerVariables.currency
|
|
155
|
+
}) => {
|
|
133
156
|
return Cache.wrap(
|
|
134
157
|
CacheKey.CategorySlug(slug),
|
|
135
|
-
|
|
158
|
+
locale,
|
|
159
|
+
getCategoryBySlugDataHandler(slug, locale, currency),
|
|
136
160
|
{
|
|
137
161
|
expire: 300
|
|
138
162
|
}
|
package/data/server/flatpage.ts
CHANGED
|
@@ -2,13 +2,23 @@ import { flatpage } from '../urls';
|
|
|
2
2
|
import { FlatPage } from '../../types';
|
|
3
3
|
import appFetch from '../../utils/app-fetch';
|
|
4
4
|
import { Cache, CacheKey } from '../../lib/cache';
|
|
5
|
+
import { ServerVariables } from '../../utils/server-variables';
|
|
5
6
|
|
|
6
|
-
const getFlatPageDataHandler = (
|
|
7
|
+
const getFlatPageDataHandler = (
|
|
8
|
+
pk: number,
|
|
9
|
+
locale: string,
|
|
10
|
+
currency: string
|
|
11
|
+
) => {
|
|
7
12
|
return async function () {
|
|
8
|
-
const data = await appFetch<FlatPage>(
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
const data = await appFetch<FlatPage>({
|
|
14
|
+
url: flatpage.getFlatPageByPk(pk),
|
|
15
|
+
locale,
|
|
16
|
+
currency,
|
|
17
|
+
init: {
|
|
18
|
+
headers: {
|
|
19
|
+
Accept: 'application/json',
|
|
20
|
+
'Content-Type': 'application/json'
|
|
21
|
+
}
|
|
12
22
|
}
|
|
13
23
|
});
|
|
14
24
|
|
|
@@ -16,6 +26,18 @@ const getFlatPageDataHandler = (pk: number) => {
|
|
|
16
26
|
};
|
|
17
27
|
};
|
|
18
28
|
|
|
19
|
-
export const getFlatPageData = ({
|
|
20
|
-
|
|
29
|
+
export const getFlatPageData = ({
|
|
30
|
+
pk,
|
|
31
|
+
locale = ServerVariables.locale,
|
|
32
|
+
currency = ServerVariables.currency
|
|
33
|
+
}: {
|
|
34
|
+
pk: number;
|
|
35
|
+
locale?: string;
|
|
36
|
+
currency?: string;
|
|
37
|
+
}) => {
|
|
38
|
+
return Cache.wrap(
|
|
39
|
+
CacheKey.FlatPage(pk),
|
|
40
|
+
locale,
|
|
41
|
+
getFlatPageDataHandler(pk, locale, currency)
|
|
42
|
+
);
|
|
21
43
|
};
|
package/data/server/form.ts
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
import { Cache, CacheKey } from
|
|
2
|
-
import { FormType } from
|
|
1
|
+
import { Cache, CacheKey } from '../../lib/cache';
|
|
2
|
+
import { FormType } from '../../types/commerce/form';
|
|
3
3
|
|
|
4
|
-
import appFetch from
|
|
5
|
-
import {
|
|
4
|
+
import appFetch from '../../utils/app-fetch';
|
|
5
|
+
import { ServerVariables } from '../../utils/server-variables';
|
|
6
|
+
import { form } from '../urls';
|
|
6
7
|
|
|
7
|
-
const getFormDataHandler = (pk: number) => {
|
|
8
|
+
const getFormDataHandler = (pk: number, locale: string, currency: string) => {
|
|
8
9
|
return async function () {
|
|
9
|
-
const data = await appFetch<FormType>(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
const data = await appFetch<FormType>({
|
|
11
|
+
url: form.getForm(pk),
|
|
12
|
+
locale,
|
|
13
|
+
currency,
|
|
14
|
+
init: {
|
|
15
|
+
headers: {
|
|
16
|
+
Accept: 'application/json',
|
|
17
|
+
'Content-Type': 'application/json'
|
|
18
|
+
}
|
|
13
19
|
}
|
|
14
20
|
});
|
|
15
21
|
|
|
@@ -17,6 +23,18 @@ const getFormDataHandler = (pk: number) => {
|
|
|
17
23
|
};
|
|
18
24
|
};
|
|
19
25
|
|
|
20
|
-
export const getFormData = ({
|
|
21
|
-
|
|
26
|
+
export const getFormData = ({
|
|
27
|
+
pk,
|
|
28
|
+
locale = ServerVariables.locale,
|
|
29
|
+
currency = ServerVariables.currency
|
|
30
|
+
}: {
|
|
31
|
+
pk: number;
|
|
32
|
+
locale?: string;
|
|
33
|
+
currency?: string;
|
|
34
|
+
}) => {
|
|
35
|
+
return Cache.wrap(
|
|
36
|
+
CacheKey.Form(pk),
|
|
37
|
+
locale,
|
|
38
|
+
getFormDataHandler(pk, locale, currency)
|
|
39
|
+
);
|
|
22
40
|
};
|
|
@@ -2,23 +2,42 @@ import { landingpage } from '../urls';
|
|
|
2
2
|
import { LandingPage } from '../../types/commerce/landingpage';
|
|
3
3
|
import appFetch from '../../utils/app-fetch';
|
|
4
4
|
import { Cache, CacheKey } from '../../lib/cache';
|
|
5
|
+
import { ServerVariables } from '../../utils/server-variables';
|
|
5
6
|
|
|
6
|
-
const getLandingPageHandler = (
|
|
7
|
+
const getLandingPageHandler = (
|
|
8
|
+
pk: number,
|
|
9
|
+
locale: string,
|
|
10
|
+
currency: string
|
|
11
|
+
) => {
|
|
7
12
|
return async function () {
|
|
8
|
-
const data = await appFetch<LandingPage>(
|
|
9
|
-
landingpage.getLandingPageByPk(pk),
|
|
10
|
-
|
|
13
|
+
const data = await appFetch<LandingPage>({
|
|
14
|
+
url: landingpage.getLandingPageByPk(pk),
|
|
15
|
+
locale,
|
|
16
|
+
currency,
|
|
17
|
+
init: {
|
|
11
18
|
headers: {
|
|
12
19
|
Accept: 'application/json',
|
|
13
20
|
'Content-Type': 'application/json'
|
|
14
21
|
}
|
|
15
22
|
}
|
|
16
|
-
);
|
|
23
|
+
});
|
|
17
24
|
|
|
18
25
|
return data;
|
|
19
26
|
};
|
|
20
27
|
};
|
|
21
28
|
|
|
22
|
-
export const getLandingPageData = ({
|
|
23
|
-
|
|
29
|
+
export const getLandingPageData = ({
|
|
30
|
+
pk,
|
|
31
|
+
locale = ServerVariables.locale,
|
|
32
|
+
currency = ServerVariables.currency
|
|
33
|
+
}: {
|
|
34
|
+
pk: number;
|
|
35
|
+
locale?: string;
|
|
36
|
+
currency?: string;
|
|
37
|
+
}) => {
|
|
38
|
+
return Cache.wrap(
|
|
39
|
+
CacheKey.LandingPage(pk),
|
|
40
|
+
locale,
|
|
41
|
+
getLandingPageHandler(pk, locale, currency)
|
|
42
|
+
);
|
|
24
43
|
};
|
package/data/server/list.ts
CHANGED
|
@@ -5,25 +5,30 @@ import { generateCommerceSearchParams } from '../../utils';
|
|
|
5
5
|
import appFetch, { FetchResponseType } from '../../utils/app-fetch';
|
|
6
6
|
import { parse } from 'lossless-json';
|
|
7
7
|
import logger from '../../utils/log';
|
|
8
|
+
import { ServerVariables } from '../../utils/server-variables';
|
|
8
9
|
|
|
9
10
|
const getListDataHandler = (
|
|
11
|
+
locale,
|
|
12
|
+
currency,
|
|
10
13
|
searchParams: URLSearchParams,
|
|
11
14
|
headers?: Record<string, string>
|
|
12
15
|
) => {
|
|
13
16
|
return async function () {
|
|
14
17
|
const params = generateCommerceSearchParams(searchParams);
|
|
15
18
|
|
|
16
|
-
const rawData = await appFetch<string>(
|
|
17
|
-
`${category.list}${params}`,
|
|
18
|
-
|
|
19
|
+
const rawData = await appFetch<string>({
|
|
20
|
+
url: `${category.list}${params}`,
|
|
21
|
+
locale,
|
|
22
|
+
currency,
|
|
23
|
+
init: {
|
|
19
24
|
headers: {
|
|
20
25
|
Accept: 'application/json',
|
|
21
26
|
'Content-Type': 'application/json',
|
|
22
27
|
...(headers ?? {})
|
|
23
28
|
}
|
|
24
29
|
},
|
|
25
|
-
FetchResponseType.TEXT
|
|
26
|
-
);
|
|
30
|
+
responseType: FetchResponseType.TEXT
|
|
31
|
+
});
|
|
27
32
|
|
|
28
33
|
let data: GetCategoryResponse;
|
|
29
34
|
|
|
@@ -51,15 +56,20 @@ const getListDataHandler = (
|
|
|
51
56
|
};
|
|
52
57
|
|
|
53
58
|
export const getListData = async ({
|
|
59
|
+
locale = ServerVariables.locale,
|
|
60
|
+
currency = ServerVariables.currency,
|
|
54
61
|
searchParams,
|
|
55
62
|
headers
|
|
56
63
|
}: {
|
|
64
|
+
locale?: string;
|
|
65
|
+
currency?: string;
|
|
57
66
|
searchParams: URLSearchParams;
|
|
58
67
|
headers?: Record<string, string>;
|
|
59
68
|
}) => {
|
|
60
69
|
return Cache.wrap(
|
|
61
70
|
CacheKey.List(searchParams, headers),
|
|
62
|
-
|
|
71
|
+
locale,
|
|
72
|
+
getListDataHandler(locale, currency, searchParams, headers),
|
|
63
73
|
{
|
|
64
74
|
expire: 300
|
|
65
75
|
}
|
package/data/server/menu.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Cache, CacheKey } from '../../lib/cache';
|
|
2
2
|
import { MenuItemType } from '../../types';
|
|
3
3
|
import appFetch from '../../utils/app-fetch';
|
|
4
|
+
import { ServerVariables } from '../../utils/server-variables';
|
|
4
5
|
import { misc } from '../urls';
|
|
5
6
|
|
|
6
7
|
interface MenuResponse {
|
|
@@ -8,6 +9,8 @@ interface MenuResponse {
|
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
interface MenuHandlerParams {
|
|
12
|
+
locale?: string;
|
|
13
|
+
currency?: string;
|
|
11
14
|
depth?: number;
|
|
12
15
|
parent?: string;
|
|
13
16
|
}
|
|
@@ -15,9 +18,18 @@ interface MenuHandlerParams {
|
|
|
15
18
|
const DEFAULT_DEPTH = 3;
|
|
16
19
|
|
|
17
20
|
const getMenuHandler =
|
|
18
|
-
({
|
|
21
|
+
({
|
|
22
|
+
locale = ServerVariables.locale,
|
|
23
|
+
currency = ServerVariables.currency,
|
|
24
|
+
depth,
|
|
25
|
+
parent
|
|
26
|
+
}: MenuHandlerParams = {}) =>
|
|
19
27
|
async () => {
|
|
20
|
-
const response = await appFetch<MenuResponse>(
|
|
28
|
+
const response = await appFetch<MenuResponse>({
|
|
29
|
+
url: misc.menus(depth ?? DEFAULT_DEPTH, parent),
|
|
30
|
+
locale,
|
|
31
|
+
currency
|
|
32
|
+
});
|
|
21
33
|
|
|
22
34
|
return response?.menu;
|
|
23
35
|
};
|
|
@@ -30,6 +42,7 @@ const getMenuHandler =
|
|
|
30
42
|
export const getMenu = async (params?: MenuHandlerParams) => {
|
|
31
43
|
return Cache.wrap(
|
|
32
44
|
CacheKey.Menu(params?.depth ?? DEFAULT_DEPTH, params?.parent),
|
|
45
|
+
params?.locale ?? ServerVariables.locale,
|
|
33
46
|
getMenuHandler(params)
|
|
34
47
|
);
|
|
35
48
|
};
|
package/data/server/product.ts
CHANGED
|
@@ -2,16 +2,21 @@ import { Cache, CacheKey } from '../../lib/cache';
|
|
|
2
2
|
import { product } from '../urls';
|
|
3
3
|
import { ProductCategoryResult, ProductResult } from '../../types';
|
|
4
4
|
import appFetch from '../../utils/app-fetch';
|
|
5
|
+
import { ServerVariables } from '../../utils/server-variables';
|
|
5
6
|
import logger from '../../utils/log';
|
|
6
7
|
|
|
7
8
|
type GetProduct = {
|
|
8
9
|
pk: number;
|
|
10
|
+
locale?: string;
|
|
11
|
+
currency?: string;
|
|
9
12
|
searchParams?: URLSearchParams;
|
|
10
13
|
groupProduct?: boolean;
|
|
11
14
|
};
|
|
12
15
|
|
|
13
16
|
const getProductDataHandler = ({
|
|
14
17
|
pk,
|
|
18
|
+
locale,
|
|
19
|
+
currency,
|
|
15
20
|
searchParams,
|
|
16
21
|
groupProduct
|
|
17
22
|
}: GetProduct) => {
|
|
@@ -28,24 +33,31 @@ const getProductDataHandler = ({
|
|
|
28
33
|
.join('&');
|
|
29
34
|
}
|
|
30
35
|
|
|
31
|
-
const data = await appFetch<ProductResult>(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
const data = await appFetch<ProductResult>({
|
|
37
|
+
url,
|
|
38
|
+
locale,
|
|
39
|
+
currency,
|
|
40
|
+
init: {
|
|
41
|
+
headers: {
|
|
42
|
+
Accept: 'application/json',
|
|
43
|
+
'Content-Type': 'application/json'
|
|
44
|
+
}
|
|
35
45
|
}
|
|
36
46
|
});
|
|
37
47
|
|
|
38
48
|
const categoryUrl = product.categoryUrl(data.product.pk);
|
|
39
49
|
|
|
40
|
-
const productCategoryData = await appFetch<ProductCategoryResult>(
|
|
41
|
-
categoryUrl,
|
|
42
|
-
|
|
50
|
+
const productCategoryData = await appFetch<ProductCategoryResult>({
|
|
51
|
+
url: categoryUrl,
|
|
52
|
+
locale,
|
|
53
|
+
currency,
|
|
54
|
+
init: {
|
|
43
55
|
headers: {
|
|
44
56
|
Accept: 'application/json',
|
|
45
57
|
'Content-Type': 'application/json'
|
|
46
58
|
}
|
|
47
59
|
}
|
|
48
|
-
);
|
|
60
|
+
});
|
|
49
61
|
|
|
50
62
|
const menuItemModel = productCategoryData?.results[0]?.menuitemmodel;
|
|
51
63
|
|
|
@@ -59,10 +71,15 @@ const getProductDataHandler = ({
|
|
|
59
71
|
|
|
60
72
|
const breadcrumbUrl = product.breadcrumbUrl(menuItemModel);
|
|
61
73
|
|
|
62
|
-
const breadcrumbData = await appFetch<any>(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
74
|
+
const breadcrumbData = await appFetch<any>({
|
|
75
|
+
url: breadcrumbUrl,
|
|
76
|
+
locale,
|
|
77
|
+
currency,
|
|
78
|
+
init: {
|
|
79
|
+
headers: {
|
|
80
|
+
Accept: 'application/json',
|
|
81
|
+
'Content-Type': 'application/json'
|
|
82
|
+
}
|
|
66
83
|
}
|
|
67
84
|
});
|
|
68
85
|
|
|
@@ -75,6 +92,8 @@ const getProductDataHandler = ({
|
|
|
75
92
|
|
|
76
93
|
export const getProductData = async ({
|
|
77
94
|
pk,
|
|
95
|
+
locale = ServerVariables.locale,
|
|
96
|
+
currency = ServerVariables.currency,
|
|
78
97
|
searchParams,
|
|
79
98
|
groupProduct
|
|
80
99
|
}: GetProduct) => {
|
|
@@ -83,7 +102,8 @@ export const getProductData = async ({
|
|
|
83
102
|
pk,
|
|
84
103
|
searchParams ?? new URLSearchParams()
|
|
85
104
|
),
|
|
86
|
-
|
|
105
|
+
locale,
|
|
106
|
+
getProductDataHandler({ pk, locale, currency, searchParams, groupProduct }),
|
|
87
107
|
{
|
|
88
108
|
expire: 300
|
|
89
109
|
}
|
package/data/server/seo.ts
CHANGED
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
import appFetch from '../../utils/app-fetch';
|
|
2
2
|
import { Cache, CacheKey } from '../../lib/cache';
|
|
3
3
|
import { misc } from '../../data/urls';
|
|
4
|
-
import
|
|
4
|
+
import { ServerVariables } from '../../utils/server-variables';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
try {
|
|
11
|
-
data = await appFetch<{ [key: string]: string }>(misc.cmsSeo('/'));
|
|
12
|
-
} catch (error) {
|
|
13
|
-
logger.error('Error while fetching root seo data', error);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return data;
|
|
17
|
-
};
|
|
6
|
+
interface SeoDataParams {
|
|
7
|
+
url: string;
|
|
8
|
+
locale?: string;
|
|
9
|
+
currency?: string;
|
|
18
10
|
}
|
|
19
11
|
|
|
20
|
-
function getSeoDataHandler(url:
|
|
12
|
+
function getSeoDataHandler({ url, locale, currency }: SeoDataParams) {
|
|
21
13
|
return async function () {
|
|
22
14
|
let data = {} as {
|
|
23
15
|
title: string;
|
|
@@ -27,7 +19,7 @@ function getSeoDataHandler(url: string) {
|
|
|
27
19
|
};
|
|
28
20
|
|
|
29
21
|
try {
|
|
30
|
-
data = await appFetch(misc.cmsSeo(url));
|
|
22
|
+
data = await appFetch({ url: misc.cmsSeo(url), locale, currency });
|
|
31
23
|
} catch (error) {
|
|
32
24
|
// logger.error('Error while fetching seo data', { url, error });
|
|
33
25
|
}
|
|
@@ -36,13 +28,14 @@ function getSeoDataHandler(url: string) {
|
|
|
36
28
|
};
|
|
37
29
|
}
|
|
38
30
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
31
|
+
export const getSeoData = async (
|
|
32
|
+
url,
|
|
33
|
+
locale = ServerVariables.locale,
|
|
34
|
+
currency = ServerVariables.currency
|
|
35
|
+
) => {
|
|
36
|
+
return Cache.wrap(
|
|
37
|
+
CacheKey.Seo(url),
|
|
38
|
+
locale,
|
|
39
|
+
getSeoDataHandler({ url, locale, currency })
|
|
40
|
+
);
|
|
48
41
|
};
|
|
@@ -4,25 +4,30 @@ import { GetCategoryResponse } from '../../types';
|
|
|
4
4
|
import { generateCommerceSearchParams } from '../../utils';
|
|
5
5
|
import appFetch from '../../utils/app-fetch';
|
|
6
6
|
import header from '../../redux/reducers/header';
|
|
7
|
+
import { ServerVariables } from '../../utils/server-variables';
|
|
7
8
|
|
|
8
9
|
const getSpecialPageDataHandler = (
|
|
9
10
|
pk: number,
|
|
11
|
+
locale: string,
|
|
12
|
+
currency: string,
|
|
10
13
|
searchParams: URLSearchParams,
|
|
11
14
|
headers?: Record<string, string>
|
|
12
15
|
) => {
|
|
13
16
|
return async function () {
|
|
14
17
|
const params = generateCommerceSearchParams(searchParams);
|
|
15
18
|
|
|
16
|
-
const data: GetCategoryResponse = await appFetch(
|
|
17
|
-
`${category.getSpecialPageByPk(pk)}${params}`,
|
|
18
|
-
|
|
19
|
+
const data: GetCategoryResponse = await appFetch({
|
|
20
|
+
url: `${category.getSpecialPageByPk(pk)}${params}`,
|
|
21
|
+
locale,
|
|
22
|
+
currency,
|
|
23
|
+
init: {
|
|
19
24
|
headers: {
|
|
20
25
|
Accept: 'application/json',
|
|
21
26
|
'Content-Type': 'application/json',
|
|
22
27
|
...(headers ?? {})
|
|
23
28
|
}
|
|
24
29
|
}
|
|
25
|
-
);
|
|
30
|
+
});
|
|
26
31
|
|
|
27
32
|
return data;
|
|
28
33
|
};
|
|
@@ -30,16 +35,21 @@ const getSpecialPageDataHandler = (
|
|
|
30
35
|
|
|
31
36
|
export const getSpecialPageData = async ({
|
|
32
37
|
pk,
|
|
38
|
+
locale = ServerVariables.locale,
|
|
39
|
+
currency = ServerVariables.currency,
|
|
33
40
|
searchParams,
|
|
34
41
|
headers
|
|
35
42
|
}: {
|
|
36
43
|
pk: number;
|
|
44
|
+
locale?: string;
|
|
45
|
+
currency?: string;
|
|
37
46
|
searchParams: URLSearchParams;
|
|
38
47
|
headers?: Record<string, string>;
|
|
39
48
|
}) => {
|
|
40
49
|
return Cache.wrap(
|
|
41
50
|
CacheKey.SpecialPage(pk, searchParams, headers),
|
|
42
|
-
|
|
51
|
+
locale,
|
|
52
|
+
getSpecialPageDataHandler(pk, locale, currency, searchParams, headers),
|
|
43
53
|
{
|
|
44
54
|
expire: 300
|
|
45
55
|
}
|
package/data/server/widget.ts
CHANGED
|
@@ -3,25 +3,32 @@ import 'server-only';
|
|
|
3
3
|
import { CacheOptions, WidgetResultType } from '../../types';
|
|
4
4
|
import appFetch from '../../utils/app-fetch';
|
|
5
5
|
import { widgets } from '../urls';
|
|
6
|
+
import { ServerVariables } from '../../utils/server-variables';
|
|
6
7
|
|
|
7
|
-
const getWidgetDataHandler =
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
const getWidgetDataHandler =
|
|
9
|
+
(slug: string, locale: string, currency: string) => async () => {
|
|
10
|
+
if (!slug) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
};
|
|
14
|
+
return await appFetch({ url: widgets.getWidget(slug), locale, currency });
|
|
15
|
+
};
|
|
14
16
|
|
|
15
17
|
export const getWidgetData = async <T>({
|
|
16
18
|
slug,
|
|
19
|
+
locale = ServerVariables.locale,
|
|
20
|
+
currency = ServerVariables.currency,
|
|
17
21
|
cacheOptions
|
|
18
22
|
}: {
|
|
19
23
|
slug: string;
|
|
24
|
+
locale?: string;
|
|
25
|
+
currency?: string;
|
|
20
26
|
cacheOptions?: CacheOptions;
|
|
21
27
|
}): Promise<WidgetResultType<T>> => {
|
|
22
28
|
return Cache.wrap(
|
|
23
29
|
CacheKey.Widget(slug),
|
|
24
|
-
|
|
30
|
+
locale,
|
|
31
|
+
getWidgetDataHandler(slug, locale, currency),
|
|
25
32
|
cacheOptions
|
|
26
33
|
);
|
|
27
34
|
};
|
package/data/urls.ts
CHANGED
|
@@ -83,6 +83,8 @@ export const checkout = {
|
|
|
83
83
|
setDeliveryOption: '/orders/checkout/?page=DeliveryOptionSelectionPage',
|
|
84
84
|
setAddresses: '/orders/checkout/?page=AddressSelectionPage',
|
|
85
85
|
setShippingOption: '/orders/checkout/?page=ShippingOptionSelectionPage',
|
|
86
|
+
setDataSourceShippingOption:
|
|
87
|
+
'/orders/checkout/?page=DataSourceShippingOptionSelectionPage',
|
|
86
88
|
setPaymentOption: '/orders/checkout/?page=PaymentOptionSelectionPage',
|
|
87
89
|
setBinNumber: '/orders/checkout/?page=BinNumberPage',
|
|
88
90
|
setMasterpassBinNumber: '/orders/checkout/?page=MasterpassBinNumberPage',
|
|
@@ -109,6 +111,8 @@ export const checkout = {
|
|
|
109
111
|
loyaltyMoneyUsage: '/orders/checkout/?page=LoyaltyMoneyUsagePage',
|
|
110
112
|
setOrderNote: '/orders/checkout/?page=OrderNotePage',
|
|
111
113
|
couponSelectionPage: '/orders/checkout/?page=CouponSelectionPage',
|
|
114
|
+
setAttributeBasedShippingOption:
|
|
115
|
+
'/orders/checkout/?page=AttributeBasedShippingOptionSelectionPage',
|
|
112
116
|
deliveryBagsPage: '/orders/checkout/?page=DeliveryBagsPage'
|
|
113
117
|
};
|
|
114
118
|
|
|
@@ -198,7 +202,10 @@ export const b2b = {
|
|
|
198
202
|
draftBaskets: '/b2b/basket/drafts/',
|
|
199
203
|
divisions: '/b2b/my-divisions/',
|
|
200
204
|
myQuotations: '/b2b/my-quotations/',
|
|
201
|
-
loadBasket: (id) => `/b2b/basket/${id}/load
|
|
205
|
+
loadBasket: (id) => `/b2b/basket/${id}/load/`,
|
|
206
|
+
statusBasket: (cacheKey) => `/b2b/basket/?status_cache_key=${cacheKey}`,
|
|
207
|
+
basketExport: (queryString) => `/b2b/basket/?upload=true&${queryString}`,
|
|
208
|
+
basketImport: '/b2b/basket/bulk-import/'
|
|
202
209
|
};
|
|
203
210
|
|
|
204
211
|
export const widgets = {
|