@q2devel/q2-core 1.0.100 → 1.0.102

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.
@@ -1 +1 @@
1
- {"version":3,"file":"getTerms.d.ts","sourceRoot":"","sources":["../../api/getTerms.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAIpC,KAAK,aAAa,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAA;IACzD,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,QAAQ,GACjB,KAAK,WAAW,EAChB,8DAaG,aAAa,KACjB,OAAO,CAAC,IAAI,EAAE,CAoGhB,CAAA"}
1
+ {"version":3,"file":"getTerms.d.ts","sourceRoot":"","sources":["../../api/getTerms.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AAIpC,KAAK,aAAa,GAAG;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAA;IACzD,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,QAAQ,GACjB,KAAK,WAAW,EAChB,8DAaG,aAAa,KACjB,OAAO,CAAC,IAAI,EAAE,CAiHhB,CAAA"}
@@ -1,4 +1,3 @@
1
- // api/getTerms.ts
2
1
  import { DrupalJsonApiParams } from 'drupal-jsonapi-params';
3
2
  import mapIncludedResources from '../utils/mapIncludedResources';
4
3
  export const getTerms = async (ctx, { categoryId, include = [
@@ -20,47 +19,59 @@ export const getTerms = async (ctx, { categoryId, include = [
20
19
  const baseUrl = ctx.locale === ctx.defaultLocale
21
20
  ? `/jsonapi/taxonomy_term/produktykategorie`
22
21
  : `/${ctx.locale}/jsonapi/taxonomy_term/produktykategorie`;
23
- const params = new DrupalJsonApiParams()
24
- .addInclude(include)
25
- .addFilter('langcode', ctx.locale)
26
- .addPageLimit(pageLimit);
27
- // Custom sort
28
- if (sort && sort.length > 0) {
29
- sort.forEach(({ field, direction = 'DESC' }) => {
30
- params.addSort(field, direction);
31
- });
32
- }
33
- else if (sortField) {
34
- // Deprecated: support old sortField for backward compatibility
35
- params.addSort(sortField);
36
- }
37
- // Custom filters
38
- if (filter && filter.length > 0) {
39
- filter.forEach(({ field, value }) => {
40
- params.addFilter(field, String(value));
41
- });
42
- }
43
- if (categoryId) {
44
- params.addFilter('drupal_internal__tid', categoryId, 'IN');
45
- }
22
+ // Build params for a given offset. Each page builds fresh params so we
23
+ // never carry over Drupal's `next` link cursor (which would explode the
24
+ // URL with all already-seen drupal_internal__tid values and cause
25
+ // 414/431 once the term count grows).
26
+ const buildParams = (offset) => {
27
+ const params = new DrupalJsonApiParams()
28
+ .addInclude(include)
29
+ .addFilter('langcode', ctx.locale)
30
+ .addPageLimit(pageLimit)
31
+ .addPageOffset(offset);
32
+ if (sort && sort.length > 0) {
33
+ sort.forEach(({ field, direction = 'DESC' }) => {
34
+ params.addSort(field, direction);
35
+ });
36
+ }
37
+ else if (sortField) {
38
+ // Deprecated: support old sortField for backward compatibility
39
+ params.addSort(sortField);
40
+ }
41
+ if (filter && filter.length > 0) {
42
+ filter.forEach(({ field, value }) => {
43
+ params.addFilter(field, String(value));
44
+ });
45
+ }
46
+ if (categoryId) {
47
+ params.addFilter('drupal_internal__tid', categoryId, 'IN');
48
+ }
49
+ return params;
50
+ };
46
51
  // Pole pro akumulaci všech stránek dat
47
52
  const allData = [];
48
53
  const allIncluded = [];
49
- let nextUrl = `${baseUrl}?${params.getQueryString()}`;
54
+ let offset = 0;
50
55
  let pageCounter = 0;
51
- while (nextUrl && pageCounter < 50) {
52
- const response = await ctx.axios.get(nextUrl);
56
+ while (pageCounter < 50) {
57
+ const params = buildParams(offset);
58
+ const url = `${baseUrl}?${params.getQueryString()}`;
59
+ const response = await ctx.axios.get(url);
53
60
  const data = response.data;
54
61
  if (Array.isArray(data.data)) {
55
62
  allData.push(...data.data);
56
63
  }
57
- else {
64
+ else if (data.data) {
58
65
  allData.push(data.data);
59
66
  }
60
67
  if (Array.isArray(data.included)) {
61
68
  allIncluded.push(...data.included);
62
69
  }
63
- nextUrl = data.links?.next?.href || null;
70
+ // Drupal still tells us whether more pages exist via links.next
71
+ // we just don't follow its href, we compute our own offset URL.
72
+ if (!data.links?.next?.href)
73
+ break;
74
+ offset += pageLimit;
64
75
  pageCounter++;
65
76
  }
66
77
  const combinedResponse = {
@@ -4,10 +4,17 @@ import { Product } from '../../types/products/Product';
4
4
  import { AxiosError } from 'axios';
5
5
  import { ReactNode } from 'react';
6
6
  import { CoreContext } from '../../context';
7
+ type PriceAmount = {
8
+ number: string;
9
+ currency_code: string;
10
+ formatted: string;
11
+ };
7
12
  type BasketContextType = {
8
13
  basketProducts: BasketProduct[];
9
14
  subtotal: number;
10
15
  totalItems: number;
16
+ total: PriceAmount | null;
17
+ priceExcludeVat: PriceAmount | null;
11
18
  addToBasket: (product: Product, quantity?: number) => Promise<void>;
12
19
  addMultipleToBasket: (products: Product[], quantity?: number) => Promise<void>;
13
20
  removeFromBasket: (productId: string) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"BasketContext.d.ts","sourceRoot":"","sources":["../../../context/cart/BasketContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAahE,OAAO,EACH,eAAe,EACf,mBAAmB,EACtB,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAClC,OAAO,EAEH,SAAS,EAKZ,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAM3C,KAAK,iBAAiB,GAAG;IACrB,cAAc,EAAE,aAAa,EAAE,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnE,mBAAmB,EAAE,CACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,CAAC,EAAE,MAAM,KAChB,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtE,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,SAAS,EAAE,OAAO,CAAA;IAClB,0BAA0B,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;IACzD,sBAAsB,EAAE,CACpB,OAAO,EAAE,eAAe,GAAG,mBAAmB,EAC9C,SAAS,CAAC,EAAE,iBAAiB,KAC5B,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,gBAAgB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACrC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,cAAc,EAAE,OAAO,CAAA;IACvB,WAAW,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAClC,CAAA;AAED,KAAK,iBAAiB,GAAG;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;CAC7C,CAAA;AAID,KAAK,mBAAmB,GAAG;IACvB,QAAQ,EAAE,SAAS,CAAA;IACnB,GAAG,EAAE,WAAW,CAAA;IAChB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,wCAI5B,mBAAmB,4CAsdrB,CAAA;AAED,eAAO,MAAM,SAAS,QAAO,iBAM5B,CAAA"}
1
+ {"version":3,"file":"BasketContext.d.ts","sourceRoot":"","sources":["../../../context/cart/BasketContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAA;AAahE,OAAO,EACH,eAAe,EACf,mBAAmB,EACtB,MAAM,0CAA0C,CAAA;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAEtD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAClC,OAAO,EAEH,SAAS,EAKZ,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAM3C,KAAK,WAAW,GAAG;IACf,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,KAAK,iBAAiB,GAAG;IACrB,cAAc,EAAE,aAAa,EAAE,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,eAAe,EAAE,WAAW,GAAG,IAAI,CAAA;IACnC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnE,mBAAmB,EAAE,CACjB,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,CAAC,EAAE,MAAM,KAChB,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtE,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,WAAW,EAAE,MAAM,IAAI,CAAA;IACvB,SAAS,EAAE,OAAO,CAAA;IAClB,0BAA0B,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAA;IACzD,sBAAsB,EAAE,CACpB,OAAO,EAAE,eAAe,GAAG,mBAAmB,EAC9C,SAAS,CAAC,EAAE,iBAAiB,KAC5B,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,gBAAgB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IACrC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,cAAc,EAAE,OAAO,CAAA;IACvB,WAAW,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAClC,CAAA;AAED,KAAK,iBAAiB,GAAG;IACrB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,CAAA;CAC7C,CAAA;AAID,KAAK,mBAAmB,GAAG;IACvB,QAAQ,EAAE,SAAS,CAAA;IACnB,GAAG,EAAE,WAAW,CAAA;IAChB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,wCAI5B,mBAAmB,4CAwdrB,CAAA;AAED,eAAO,MAAM,SAAS,QAAO,iBAM5B,CAAA"}
@@ -360,6 +360,8 @@ export const BasketProvider = ({ children, ctx, onCartTokenCreated, }) => {
360
360
  basketProducts,
361
361
  subtotal: calculateSubtotal(),
362
362
  totalItems: calculateTotalItems(),
363
+ total: cartData?.data?.total ?? null,
364
+ priceExcludeVat: cartData?.data?.priceExcludeVat ?? null,
363
365
  addToBasket,
364
366
  addMultipleToBasket,
365
367
  removeFromBasket,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@q2devel/q2-core",
3
- "version": "1.0.100",
3
+ "version": "1.0.102",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "exports": {