Fixed update bug causing pointless http calls.
This commit is contained in:
parent
edf5ffc244
commit
88674f0d6e
@ -1,5 +1,5 @@
|
|||||||
import PropTypes from 'prop-types'
|
import PropTypes from 'prop-types'
|
||||||
import { useState, useEffect, useContext } from 'react'
|
import { useState, useEffect, useContext, useCallback, useMemo, useRef } from 'react'
|
||||||
// import { getModelByName } from '../../../database/ObjectModels'
|
// import { getModelByName } from '../../../database/ObjectModels'
|
||||||
import DocumentPrinterIcon from '../../Icons/DocumentPrinterIcon'
|
import DocumentPrinterIcon from '../../Icons/DocumentPrinterIcon'
|
||||||
import { Button, Dropdown, Modal } from 'antd'
|
import { Button, Dropdown, Modal } from 'antd'
|
||||||
@ -15,6 +15,9 @@ const DocumentPrintButton = ({
|
|||||||
...buttonProps
|
...buttonProps
|
||||||
}) => {
|
}) => {
|
||||||
const { fetchObjects } = useContext(ApiServerContext)
|
const { fetchObjects } = useContext(ApiServerContext)
|
||||||
|
const fetchObjectsRef = useRef(fetchObjects)
|
||||||
|
fetchObjectsRef.current = fetchObjects
|
||||||
|
|
||||||
const [documentTemplates, setDocumentTemplates] = useState([])
|
const [documentTemplates, setDocumentTemplates] = useState([])
|
||||||
const [currentDocumentTemplate, setCurrentDocumentTemplate] = useState(null)
|
const [currentDocumentTemplate, setCurrentDocumentTemplate] = useState(null)
|
||||||
const [loading, setLoading] = useState(false)
|
const [loading, setLoading] = useState(false)
|
||||||
@ -25,14 +28,12 @@ const DocumentPrintButton = ({
|
|||||||
// Get the model by name
|
// Get the model by name
|
||||||
//const model = getModelByName(type)
|
//const model = getModelByName(type)
|
||||||
|
|
||||||
// Fetch document templates when component mounts or type changes
|
const loadDocumentTemplates = useCallback(async () => {
|
||||||
useEffect(() => {
|
|
||||||
const loadDocumentTemplates = async () => {
|
|
||||||
if (!type || token == null) return
|
if (!type || token == null) return
|
||||||
|
|
||||||
setLoading(true)
|
setLoading(true)
|
||||||
try {
|
try {
|
||||||
const result = await fetchObjects('documentTemplate', {
|
const result = await fetchObjectsRef.current('documentTemplate', {
|
||||||
filter: {
|
filter: {
|
||||||
objectType: type,
|
objectType: type,
|
||||||
global: false,
|
global: false,
|
||||||
@ -49,10 +50,18 @@ const DocumentPrintButton = ({
|
|||||||
} finally {
|
} finally {
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
}
|
}
|
||||||
}
|
}, [type, token])
|
||||||
|
|
||||||
|
// Stable key from objectData._id (excludes _isEditing so toggling edit mode doesn't trigger template reload)
|
||||||
|
const objectKey = useMemo(() => {
|
||||||
|
if (!objectData) return null
|
||||||
|
return objectData._id ?? objectData.id ?? null
|
||||||
|
}, [objectData])
|
||||||
|
|
||||||
|
// Fetch document templates when component mounts or objectData, type or token changes
|
||||||
|
useEffect(() => {
|
||||||
loadDocumentTemplates()
|
loadDocumentTemplates()
|
||||||
}, [type, fetchObjects, token])
|
}, [objectKey, token, type, loadDocumentTemplates])
|
||||||
|
|
||||||
// Handle template selection
|
// Handle template selection
|
||||||
const handleTemplateSelect = (template) => {
|
const handleTemplateSelect = (template) => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user