feat(admin-ui): batch job completed notification (#4886)
This commit is contained in:
1 parent
758f035c2f
commit
b7de679e9b
2 files changed
+23
-3
No files matched your search
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"@medusajs/admin-ui": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
feat(admin-ui): batch job completed notification
|
||||||
@@ -4,6 +4,9 @@ import { adminProductKeys } from "medusa-react"
|
|||||||
import { usePolling } from "./polling-provider"
|
import { usePolling } from "./polling-provider"
|
||||||
import { queryClient } from "../constants/query-client"
|
import { queryClient } from "../constants/query-client"
|
||||||
import useNotification from "../hooks/use-notification"
|
import useNotification from "../hooks/use-notification"
|
||||||
|
import { capitalize } from "lodash"
|
||||||
|
|
||||||
|
let lastDisplayedNotificationAt = Date.now()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provider for refreshing product/pricing lists after batch jobs are complete
|
* Provider for refreshing product/pricing lists after batch jobs are complete
|
||||||
@@ -25,14 +28,26 @@ export const ImportRefresh = ({ children }: PropsWithChildren) => {
|
|||||||
const refreshedTimestamp = productListQuery.state.dataUpdatedAt
|
const refreshedTimestamp = productListQuery.state.dataUpdatedAt
|
||||||
|
|
||||||
const completedJobs = batchJobs.filter(
|
const completedJobs = batchJobs.filter(
|
||||||
(job) => job.status === "completed" && job.type === "product-import"
|
(job) => job.status === "completed"
|
||||||
)
|
)
|
||||||
|
|
||||||
for (const job of completedJobs) {
|
for (const job of completedJobs) {
|
||||||
const jobCompletedTimestamp = new Date(job.completed_at).getTime()
|
const jobCompletedTimestamp = new Date(job.completed_at).getTime()
|
||||||
if (jobCompletedTimestamp > refreshedTimestamp) {
|
|
||||||
|
if (jobCompletedTimestamp > lastDisplayedNotificationAt) {
|
||||||
|
notification(
|
||||||
|
"Success",
|
||||||
|
capitalize(`${job.type.split("-").join(" ")} batch job completed`),
|
||||||
|
"success"
|
||||||
|
)
|
||||||
|
lastDisplayedNotificationAt = Date.now()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (
|
||||||
|
job.type === "product-import" &&
|
||||||
|
jobCompletedTimestamp > refreshedTimestamp
|
||||||
|
) {
|
||||||
queryClient.invalidateQueries(adminProductKeys.all)
|
queryClient.invalidateQueries(adminProductKeys.all)
|
||||||
notification("Success", "Product import completed", "success")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user