feat: ensure queue summary widget in dashboards
This commit is contained in:
parent
a542846313
commit
343f0c8c64
2 changed files with 201 additions and 0 deletions
|
|
@ -570,6 +570,7 @@ export function DashboardBuilder({ dashboardId, editable = true, mode = "edit" }
|
|||
const [isDeletingDashboard, setIsDeletingDashboard] = useState(false)
|
||||
const fullscreenContainerRef = useRef<HTMLDivElement | null>(null)
|
||||
const previousSidebarStateRef = useRef<{ open: boolean; openMobile: boolean } | null>(null)
|
||||
const ensureQueueSummaryRequestedRef = useRef(false)
|
||||
|
||||
const updateLayoutMutation = useMutation(api.dashboards.updateLayout)
|
||||
const updateFiltersMutation = useMutation(api.dashboards.updateFilters)
|
||||
|
|
@ -578,6 +579,7 @@ export function DashboardBuilder({ dashboardId, editable = true, mode = "edit" }
|
|||
const duplicateWidgetMutation = useMutation(api.dashboards.duplicateWidget)
|
||||
const removeWidgetMutation = useMutation(api.dashboards.removeWidget)
|
||||
const updateMetadataMutation = useMutation(api.dashboards.updateMetadata)
|
||||
const ensureQueueSummaryWidgetMutation = useMutation(api.dashboards.ensureQueueSummaryWidget)
|
||||
const archiveDashboardMutation = useMutation(api.dashboards.archive)
|
||||
|
||||
useEffect(() => {
|
||||
|
|
@ -625,6 +627,43 @@ export function DashboardBuilder({ dashboardId, editable = true, mode = "edit" }
|
|||
layoutRef.current = layoutState
|
||||
}, [layoutState])
|
||||
|
||||
useEffect(() => {
|
||||
if (!dashboard || !convexUserId || !isStaff) return
|
||||
if (widgets.length === 0) return
|
||||
const queueIndex = widgets.findIndex((widget) => {
|
||||
const type = (widget.type ?? "").toLowerCase()
|
||||
if (type === "queue-summary") return true
|
||||
const configType =
|
||||
widget.config && typeof widget.config === "object"
|
||||
? ((widget.config as WidgetConfig).type ?? "").toLowerCase()
|
||||
: ""
|
||||
return configType === "queue-summary"
|
||||
})
|
||||
if (queueIndex === 0) {
|
||||
ensureQueueSummaryRequestedRef.current = false
|
||||
return
|
||||
}
|
||||
if (queueIndex === -1 || queueIndex > 0) {
|
||||
if (ensureQueueSummaryRequestedRef.current) return
|
||||
ensureQueueSummaryRequestedRef.current = true
|
||||
ensureQueueSummaryWidgetMutation({
|
||||
tenantId,
|
||||
actorId: convexUserId as Id<"users">,
|
||||
dashboardId: dashboard.id as Id<"dashboards">,
|
||||
}).catch((error) => {
|
||||
console.error("[dashboards] Failed to ensure queue summary widget", error)
|
||||
ensureQueueSummaryRequestedRef.current = false
|
||||
})
|
||||
}
|
||||
}, [
|
||||
dashboard,
|
||||
widgets,
|
||||
convexUserId,
|
||||
isStaff,
|
||||
tenantId,
|
||||
ensureQueueSummaryWidgetMutation,
|
||||
])
|
||||
|
||||
useEffect(() => {
|
||||
if (sections.length === 0) {
|
||||
setActiveSectionIndex(0)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue