fix(admin-ui): flickering Timeline (#4231)
* fix(admin-ui): prevent Timeline flickering while loading * chore: changesets --------- Co-authored-by: fPolic <frane@medusajs.com>
This commit is contained in:
5
.changeset/brave-moons-smell.md
Normal file
5
.changeset/brave-moons-smell.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@medusajs/admin-ui": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
fix(admin-ui): prevent Timeline flickering while loading
|
||||||
@@ -3,7 +3,6 @@ import {
|
|||||||
useAdminCancelOrderEdit,
|
useAdminCancelOrderEdit,
|
||||||
useAdminConfirmOrderEdit,
|
useAdminConfirmOrderEdit,
|
||||||
useAdminDeleteOrderEdit,
|
useAdminDeleteOrderEdit,
|
||||||
useAdminOrderEdit,
|
|
||||||
useAdminUser,
|
useAdminUser,
|
||||||
} from "medusa-react"
|
} from "medusa-react"
|
||||||
import React, { useContext } from "react"
|
import React, { useContext } from "react"
|
||||||
@@ -48,9 +47,9 @@ const EditCreated: React.FC<EditCreatedProps> = ({ event }) => {
|
|||||||
const { isModalVisible, showModal, setActiveOrderEdit } =
|
const { isModalVisible, showModal, setActiveOrderEdit } =
|
||||||
useContext(OrderEditContext)
|
useContext(OrderEditContext)
|
||||||
|
|
||||||
const { order_edit: orderEdit, isFetching } = useAdminOrderEdit(event.edit.id)
|
const orderEdit = event.edit
|
||||||
|
|
||||||
const { type, user_id } = getInfo(orderEdit || event.edit)
|
const { type, user_id } = getInfo(orderEdit)
|
||||||
|
|
||||||
const notification = useNotification()
|
const notification = useNotification()
|
||||||
|
|
||||||
@@ -60,9 +59,9 @@ const EditCreated: React.FC<EditCreatedProps> = ({ event }) => {
|
|||||||
|
|
||||||
const forceConfirmDialog = useImperativeDialog()
|
const forceConfirmDialog = useImperativeDialog()
|
||||||
|
|
||||||
const deleteOrderEdit = useAdminDeleteOrderEdit(event.edit.id)
|
const deleteOrderEdit = useAdminDeleteOrderEdit(orderEdit.id)
|
||||||
const cancelOrderEdit = useAdminCancelOrderEdit(event.edit.id)
|
const cancelOrderEdit = useAdminCancelOrderEdit(orderEdit.id)
|
||||||
const confirmOrderEdit = useAdminConfirmOrderEdit(event.edit.id)
|
const confirmOrderEdit = useAdminConfirmOrderEdit(orderEdit.id)
|
||||||
|
|
||||||
const onDeleteOrderEditClicked = () => {
|
const onDeleteOrderEditClicked = () => {
|
||||||
deleteOrderEdit.mutate(undefined, {
|
deleteOrderEdit.mutate(undefined, {
|
||||||
@@ -120,7 +119,7 @@ const EditCreated: React.FC<EditCreatedProps> = ({ event }) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// hide last created edit while editing and prevent content flashing while loading
|
// hide last created edit while editing and prevent content flashing while loading
|
||||||
if ((isModalVisible && orderEdit?.status === "created") || isFetching) {
|
if (isModalVisible && orderEdit?.status === "created") {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -162,15 +162,20 @@ export interface NotificationEvent extends TimelineEvent {
|
|||||||
export const useBuildTimeline = (orderId: string) => {
|
export const useBuildTimeline = (orderId: string) => {
|
||||||
const { orderRelations } = useOrdersExpandParam()
|
const { orderRelations } = useOrdersExpandParam()
|
||||||
|
|
||||||
const { order, refetch } = useAdminOrder(orderId, {
|
const {
|
||||||
|
order,
|
||||||
|
refetch,
|
||||||
|
isLoading: isOrderLoading,
|
||||||
|
} = useAdminOrder(orderId, {
|
||||||
expand: orderRelations,
|
expand: orderRelations,
|
||||||
})
|
})
|
||||||
|
|
||||||
const { order_edits: edits } = useAdminOrderEdits({ order_id: orderId })
|
const { order_edits: edits, isLoading: isOrderEditsLoading } =
|
||||||
|
useAdminOrderEdits({ order_id: orderId })
|
||||||
|
|
||||||
const { isFeatureEnabled } = useFeatureFlag()
|
const { isFeatureEnabled } = useFeatureFlag()
|
||||||
|
|
||||||
const { notes } = useAdminNotes({
|
const { notes, isLoading: isNotesLoading } = useAdminNotes({
|
||||||
resource_id: orderId,
|
resource_id: orderId,
|
||||||
limit: 100,
|
limit: 100,
|
||||||
offset: 0,
|
offset: 0,
|
||||||
@@ -185,6 +190,10 @@ export const useBuildTimeline = (orderId: string) => {
|
|||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isOrderLoading || isNotesLoading || isOrderEditsLoading) {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
|
||||||
let allItems = [...order.items]
|
let allItems = [...order.items]
|
||||||
|
|
||||||
if (order.swaps && order.swaps.length) {
|
if (order.swaps && order.swaps.length) {
|
||||||
@@ -541,9 +550,21 @@ export const useBuildTimeline = (orderId: string) => {
|
|||||||
events[events.length - 1].first = true
|
events[events.length - 1].first = true
|
||||||
|
|
||||||
return events
|
return events
|
||||||
}, [order, edits, notes, notifications, isFeatureEnabled])
|
}, [
|
||||||
|
order,
|
||||||
|
edits,
|
||||||
|
notes,
|
||||||
|
notifications,
|
||||||
|
isFeatureEnabled,
|
||||||
|
isOrderLoading,
|
||||||
|
isNotesLoading,
|
||||||
|
isOrderEditsLoading,
|
||||||
|
])
|
||||||
|
|
||||||
return { events, refetch }
|
return {
|
||||||
|
events,
|
||||||
|
refetch,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getLineItem(allItems, itemId) {
|
function getLineItem(allItems, itemId) {
|
||||||
|
|||||||
Reference in New Issue
Block a user