Skip to content

Commit 4bbf0d2

Browse files
authored
fix(dashboard): use order version 1 for the initial node of activity timeline (#13997)
* Add preprocess to version param to validate as number * Add changeset * Use the first version of the order as the starting node of activity to show correct total * Add changeset * Fetch first order version only if it's not the current version * Remove conditionally rendered hook, use enable config
1 parent efed4d7 commit 4bbf0d2

File tree

4 files changed

+38
-10
lines changed

4 files changed

+38
-10
lines changed

.changeset/social-donuts-pay.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@medusajs/dashboard": patch
3+
---
4+
5+
fix(dashboard): use order version 1 for the initial node of activity timeline

.changeset/tiny-bottles-turn.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@medusajs/medusa": patch
3+
---
4+
5+
fix(medusa): preprocess `version` as number in AdminGetOrdersOrderParams validator

packages/admin/dashboard/src/routes/orders/order-detail/components/order-activity-section/order-timeline.tsx

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import { By } from "../../../../../components/common/user-link"
1818
import {
1919
useCancelOrderTransfer,
2020
useCustomer,
21+
useOrder,
2122
useOrderChanges,
2223
useOrderLineItems,
2324
} from "../../../../../hooks/api"
@@ -123,6 +124,11 @@ type Activity = {
123124
const useActivityItems = (order: AdminOrder): Activity[] => {
124125
const { t } = useTranslation()
125126

127+
const { order: initialOrder = order } = useOrder(order.id, {
128+
version: 1,
129+
fields: "created_at,total,currency_code",
130+
}, { enabled: order.version !== 1})
131+
126132
const { order_changes: orderChanges = [] } = useOrderChanges(order.id, {
127133
change_type: [
128134
"edit",
@@ -520,19 +526,23 @@ const useActivityItems = (order: AdminOrder): Activity[] => {
520526
return new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime()
521527
})
522528

523-
const createdAt = {
524-
title: t("orders.activity.events.placed.title"),
525-
timestamp: order.created_at,
526-
children: (
527-
<Text size="small" className="text-ui-fg-subtle">
528-
{getStylizedAmount(order.total, order.currency_code)}
529-
</Text>
530-
),
529+
if (initialOrder.created_at) {
530+
const createdAt = {
531+
title: t("orders.activity.events.placed.title"),
532+
timestamp: initialOrder.created_at,
533+
children: (
534+
<Text size="small" className="text-ui-fg-subtle">
535+
{getStylizedAmount(initialOrder.total, initialOrder.currency_code)}
536+
</Text>
537+
),
538+
}
539+
sortedActivities.push(createdAt)
531540
}
532541

533-
return [...sortedActivities, createdAt]
542+
return [...sortedActivities]
534543
}, [
535544
order,
545+
initialOrder,
536546
payments,
537547
returns,
538548
exchanges,

packages/medusa/src/api/admin/orders/validators.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,15 @@ import {
99

1010
export const AdminGetOrdersOrderParams = createSelectParams().merge(
1111
z.object({
12-
version: z.number().optional(),
12+
version: z.preprocess(
13+
(val) => {
14+
if (val && typeof val === "string") {
15+
return parseInt(val)
16+
}
17+
return val
18+
},
19+
z.number().optional()
20+
)
1321
})
1422
)
1523

0 commit comments

Comments
 (0)