feat(admin-ui): batch job completed notification (#4886)

This commit is contained in:
Frane Polić
2023-08-28 20:21:42 +02:00
committed by GitHub
parent 758f035c2f
commit b7de679e9b
2 changed files with 23 additions and 3 deletions

View File

@@ -0,0 +1,5 @@
---
"@medusajs/admin-ui": patch
---
feat(admin-ui): batch job completed notification

View File

@@ -4,6 +4,9 @@ import { adminProductKeys } from "medusa-react"
import { usePolling } from "./polling-provider"
import { queryClient } from "../constants/query-client"
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
@@ -25,14 +28,26 @@ export const ImportRefresh = ({ children }: PropsWithChildren) => {
const refreshedTimestamp = productListQuery.state.dataUpdatedAt
const completedJobs = batchJobs.filter(
(job) => job.status === "completed" && job.type === "product-import"
(job) => job.status === "completed"
)
for (const job of completedJobs) {
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)
notification("Success", "Product import completed", "success")
}
}
}