From c08240df3f2fe0c4c5c35af471f68a2187f8e582 Mon Sep 17 00:00:00 2001 From: Kasper Fabricius Kristensen <45367945+kasperkristensen@users.noreply.github.com> Date: Wed, 15 Nov 2023 18:18:26 +0100 Subject: [PATCH 1/2] fix(admin-ui): Preserve decimal numbers when locale uses commas (#5641) **What** - Ensure that we format numbers with `.` as the decimal separator, even when the users locale uses `,`. This changes still allows users to use comma as the decimal separator, but the transformation we use before writing to state converts the number to use a dot instead. --- .changeset/seven-forks-knock.md | 5 +++++ .../price-list-product-prices-form.tsx | 1 + 2 files changed, 6 insertions(+) create mode 100644 .changeset/seven-forks-knock.md diff --git a/.changeset/seven-forks-knock.md b/.changeset/seven-forks-knock.md new file mode 100644 index 0000000000000..a2fb094266644 --- /dev/null +++ b/.changeset/seven-forks-knock.md @@ -0,0 +1,5 @@ +--- +"@medusajs/admin-ui": patch +--- + +fix(admin-ui): Resolves an issue where decimal numbers would be stripped when the locale uses commas as the decimal separator diff --git a/packages/admin-ui/ui/src/domain/pricing/forms/price-list-product-prices-form/price-list-product-prices-form.tsx b/packages/admin-ui/ui/src/domain/pricing/forms/price-list-product-prices-form/price-list-product-prices-form.tsx index 845b3b2359105..b9c735ee83a22 100644 --- a/packages/admin-ui/ui/src/domain/pricing/forms/price-list-product-prices-form/price-list-product-prices-form.tsx +++ b/packages/admin-ui/ui/src/domain/pricing/forms/price-list-product-prices-form/price-list-product-prices-form.tsx @@ -1830,6 +1830,7 @@ const Cell = React.forwardRef( ? formatValue({ value: strippedValue.replace(/,/g, "."), // If the current locale uses commas as decimal separators, then we need to replace them with dots. decimalScale: decimalScale ?? 0, + decimalSeparator: ".", disableGroupSeparators: true, }) : "" From 2947f57db1cabb343644bde379fa9ec54e9d7750 Mon Sep 17 00:00:00 2001 From: Kasper Fabricius Kristensen <45367945+kasperkristensen@users.noreply.github.com> Date: Wed, 15 Nov 2023 19:41:10 +0100 Subject: [PATCH 2/2] fix(medusa): Update `wrapHandler` so it also passes errors in non-async route handlers to the errorHandler middleware (#5597) * fix: Align @types/react versions across UI packages * update codeowners * fix: Update wrapHandler so it also catches errors for non-async route handlers * rm chaining * align wrapHandler in utils and add deprecation note --------- Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com> --- .changeset/eleven-books-fail.md | 5 +++++ .../medusa/src/api/middlewares/await-middleware.ts | 11 +++++++++-- packages/medusa/src/loaders/helpers/routing/index.ts | 3 +-- packages/utils/src/common/wrap-handler.ts | 8 ++++++-- 4 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 .changeset/eleven-books-fail.md diff --git a/.changeset/eleven-books-fail.md b/.changeset/eleven-books-fail.md new file mode 100644 index 0000000000000..07846f272f6cb --- /dev/null +++ b/.changeset/eleven-books-fail.md @@ -0,0 +1,5 @@ +--- +"@medusajs/medusa": patch +--- + +fix(medusa): Update wrapHandler so that it is also able to catch errors for sync handlers diff --git a/packages/medusa/src/api/middlewares/await-middleware.ts b/packages/medusa/src/api/middlewares/await-middleware.ts index 5e9f72821975f..fec27d568c17c 100644 --- a/packages/medusa/src/api/middlewares/await-middleware.ts +++ b/packages/medusa/src/api/middlewares/await-middleware.ts @@ -2,8 +2,11 @@ import { NextFunction, Request, RequestHandler, Response } from "express" type handler = (req: Request, res: Response) => Promise +/** + * @deprecated use `import { wrapHandler } from "@medusajs/utils"` + */ export default (fn: handler): RequestHandler => { - return (req: Request, res: Response, next: NextFunction) => { + return async (req: Request, res: Response, next: NextFunction) => { if (req?.errors?.length) { return res.status(400).json({ errors: req.errors, @@ -12,7 +15,11 @@ export default (fn: handler): RequestHandler => { }) } - return fn(req, res).catch(next) + try { + return await fn(req, res) + } catch (err) { + next(err) + } } } diff --git a/packages/medusa/src/loaders/helpers/routing/index.ts b/packages/medusa/src/loaders/helpers/routing/index.ts index 3dd53092d038c..0fea3ad87aec6 100644 --- a/packages/medusa/src/loaders/helpers/routing/index.ts +++ b/packages/medusa/src/loaders/helpers/routing/index.ts @@ -1,4 +1,4 @@ -import { promiseAll } from "@medusajs/utils" +import { promiseAll, wrapHandler } from "@medusajs/utils" import cors from "cors" import { Router, json, text, urlencoded, type Express } from "express" import { readdir } from "fs/promises" @@ -9,7 +9,6 @@ import { authenticateCustomer, errorHandler, requireCustomerAuthentication, - wrapHandler, } from "../../../api/middlewares" import { ConfigModule } from "../../../types/global" import logger from "../../logger" diff --git a/packages/utils/src/common/wrap-handler.ts b/packages/utils/src/common/wrap-handler.ts index af30e7861092c..007f02af93723 100644 --- a/packages/utils/src/common/wrap-handler.ts +++ b/packages/utils/src/common/wrap-handler.ts @@ -3,7 +3,7 @@ import { NextFunction, Request, RequestHandler, Response } from "express" type handler = (req: Request, res: Response) => Promise export const wrapHandler = (fn: handler): RequestHandler => { - return (req: Request, res: Response, next: NextFunction) => { + return async (req: Request, res: Response, next: NextFunction) => { const req_ = req as Request & { errors?: Error[] } if (req_?.errors?.length) { return res.status(400).json({ @@ -13,7 +13,11 @@ export const wrapHandler = (fn: handler): RequestHandler => { }) } - return fn(req, res).catch(next) + try { + return await fn(req, res) + } catch (err) { + next(err) + } } }