@akinon/next 1.52.0-rc.0 → 1.53.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.
Files changed (64) hide show
  1. package/CHANGELOG.md +9 -485
  2. package/api/client.ts +17 -50
  3. package/assets/styles/index.scss +26 -50
  4. package/bin/pz-prebuild.js +0 -1
  5. package/bin/pz-predev.js +0 -1
  6. package/components/index.ts +0 -1
  7. package/components/input.tsx +7 -21
  8. package/components/link.tsx +13 -17
  9. package/components/price.tsx +4 -11
  10. package/components/pz-root.tsx +3 -15
  11. package/components/selected-payment-option-view.tsx +38 -26
  12. package/data/client/account.ts +9 -10
  13. package/data/client/address.ts +8 -32
  14. package/data/client/api.ts +1 -1
  15. package/data/client/b2b.ts +2 -35
  16. package/data/client/basket.ts +5 -6
  17. package/data/client/checkout.ts +4 -47
  18. package/data/client/user.ts +2 -3
  19. package/data/client/wishlist.ts +1 -1
  20. package/data/server/category.ts +19 -43
  21. package/data/server/flatpage.ts +7 -29
  22. package/data/server/form.ts +11 -29
  23. package/data/server/landingpage.ts +7 -26
  24. package/data/server/list.ts +6 -16
  25. package/data/server/menu.ts +2 -15
  26. package/data/server/product.ts +21 -46
  27. package/data/server/seo.ts +24 -17
  28. package/data/server/special-page.ts +5 -15
  29. package/data/server/widget.ts +7 -14
  30. package/data/urls.ts +1 -8
  31. package/hocs/server/with-segment-defaults.tsx +1 -4
  32. package/hooks/index.ts +1 -2
  33. package/hooks/use-pagination.ts +2 -2
  34. package/hooks/use-payment-options.ts +1 -2
  35. package/lib/cache.ts +6 -8
  36. package/middlewares/default.ts +8 -87
  37. package/middlewares/pretty-url.ts +1 -11
  38. package/middlewares/url-redirection.ts +0 -4
  39. package/package.json +3 -4
  40. package/plugins.d.ts +0 -1
  41. package/redux/middlewares/checkout.ts +11 -70
  42. package/redux/reducers/checkout.ts +5 -24
  43. package/redux/reducers/config.ts +0 -2
  44. package/types/commerce/account.ts +0 -1
  45. package/types/commerce/address.ts +1 -1
  46. package/types/commerce/b2b.ts +2 -12
  47. package/types/commerce/checkout.ts +0 -30
  48. package/types/commerce/misc.ts +0 -2
  49. package/types/commerce/order.ts +0 -5
  50. package/types/index.ts +2 -18
  51. package/utils/app-fetch.ts +8 -17
  52. package/utils/generate-commerce-search-params.ts +1 -3
  53. package/utils/index.ts +6 -27
  54. package/utils/server-translation.ts +1 -11
  55. package/utils/server-variables.ts +1 -2
  56. package/with-pz-config.js +2 -13
  57. package/assets/styles/index.css +0 -49
  58. package/assets/styles/index.css.map +0 -1
  59. package/bin/pz-generate-translations.js +0 -41
  60. package/components/file-input.tsx +0 -8
  61. package/hooks/use-message-listener.ts +0 -24
  62. package/lib/cache-handler.mjs +0 -33
  63. package/routes/pretty-url.tsx +0 -192
  64. package/utils/redirection-iframe.ts +0 -85
@@ -1,53 +1,29 @@
1
1
  .checkout-payment-iframe-wrapper {
2
- position: fixed;
3
- top: 0;
4
- left: 0;
5
- width: 100%;
6
- height: 100%;
7
- border: none;
8
- z-index: 1000;
9
- background-color: white;
2
+ position: fixed;
3
+ top: 0;
4
+ left: 0;
5
+ width: 100%;
6
+ height: 100%;
7
+ border: none;
8
+ z-index: 1000;
9
+ background-color: white;
10
10
 
11
- iframe {
12
- width: 100%;
13
- height: 100%;
14
- border: none;
15
- background-color: white;
16
- }
11
+ iframe {
12
+ width: 100%;
13
+ height: 100%;
14
+ border: none;
15
+ background-color: white;
16
+ }
17
17
 
18
- .close-button {
19
- position: fixed;
20
- top: 16px;
21
- right: 16px;
22
- width: 32px;
23
- height: 32px;
24
- display: flex;
25
- align-items: center;
26
- justify-content: center;
27
- z-index: 1001;
28
- }
29
- }
30
-
31
- .checkout-payment-redirection-iframe-wrapper {
32
- width: 100%;
33
- position: relative;
34
-
35
- iframe {
36
- width: 100%;
37
- height: 100%;
38
- border: none;
39
- background-color: white;
40
- }
41
-
42
- .close-button {
43
- position: absolute;
44
- top: 16px;
45
- right: 16px;
46
- width: 32px;
47
- height: 32px;
48
- display: flex;
49
- align-items: center;
50
- justify-content: center;
51
- z-index: 1001;
52
- }
53
- }
18
+ .close-button {
19
+ position: fixed;
20
+ top: 16px;
21
+ right: 16px;
22
+ width: 32px;
23
+ height: 32px;
24
+ display: flex;
25
+ align-items: center;
26
+ justify-content: center;
27
+ z-index: 1001;
28
+ }
29
+ }
@@ -4,4 +4,3 @@ const runScript = require('./run-script');
4
4
 
5
5
  runScript('pz-install-theme.js');
6
6
  runScript('pz-pre-check-dist.js');
7
- runScript('pz-generate-translations.js');
package/bin/pz-predev.js CHANGED
@@ -5,4 +5,3 @@ const runScript = require('./run-script');
5
5
  runScript('pz-install-extensions.js');
6
6
  runScript('pz-check-env.js');
7
7
  runScript('pz-install-theme.js');
8
- runScript('pz-generate-translations.js');
@@ -19,4 +19,3 @@ export * from './trans';
19
19
  export * from './link';
20
20
  export * from './pagination';
21
21
  export * from './live-commerce';
22
- export * from './file-input';
@@ -1,30 +1,17 @@
1
1
  import clsx from 'clsx';
2
- import { forwardRef, FocusEvent, useState, Ref } from 'react';
2
+ import { forwardRef, FocusEvent, useState } from 'react';
3
3
  import { Controller } from 'react-hook-form';
4
-
5
- // @ts-ignore
6
- import { PatternFormat, PatternFormatProps } from 'react-number-format';
4
+ import NumberFormat, { NumberFormatProps } from 'react-number-format';
7
5
  import { InputProps } from '../types';
8
6
  import { twMerge } from 'tailwind-merge';
9
7
 
10
- const PatternFormatWithRef = forwardRef(
11
- (props: PatternFormatProps, ref: Ref<HTMLInputElement>) => {
12
- return <PatternFormat {...props} getInputRef={ref} />;
13
- }
14
- );
15
- PatternFormatWithRef.displayName = 'PatternFormatWithRef';
16
-
17
8
  export const Input = forwardRef<
18
9
  HTMLInputElement,
19
10
  InputProps &
20
11
  Pick<
21
- PatternFormatProps,
22
- 'mask' | 'allowEmptyFormatting' | 'onValueChange'
23
- > & {
24
- format?: string;
25
- defaultValue?: string;
26
- type?: string;
27
- }
12
+ NumberFormatProps,
13
+ 'format' | 'mask' | 'allowEmptyFormatting' | 'onValueChange'
14
+ >
28
15
  >((props, ref) => {
29
16
  const [focused, setFocused] = useState(false);
30
17
  const [hasValue, setHasValue] = useState(false);
@@ -50,7 +37,6 @@ export const Input = forwardRef<
50
37
  ),
51
38
  props.className
52
39
  );
53
-
54
40
  const inputProps: any = {
55
41
  id,
56
42
  ref,
@@ -93,14 +79,14 @@ export const Input = forwardRef<
93
79
  <Controller
94
80
  name={props.name ?? ''}
95
81
  control={props.control}
82
+ defaultValue={false}
96
83
  render={({ field }) => (
97
- <PatternFormatWithRef
84
+ <NumberFormat
98
85
  format={format}
99
86
  mask={mask ?? ''}
100
87
  {...rest}
101
88
  {...field}
102
89
  {...inputProps}
103
- type={props.type as 'text' | 'password' | 'tel'}
104
90
  />
105
91
  )}
106
92
  />
@@ -10,32 +10,28 @@ type LinkProps = Omit<
10
10
  React.AnchorHTMLAttributes<HTMLAnchorElement>,
11
11
  keyof NextLinkProps
12
12
  > &
13
- NextLinkProps & {
14
- href: string;
15
- };
13
+ NextLinkProps;
16
14
 
17
15
  export const Link = ({ children, href, ...rest }: LinkProps) => {
18
16
  const { locale, defaultLocaleValue, localeUrlStrategy } = useLocalization();
19
17
  const formattedHref = useMemo(() => {
20
- if (!href) {
21
- return '#';
18
+ if (typeof href !== 'string' || href.startsWith('http')) {
19
+ return href;
22
20
  }
23
21
 
24
- if (typeof href === 'string' && !href.startsWith('http')) {
25
- const pathnameWithoutLocale = href.replace(urlLocaleMatcherRegex, '');
26
- const hrefWithLocale = `/${locale}${pathnameWithoutLocale}`;
22
+ const pathnameWithoutLocale = href.replace(urlLocaleMatcherRegex, '');
23
+ const hrefWithLocale = `/${locale}${pathnameWithoutLocale}`;
27
24
 
28
- if (localeUrlStrategy === LocaleUrlStrategy.ShowAllLocales) {
29
- return hrefWithLocale;
30
- } else if (
31
- localeUrlStrategy === LocaleUrlStrategy.HideDefaultLocale &&
32
- locale !== defaultLocaleValue
33
- ) {
34
- return hrefWithLocale;
35
- }
25
+ if (localeUrlStrategy === LocaleUrlStrategy.ShowAllLocales) {
26
+ return hrefWithLocale;
27
+ } else if (
28
+ localeUrlStrategy === LocaleUrlStrategy.HideDefaultLocale &&
29
+ locale !== defaultLocaleValue
30
+ ) {
31
+ return hrefWithLocale;
36
32
  }
37
33
 
38
- return href;
34
+ return href || '#';
39
35
  }, [href, defaultLocaleValue, locale, localeUrlStrategy]);
40
36
 
41
37
  return (
@@ -1,14 +1,11 @@
1
1
  import { useMemo } from 'react';
2
-
3
- // @ts-ignore
4
- import { NumericFormat, NumericFormatProps } from 'react-number-format';
2
+ import NumberFormat, { NumberFormatProps } from 'react-number-format';
5
3
  import { getCurrency } from '@akinon/next/utils';
6
4
 
7
5
  import { useLocalization } from '@akinon/next/hooks';
8
6
  import { PriceProps } from '../types';
9
- import Settings from 'settings';
10
7
 
11
- export const Price = (props: NumericFormatProps & PriceProps) => {
8
+ export const Price = (props: NumberFormatProps & PriceProps) => {
12
9
  const {
13
10
  value,
14
11
  currencyCode,
@@ -30,10 +27,6 @@ export const Price = (props: NumericFormatProps & PriceProps) => {
30
27
  // TODO: This is very bad practice. It broke decimalScale.
31
28
  const _value = value?.toString().replace('.', ',');
32
29
 
33
- const currentCurrencyDecimalScale = Settings.localization.currencies.find(
34
- (currency) => currency.code === currencyCode_
35
- ).decimalScale;
36
-
37
30
  const currency = useMemo(
38
31
  () =>
39
32
  getCurrency({
@@ -46,14 +39,14 @@ export const Price = (props: NumericFormatProps & PriceProps) => {
46
39
  );
47
40
 
48
41
  return (
49
- <NumericFormat
42
+ <NumberFormat
50
43
  value={useNegative ? `-${useNegativeSpace}${_value}` : _value}
51
44
  {...{
52
45
  [useCurrencyAfterPrice ? 'suffix' : 'prefix']: currency
53
46
  }}
54
47
  displayType={displayType}
55
48
  thousandSeparator={thousandSeparator}
56
- decimalScale={currentCurrencyDecimalScale ?? decimalScale}
49
+ decimalScale={decimalScale}
57
50
  decimalSeparator={decimalSeparator}
58
51
  fixedDecimalScale={fixedDecimalScale}
59
52
  {...rest}
@@ -3,29 +3,17 @@ import ClientRoot from './client-root';
3
3
  import { cookies } from 'next/headers';
4
4
  import PzProviders from './pz-providers';
5
5
  import { WebVitals } from './web-vitals';
6
- import settings from 'settings';
7
6
 
8
- export default async function PzRoot({
7
+ export default function PzRoot({
9
8
  translations,
10
- children,
11
- locale
9
+ children
12
10
  }: {
13
- translations?: any;
11
+ translations: any;
14
12
  children: React.ReactNode;
15
- locale?: string;
16
13
  }) {
17
14
  const nextCookies = cookies();
18
15
  const sessionid = nextCookies.get('osessionid')?.value;
19
16
 
20
- if (!translations) {
21
- const { getTranslations } =
22
- settings.useOptimizedTranslations && locale
23
- ? require('translations')
24
- : require('../utils/server-translation');
25
-
26
- translations = await getTranslations(locale);
27
- }
28
-
29
17
  return (
30
18
  <PzProviders translations={translations}>
31
19
  <WebVitals />
@@ -6,21 +6,6 @@ import dynamic from 'next/dynamic';
6
6
  import { PaymentOptionViews } from 'views/checkout/steps/payment';
7
7
  import { useMemo } from 'react';
8
8
 
9
- const fallbackView = () => <div />;
10
-
11
- const paymentTypeToView = {
12
- bkm_express: 'bkm',
13
- credit_card: 'credit-card',
14
- credit_payment: 'credit-payment',
15
- funds_transfer: 'funds-transfer',
16
- gpay: 'gpay',
17
- loyalty_money: 'loyalty',
18
- masterpass: 'credit-card',
19
- pay_on_delivery: 'pay-on-delivery',
20
- redirection: 'redirection'
21
- // Add other mappings as needed
22
- };
23
-
24
9
  export default function SelectedPaymentOptionView() {
25
10
  const { payment_option } = useAppSelector(
26
11
  (state: RootState) => state.checkout.preOrder
@@ -29,7 +14,7 @@ export default function SelectedPaymentOptionView() {
29
14
  const Component = useMemo(
30
15
  () =>
31
16
  dynamic(
32
- async () => {
17
+ () => {
33
18
  const customOption = PaymentOptionViews.find(
34
19
  (opt) => opt.slug === payment_option.slug
35
20
  );
@@ -44,19 +29,46 @@ export default function SelectedPaymentOptionView() {
44
29
  });
45
30
  }
46
31
 
47
- const view = paymentTypeToView[payment_option.payment_type];
48
- if (view) {
49
- try {
50
- const mod = await import(
51
- `views/checkout/steps/payment/options/${view}`
32
+ let promise: any;
33
+
34
+ try {
35
+ if (payment_option.payment_type === 'credit_card') {
36
+ promise = import(
37
+ `views/checkout/steps/payment/options/credit-card`
38
+ );
39
+ } else if (payment_option.payment_type === 'funds_transfer') {
40
+ promise = import(
41
+ `views/checkout/steps/payment/options/funds-transfer`
42
+ );
43
+ } else if (payment_option.payment_type === 'redirection') {
44
+ promise = import(
45
+ `views/checkout/steps/payment/options/redirection`
46
+ );
47
+ } else if (payment_option.payment_type === 'pay_on_delivery') {
48
+ promise = import(
49
+ `views/checkout/steps/payment/options/pay-on-delivery`
50
+ );
51
+ } else if (payment_option.payment_type === 'loyalty_money') {
52
+ promise = import(`views/checkout/steps/payment/options/loyalty`);
53
+ } else if (payment_option.payment_type === 'masterpass') {
54
+ promise = import(
55
+ `views/checkout/steps/payment/options/credit-card`
52
56
  );
53
- return mod.default || fallbackView;
54
- } catch (error) {
55
- return fallbackView;
56
57
  }
57
- }
58
+ // else if (payment_option.payment_type === 'credit_payment') {
59
+ // promise = import(`views/checkout/steps/payment/options/credit-payment`);
60
+ // }
61
+ // else if (payment_option.payment_type === 'gpay') {
62
+ // promise = import(`views/checkout/steps/payment/options/gpay`);
63
+ // }
64
+ // else if (payment_option.payment_type === 'bkm_express') {
65
+ // promise = import(`views/checkout/steps/payment/options/bkm`);
66
+ // }
67
+ } catch (error) {}
58
68
 
59
- return fallbackView;
69
+ return promise
70
+ ? promise.then((mod) => mod.default).catch(() => () => null)
71
+ : new Promise<any>((resolve) => resolve(() => null));
60
72
  },
61
73
  { ssr: false }
62
74
  ),
@@ -123,16 +123,15 @@ const accountApi = api.injectEndpoints({
123
123
  query: ({ page, status, limit }) =>
124
124
  buildClientRequestUrl(account.getQuotations(page, status, limit))
125
125
  }),
126
- sendContact: builder.mutation<void, FormData>({
127
- query: (body) => {
128
- return {
129
- url: buildClientRequestUrl(account.sendContact, {
130
- useFormData: true
131
- }),
132
- method: 'POST',
133
- body
134
- };
135
- }
126
+ sendContact: builder.mutation<void, ContactFormType>({
127
+ query: (body) => ({
128
+ url: buildClientRequestUrl(account.sendContact, {
129
+ contentType: 'application/json',
130
+ responseType: 'text'
131
+ }),
132
+ method: 'POST',
133
+ body
134
+ })
136
135
  }),
137
136
  cancelOrder: builder.mutation<void, AccountOrderCancellation>({
138
137
  query: ({ id, ...body }) => ({
@@ -39,10 +39,7 @@ const addressApi = api.injectEndpoints({
39
39
  query: (city) =>
40
40
  buildClientRequestUrl(address.getRetailStoreTownships(city))
41
41
  }),
42
- addAddress: builder.mutation<
43
- Address,
44
- Partial<Address> & { invalidateTag?: 'Addresses' | 'Checkout' }
45
- >({
42
+ addAddress: builder.mutation<Address, Partial<Address>>({
46
43
  query: (body) => ({
47
44
  url: buildClientRequestUrl(address.base, {
48
45
  contentType: 'application/json'
@@ -53,16 +50,9 @@ const addressApi = api.injectEndpoints({
53
50
  type: body.is_corporate === 'true' ? 'corporate' : 'personal'
54
51
  }
55
52
  }),
56
- invalidatesTags: (_, error, arg) => {
57
- if (error) return [];
58
- if (arg.invalidateTag) return [arg.invalidateTag];
59
- return ['Addresses', 'Checkout'];
60
- }
53
+ invalidatesTags: (_, error) => (error ? [] : ['Addresses', 'Checkout'])
61
54
  }),
62
- editAddress: builder.mutation<
63
- Address,
64
- Partial<Address> & { invalidateTag?: 'Addresses' | 'Checkout' }
65
- >({
55
+ editAddress: builder.mutation<Address, Partial<Address>>({
66
56
  query: ({ pk, ...body }) => ({
67
57
  url: buildClientRequestUrl(address.editAddress(pk), {
68
58
  contentType: 'application/json'
@@ -74,28 +64,14 @@ const addressApi = api.injectEndpoints({
74
64
  type: body.is_corporate === 'true' ? 'corporate' : 'personal'
75
65
  }
76
66
  }),
77
- invalidatesTags: (_, error, arg) => {
78
- if (error) return [];
79
- if (arg.invalidateTag) return [arg.invalidateTag];
80
- return ['Addresses', 'Checkout'];
81
- }
67
+ invalidatesTags: (_, error) => (error ? [] : ['Addresses', 'Checkout']) // TODO: Invalidate one of these tags when necessary (e.g. Address page invalidates Addresses tag, Checkout page invalidates Checkout tag)
82
68
  }),
83
- removeAddress: builder.mutation<
84
- void,
85
- number | { id: number; invalidateTag: 'Addresses' | 'Checkout' }
86
- >({
87
- query: (arg) => ({
88
- url: buildClientRequestUrl(
89
- address.removeAddress(typeof arg === 'number' ? arg : arg.id)
90
- ),
69
+ removeAddress: builder.mutation<void, number>({
70
+ query: (id) => ({
71
+ url: buildClientRequestUrl(address.removeAddress(id)),
91
72
  method: 'DELETE'
92
73
  }),
93
- invalidatesTags: (_, error, arg) => {
94
- if (error) return [];
95
- if (typeof arg === 'object' && arg.invalidateTag)
96
- return [arg.invalidateTag];
97
- return ['Addresses', 'Checkout'];
98
- }
74
+ invalidatesTags: (_, error) => (error ? [] : ['Addresses', 'Checkout']) // TODO: Invalidate one of these tags when necessary (e.g. Address page invalidates Addresses tag, Checkout page invalidates Checkout tag)
99
75
  }),
100
76
  setDefaultAddress: builder.mutation<Address, Partial<Address>>({
101
77
  query: ({ pk, primary }) => ({
@@ -67,7 +67,7 @@ export const api = createApi({
67
67
  baseQuery: customBaseQuery,
68
68
  tagTypes: [
69
69
  'Basket',
70
- 'MultiBasket',
70
+ 'AllBaskets',
71
71
  'BasketB2b',
72
72
  'DraftsB2b',
73
73
  'Product',
@@ -12,9 +12,7 @@ import {
12
12
  SaveBasketParams,
13
13
  UpdateProductParams,
14
14
  DeleteProductParams,
15
- CreateQuotationParams,
16
- BasketStatusResponse,
17
- ExportBasketResponse
15
+ CreateQuotationParams
18
16
  } from '../../types';
19
17
 
20
18
  const b2bApi = api.injectEndpoints({
@@ -91,34 +89,6 @@ const b2bApi = api.injectEndpoints({
91
89
  }),
92
90
  invalidatesTags: ['BasketB2b', 'DraftsB2b']
93
91
  }),
94
- exportBasket: build.mutation<ExportBasketResponse, string>({
95
- query: (queryString) => {
96
- return {
97
- url: buildClientRequestUrl(b2b.basketExport(queryString)),
98
- method: 'GET'
99
- };
100
- }
101
- }),
102
- getBasketStatus: build.mutation<BasketStatusResponse, string>({
103
- query: (cacheKey) => {
104
- return {
105
- url: buildClientRequestUrl(b2b.statusBasket(cacheKey)),
106
- method: 'GET'
107
- };
108
- }
109
- }),
110
- uploadFile: build.mutation<void, FormData>({
111
- query: (body) => {
112
- return {
113
- url: buildClientRequestUrl(b2b.basketImport, {
114
- useFormData: true
115
- }),
116
- method: 'POST',
117
- body
118
- };
119
- },
120
- invalidatesTags: ['BasketB2b']
121
- })
122
92
  }),
123
93
  overrideExisting: true
124
94
  });
@@ -132,8 +102,5 @@ export const {
132
102
  useLoadBasketMutation,
133
103
  useUpdateProductMutation,
134
104
  useDeleteProductMutation,
135
- useCreateQuotationMutation,
136
- useGetBasketStatusMutation,
137
- useExportBasketMutation,
138
- useUploadFileMutation
105
+ useCreateQuotationMutation
139
106
  } = b2bApi;
@@ -28,7 +28,7 @@ export const basketApi = api.injectEndpoints({
28
28
  query: ({ namespace }) =>
29
29
  buildClientRequestUrl(basket.getBasketDetail(namespace)),
30
30
  transformResponse: (response: { basket: Basket }) => response.basket,
31
- providesTags: ['MultiBasket']
31
+ providesTags: ['AllBaskets']
32
32
  }),
33
33
  getAllBaskets: build.query<Basket[], void>({
34
34
  query: () =>
@@ -36,7 +36,7 @@ export const basketApi = api.injectEndpoints({
36
36
  contentType: 'application/json'
37
37
  }),
38
38
  transformResponse: (response: { baskets: Basket[] }) => response.baskets,
39
- providesTags: ['MultiBasket']
39
+ providesTags: ['AllBaskets']
40
40
  }),
41
41
  removeBasket: build.mutation<Basket, { pk: number }>({
42
42
  query: ({ pk }) => ({
@@ -46,7 +46,7 @@ export const basketApi = api.injectEndpoints({
46
46
  method: 'DELETE',
47
47
  body: { pk }
48
48
  }),
49
- invalidatesTags: ['MultiBasket', 'Basket']
49
+ invalidatesTags: ['AllBaskets', 'Basket']
50
50
  }),
51
51
  selectMainBasket: build.mutation<Basket, { pk: number }>({
52
52
  query: ({ pk }) => ({
@@ -57,7 +57,7 @@ export const basketApi = api.injectEndpoints({
57
57
  body: { pk }
58
58
  }),
59
59
  transformResponse: (response: { baskets: Basket }) => response.baskets,
60
- invalidatesTags: ['MultiBasket', 'Basket']
60
+ invalidatesTags: ['AllBaskets', 'Basket']
61
61
  }),
62
62
  updateQuantity: build.mutation<
63
63
  UpdateQuantityResponse,
@@ -69,8 +69,7 @@ export const basketApi = api.injectEndpoints({
69
69
  }),
70
70
  method: 'PUT',
71
71
  body
72
- }),
73
- invalidatesTags: ['MultiBasket', 'Basket']
72
+ })
74
73
  }),
75
74
  clearBasket: build.mutation<Basket, void>({
76
75
  query: (body) => ({
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  setBankAccounts,
3
- setCardType,
4
3
  setInstallmentOptions,
5
4
  setPaymentStepBusy,
6
5
  setSelectedBankAccountPk,
7
6
  setSelectedCreditPaymentPk,
8
- setShippingStepBusy
7
+ setShippingStepBusy,
8
+ setCardType
9
9
  } from '../../redux/reducers/checkout';
10
10
  import {
11
11
  CheckoutContext,
@@ -20,7 +20,6 @@ import { AppDispatch, AppStore, store } from 'redux/store';
20
20
  import settings from 'settings';
21
21
  import { showMobile3dIframe } from '../../utils/mobile-3d-iframe';
22
22
  import {
23
- setCvcRequired,
24
23
  setError,
25
24
  setOtpModalVisible
26
25
  } from '@akinon/pz-masterpass/src/redux/reducer';
@@ -114,8 +113,7 @@ const completeMasterpassPayment = async (
114
113
  ? await buildDirectPurchaseForm(commonFormValues, params)
115
114
  : await buildPurchaseForm({
116
115
  ...commonFormValues,
117
- selectedCard,
118
- cardCvc: params?.card_cvv
116
+ selectedCard
119
117
  });
120
118
 
121
119
  window.MFS?.[
@@ -153,10 +151,6 @@ const completeMasterpassPayment = async (
153
151
  return;
154
152
  }
155
153
 
156
- if (['5013', '5182'].includes(response.responseCode)) {
157
- dispatch(setCvcRequired(true));
158
- }
159
-
160
154
  if (
161
155
  response.token &&
162
156
  (response.responseCode == '0000' || response.responseCode == '')
@@ -379,22 +373,6 @@ export const checkoutApi = api.injectEndpoints({
379
373
  dispatch(setShippingStepBusy(false));
380
374
  }
381
375
  }),
382
- setDataSourceShippingOptions: build.mutation<CheckoutResponse, number[]>({
383
- query: (pks) => ({
384
- url: buildClientRequestUrl(checkout.setDataSourceShippingOption, {
385
- useFormData: true
386
- }),
387
- method: 'POST',
388
- body: {
389
- data_source_shipping_options: JSON.stringify(pks)
390
- }
391
- }),
392
- async onQueryStarted(arg, { dispatch, queryFulfilled }) {
393
- dispatch(setShippingStepBusy(true));
394
- await queryFulfilled;
395
- dispatch(setShippingStepBusy(false));
396
- }
397
- }),
398
376
  setRetailStore: build.mutation<CheckoutResponse, SetRetailStoreParams>({
399
377
  query: ({ retailStorePk, billingAddressPk }) => ({
400
378
  url: buildClientRequestUrl(
@@ -695,25 +673,6 @@ export const checkoutApi = api.injectEndpoints({
695
673
  body
696
674
  };
697
675
  }
698
- }),
699
- setAttributeBasedShippingOptions: build.mutation<
700
- CheckoutResponse,
701
- Record<string, number>
702
- >({
703
- query: (options) => ({
704
- url: buildClientRequestUrl(checkout.setAttributeBasedShippingOption, {
705
- useFormData: true
706
- }),
707
- method: 'POST',
708
- body: {
709
- attribute_based_shipping_options: JSON.stringify(options)
710
- }
711
- }),
712
- async onQueryStarted(arg, { dispatch, queryFulfilled }) {
713
- dispatch(setShippingStepBusy(true));
714
- await queryFulfilled;
715
- dispatch(setShippingStepBusy(false));
716
- }
717
676
  })
718
677
  }),
719
678
  overrideExisting: false
@@ -732,7 +691,6 @@ export const {
732
691
  useSetDeliveryOptionMutation,
733
692
  useSetAddressesMutation,
734
693
  useSetShippingOptionMutation,
735
- useSetDataSourceShippingOptionsMutation,
736
694
  useSetPaymentOptionMutation,
737
695
  useSetBinNumberMutation,
738
696
  useSetInstallmentOptionMutation,
@@ -750,6 +708,5 @@ export const {
750
708
  useGetCheckoutLoyaltyBalanceQuery,
751
709
  usePayWithLoyaltyBalanceMutation,
752
710
  useSetOrderNoteMutation,
753
- useSetDeliveryBagsMutation,
754
- useSetAttributeBasedShippingOptionsMutation
711
+ useSetDeliveryBagsMutation
755
712
  } = checkoutApi;