From d7827ecb6d013dbe73a654b85b1e46960c68d210 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sun, 14 Dec 2025 23:06:42 +0000 Subject: [PATCH] Implemented new message context. --- .../Dashboard/Inventory/FilamentStocks.jsx | 5 +- .../FilamentStocks/NewFilamentStock.jsx | 8 ++- .../Dashboard/Inventory/OrderItems.jsx | 5 +- .../Inventory/OrderItems/NewOrderItem.jsx | 8 ++- .../Dashboard/Inventory/PartStocks.jsx | 5 +- .../Inventory/PartStocks/NewPartStock.jsx | 8 ++- .../Dashboard/Inventory/PurchaseOrders.jsx | 5 +- .../PurchaseOrders/NewPurchaseOrder.jsx | 8 ++- .../Dashboard/Inventory/Shipments.jsx | 5 +- .../Inventory/Shipments/NewShipment.jsx | 8 ++- .../Dashboard/Inventory/StockAudits.jsx | 5 +- .../Inventory/StockAudits/NewStockAudit.jsx | 8 ++- src/components/Dashboard/Layout.jsx | 57 ++++++++++--------- .../Dashboard/Management/CourierServices.jsx | 5 +- .../CourierServices/NewCourierService.jsx | 8 ++- .../Dashboard/Management/Couriers.jsx | 5 +- .../Management/Couriers/NewCourier.jsx | 8 ++- .../Dashboard/Management/DocumentJobs.jsx | 5 +- .../DocumentJobs/NewDocumentJob.jsx | 20 ++++--- .../Dashboard/Management/DocumentPrinters.jsx | 5 +- .../DocumentPrinters/NewDocumentPrinter.jsx | 8 ++- .../Dashboard/Management/DocumentSizes.jsx | 5 +- .../DocumentSizes/NewDocumentSize.jsx | 8 ++- .../Management/DocumentTemplates.jsx | 5 +- .../DocumentTemplates/NewDocumentTemplate.jsx | 8 ++- .../Dashboard/Management/Filaments.jsx | 5 +- .../Management/Filaments/NewFilament.jsx | 8 ++- src/components/Dashboard/Management/Hosts.jsx | 5 +- .../Dashboard/Management/Hosts/NewHost.jsx | 8 ++- .../Dashboard/Management/Materials.jsx | 14 ++--- .../Dashboard/Management/NoteTypes.jsx | 5 +- .../Management/NoteTypes/NewNoteType.jsx | 8 ++- .../Dashboard/Management/Notes/NewNote.jsx | 8 ++- src/components/Dashboard/Management/Parts.jsx | 6 +- .../Dashboard/Management/Parts/NewPart.jsx | 8 ++- .../Dashboard/Management/Products.jsx | 4 -- .../Management/Products/NewProduct.jsx | 8 ++- .../Dashboard/Management/TaxRates.jsx | 5 +- .../Management/TaxRates/NewTaxRate.jsx | 8 ++- .../Dashboard/Management/TaxRecords.jsx | 5 +- .../Management/TaxRecords/NewTaxRecord.jsx | 8 ++- .../Dashboard/Management/Users/NewUser.jsx | 10 ++-- .../Dashboard/Management/Vendors.jsx | 5 +- .../Management/Vendors/NewVendor.jsx | 8 ++- .../Dashboard/Production/GCodeFiles.jsx | 5 +- .../Production/GCodeFiles/NewGCodeFile.jsx | 11 +++- src/components/Dashboard/Production/Jobs.jsx | 5 +- .../Dashboard/Production/Jobs/NewJob.jsx | 11 +++- .../Dashboard/Production/Printers.jsx | 5 +- .../Production/Printers/NewPrinter.jsx | 11 +++- .../Dashboard/common/CopyButton.jsx | 16 +++--- .../Dashboard/common/DocumentPrintButton.jsx | 4 -- .../Dashboard/common/NewObjectForm.jsx | 10 ++-- .../Dashboard/common/NotesPanel.jsx | 4 -- .../Dashboard/common/NotificationCenter.jsx | 27 +++++---- .../Dashboard/common/ObjectForm.jsx | 18 +++--- .../Dashboard/common/ObjectTable.jsx | 3 - .../Dashboard/common/PrinterJobsTree.jsx | 7 ++- .../Dashboard/common/SubJobsTree.jsx | 7 ++- src/database/models/Printer.js | 7 ++- 60 files changed, 244 insertions(+), 268 deletions(-) diff --git a/src/components/Dashboard/Inventory/FilamentStocks.jsx b/src/components/Dashboard/Inventory/FilamentStocks.jsx index 2d30bf0..a684b06 100644 --- a/src/components/Dashboard/Inventory/FilamentStocks.jsx +++ b/src/components/Dashboard/Inventory/FilamentStocks.jsx @@ -2,7 +2,7 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewFilamentStock from './FilamentStocks/NewFilamentStock' import PlusIcon from '../../Icons/PlusIcon' @@ -15,7 +15,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const FilamentStocks = () => { - const [messageApi, contextHolder] = message.useMessage() const tableRef = useRef() const [newFilamentStockOpen, setNewFilamentStockOpen] = useState(false) @@ -51,7 +50,6 @@ const FilamentStocks = () => { return ( <> - {contextHolder} @@ -94,7 +92,6 @@ const FilamentStocks = () => { { setNewFilamentStockOpen(false) - messageApi.success('New filament stock created successfully.') tableRef.current?.reload() }} reset={newFilamentStockOpen} diff --git a/src/components/Dashboard/Inventory/FilamentStocks/NewFilamentStock.jsx b/src/components/Dashboard/Inventory/FilamentStocks/NewFilamentStock.jsx index 60484b5..0678f87 100644 --- a/src/components/Dashboard/Inventory/FilamentStocks/NewFilamentStock.jsx +++ b/src/components/Dashboard/Inventory/FilamentStocks/NewFilamentStock.jsx @@ -51,9 +51,11 @@ const NewFilamentStock = ({ onOk, reset, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Filament Stock' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Inventory/OrderItems.jsx b/src/components/Dashboard/Inventory/OrderItems.jsx index 9046c18..ca867ca 100644 --- a/src/components/Dashboard/Inventory/OrderItems.jsx +++ b/src/components/Dashboard/Inventory/OrderItems.jsx @@ -1,5 +1,5 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewOrderItem from './OrderItems/NewOrderItem' import ObjectTable from '../common/ObjectTable' import PlusIcon from '../../Icons/PlusIcon' @@ -11,7 +11,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const OrderItems = () => { - const [messageApi, contextHolder] = message.useMessage() const [newOrderItemOpen, setNewOrderItemOpen] = useState(false) const tableRef = useRef() @@ -46,7 +45,6 @@ const OrderItems = () => { return ( <> - {contextHolder} @@ -88,7 +86,6 @@ const OrderItems = () => { { setNewOrderItemOpen(false) - messageApi.success('New order item created successfully.') tableRef.current?.reload() }} reset={newOrderItemOpen} diff --git a/src/components/Dashboard/Inventory/OrderItems/NewOrderItem.jsx b/src/components/Dashboard/Inventory/OrderItems/NewOrderItem.jsx index 53f1594..4406c83 100644 --- a/src/components/Dashboard/Inventory/OrderItems/NewOrderItem.jsx +++ b/src/components/Dashboard/Inventory/OrderItems/NewOrderItem.jsx @@ -79,9 +79,11 @@ const NewOrderItem = ({ onOk, reset, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Order Item' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Inventory/PartStocks.jsx b/src/components/Dashboard/Inventory/PartStocks.jsx index 05ab315..8506fb3 100644 --- a/src/components/Dashboard/Inventory/PartStocks.jsx +++ b/src/components/Dashboard/Inventory/PartStocks.jsx @@ -2,7 +2,7 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewPartStock from './PartStocks/NewPartStock' import PlusIcon from '../../Icons/PlusIcon' @@ -15,7 +15,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const PartStocks = () => { - const [messageApi, contextHolder] = message.useMessage() const tableRef = useRef() const [newPartStockOpen, setNewPartStockOpen] = useState(false) @@ -51,7 +50,6 @@ const PartStocks = () => { return ( <> - {contextHolder} @@ -94,7 +92,6 @@ const PartStocks = () => { { setNewPartStockOpen(false) - messageApi.success('New part stock created successfully.') tableRef.current?.reload() }} reset={newPartStockOpen} diff --git a/src/components/Dashboard/Inventory/PartStocks/NewPartStock.jsx b/src/components/Dashboard/Inventory/PartStocks/NewPartStock.jsx index fd64cc1..1f57d37 100644 --- a/src/components/Dashboard/Inventory/PartStocks/NewPartStock.jsx +++ b/src/components/Dashboard/Inventory/PartStocks/NewPartStock.jsx @@ -51,9 +51,11 @@ const NewPartStock = ({ onOk, reset, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Part Stock' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Inventory/PurchaseOrders.jsx b/src/components/Dashboard/Inventory/PurchaseOrders.jsx index 25e5977..80298c9 100644 --- a/src/components/Dashboard/Inventory/PurchaseOrders.jsx +++ b/src/components/Dashboard/Inventory/PurchaseOrders.jsx @@ -1,5 +1,5 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewPurchaseOrder from './PurchaseOrders/NewPurchaseOrder' import ObjectTable from '../common/ObjectTable' import PlusIcon from '../../Icons/PlusIcon' @@ -11,7 +11,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const PurchaseOrders = () => { - const [messageApi, contextHolder] = message.useMessage() const [newPurchaseOrderOpen, setNewPurchaseOrderOpen] = useState(false) const tableRef = useRef() @@ -46,7 +45,6 @@ const PurchaseOrders = () => { return ( <> - {contextHolder} @@ -88,7 +86,6 @@ const PurchaseOrders = () => { { setNewPurchaseOrderOpen(false) - messageApi.success('New purchase order created successfully.') tableRef.current?.reload() }} reset={newPurchaseOrderOpen} diff --git a/src/components/Dashboard/Inventory/PurchaseOrders/NewPurchaseOrder.jsx b/src/components/Dashboard/Inventory/PurchaseOrders/NewPurchaseOrder.jsx index 898d454..7ee6d18 100644 --- a/src/components/Dashboard/Inventory/PurchaseOrders/NewPurchaseOrder.jsx +++ b/src/components/Dashboard/Inventory/PurchaseOrders/NewPurchaseOrder.jsx @@ -70,9 +70,11 @@ const NewPurchaseOrder = ({ onOk, reset, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Purchase Order' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Inventory/Shipments.jsx b/src/components/Dashboard/Inventory/Shipments.jsx index a1acfed..93e0b63 100644 --- a/src/components/Dashboard/Inventory/Shipments.jsx +++ b/src/components/Dashboard/Inventory/Shipments.jsx @@ -1,5 +1,5 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewShipment from './Shipments/NewShipment' import ObjectTable from '../common/ObjectTable' import PlusIcon from '../../Icons/PlusIcon' @@ -11,7 +11,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const Shipments = () => { - const [messageApi, contextHolder] = message.useMessage() const [newShipmentOpen, setNewShipmentOpen] = useState(false) const tableRef = useRef() @@ -46,7 +45,6 @@ const Shipments = () => { return ( <> - {contextHolder} @@ -88,7 +86,6 @@ const Shipments = () => { { setNewShipmentOpen(false) - messageApi.success('New shipment created successfully.') tableRef.current?.reload() }} reset={newShipmentOpen} diff --git a/src/components/Dashboard/Inventory/Shipments/NewShipment.jsx b/src/components/Dashboard/Inventory/Shipments/NewShipment.jsx index 7eb25d5..ceb60c1 100644 --- a/src/components/Dashboard/Inventory/Shipments/NewShipment.jsx +++ b/src/components/Dashboard/Inventory/Shipments/NewShipment.jsx @@ -74,9 +74,11 @@ const NewShipment = ({ onOk, reset, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Shipment' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Inventory/StockAudits.jsx b/src/components/Dashboard/Inventory/StockAudits.jsx index a4bfe67..40a0a74 100644 --- a/src/components/Dashboard/Inventory/StockAudits.jsx +++ b/src/components/Dashboard/Inventory/StockAudits.jsx @@ -2,7 +2,7 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewStockAudit from './StockAudits/NewStockAudit' import PlusIcon from '../../Icons/PlusIcon' @@ -15,7 +15,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const StockAudits = () => { - const [messageApi, contextHolder] = message.useMessage() const tableRef = useRef() const [newStockAuditOpen, setNewStockAuditOpen] = useState(false) @@ -51,7 +50,6 @@ const StockAudits = () => { return ( <> - {contextHolder} @@ -94,7 +92,6 @@ const StockAudits = () => { { setNewStockAuditOpen(false) - messageApi.success('New stock audit created successfully.') tableRef.current?.reload() }} reset={newStockAuditOpen} diff --git a/src/components/Dashboard/Inventory/StockAudits/NewStockAudit.jsx b/src/components/Dashboard/Inventory/StockAudits/NewStockAudit.jsx index 536d3a6..702ff76 100644 --- a/src/components/Dashboard/Inventory/StockAudits/NewStockAudit.jsx +++ b/src/components/Dashboard/Inventory/StockAudits/NewStockAudit.jsx @@ -51,9 +51,11 @@ const NewStockAudit = ({ onOk, reset, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Stock Audit' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Layout.jsx b/src/components/Dashboard/Layout.jsx index c4f2a78..c2eab43 100644 --- a/src/components/Dashboard/Layout.jsx +++ b/src/components/Dashboard/Layout.jsx @@ -9,6 +9,7 @@ import DashboardNavigation from './common/DashboardNavigation' import DashboardBreadcrumb from './common/DashboardBreadcrumb' import DeveloperSidebar from './Developer/DeveloperSidebar' import { useThemeContext } from './context/ThemeContext' +import { MessageProvider } from './context/MessageContext' const { Content } = Layout @@ -22,36 +23,38 @@ const DashboardLayout = ({ children }) => { const { isDarkMode } = useThemeContext() return ( - - - - {isProduction ? ( - - ) : isInventory ? ( - - ) : isManagement ? ( - - ) : isDeveloper ? ( - - ) : ( - // Default to production sidebar - )} - - - - - - + + + + + {isProduction ? ( + + ) : isInventory ? ( + + ) : isManagement ? ( + + ) : isDeveloper ? ( + + ) : ( + // Default to production sidebar + )} + + + + + + - {children} - - + {children} + + + - + ) } diff --git a/src/components/Dashboard/Management/CourierServices.jsx b/src/components/Dashboard/Management/CourierServices.jsx index 512316a..f00114e 100644 --- a/src/components/Dashboard/Management/CourierServices.jsx +++ b/src/components/Dashboard/Management/CourierServices.jsx @@ -1,5 +1,5 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewCourierService from './CourierServices/NewCourierService' import ObjectTable from '../common/ObjectTable' import PlusIcon from '../../Icons/PlusIcon' @@ -11,7 +11,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const CourierServices = () => { - const [messageApi, contextHolder] = message.useMessage() const [newCourierServiceOpen, setNewCourierServiceOpen] = useState(false) const tableRef = useRef() @@ -46,7 +45,6 @@ const CourierServices = () => { return ( <> - {contextHolder} @@ -85,7 +83,6 @@ const CourierServices = () => { { setNewCourierServiceOpen(false) - messageApi.success('New courier service created successfully.') tableRef.current?.reload() }} reset={!newCourierServiceOpen} diff --git a/src/components/Dashboard/Management/CourierServices/NewCourierService.jsx b/src/components/Dashboard/Management/CourierServices/NewCourierService.jsx index d9e9584..6bd2283 100644 --- a/src/components/Dashboard/Management/CourierServices/NewCourierService.jsx +++ b/src/components/Dashboard/Management/CourierServices/NewCourierService.jsx @@ -68,9 +68,11 @@ const NewCourierService = ({ onOk, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Courier Service' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Management/Couriers.jsx b/src/components/Dashboard/Management/Couriers.jsx index e3db9bc..8bebdcd 100644 --- a/src/components/Dashboard/Management/Couriers.jsx +++ b/src/components/Dashboard/Management/Couriers.jsx @@ -1,5 +1,5 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewCourier from './Couriers/NewCourier' import ObjectTable from '../common/ObjectTable' import PlusIcon from '../../Icons/PlusIcon' @@ -11,7 +11,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const Couriers = () => { - const [messageApi, contextHolder] = message.useMessage() const [newCourierOpen, setNewCourierOpen] = useState(false) const tableRef = useRef() @@ -45,7 +44,6 @@ const Couriers = () => { return ( <> - {contextHolder} @@ -84,7 +82,6 @@ const Couriers = () => { { setNewCourierOpen(false) - messageApi.success('New courier created successfully.') tableRef.current?.reload() }} reset={!newCourierOpen} diff --git a/src/components/Dashboard/Management/Couriers/NewCourier.jsx b/src/components/Dashboard/Management/Couriers/NewCourier.jsx index 9bb99ef..d1e615b 100644 --- a/src/components/Dashboard/Management/Couriers/NewCourier.jsx +++ b/src/components/Dashboard/Management/Couriers/NewCourier.jsx @@ -61,9 +61,11 @@ const NewCourier = ({ onOk, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Courier' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Management/DocumentJobs.jsx b/src/components/Dashboard/Management/DocumentJobs.jsx index 9c3e131..6959bed 100644 --- a/src/components/Dashboard/Management/DocumentJobs.jsx +++ b/src/components/Dashboard/Management/DocumentJobs.jsx @@ -1,5 +1,5 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewDocumentJob from './DocumentJobs/NewDocumentJob' import ObjectTable from '../common/ObjectTable' import PlusIcon from '../../Icons/PlusIcon' @@ -11,7 +11,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const DocumentJobs = () => { - const [messageApi, contextHolder] = message.useMessage() const [newDocumentJobOpen, setNewDocumentJobOpen] = useState(false) const tableRef = useRef() @@ -46,7 +45,6 @@ const DocumentJobs = () => { return ( <> - {contextHolder} @@ -85,7 +83,6 @@ const DocumentJobs = () => { { setNewDocumentJobOpen(false) - messageApi.success('New note type created successfully.') tableRef.current?.reload() }} reset={!newDocumentJobOpen} diff --git a/src/components/Dashboard/Management/DocumentJobs/NewDocumentJob.jsx b/src/components/Dashboard/Management/DocumentJobs/NewDocumentJob.jsx index 022c248..5a9c9c6 100644 --- a/src/components/Dashboard/Management/DocumentJobs/NewDocumentJob.jsx +++ b/src/components/Dashboard/Management/DocumentJobs/NewDocumentJob.jsx @@ -68,16 +68,18 @@ const NewDocumentJob = ({ onOk, defaultValues = {} }) => { } onSubmit={async () => { const newDocumentJob = await handleSubmit() - await sendObjectAction( - newDocumentJob.documentPrinter._id, - 'documentPrinter', - { - type: 'deploy', - data: newDocumentJob + if (newDocumentJob) { + await sendObjectAction( + newDocumentJob.documentPrinter._id, + 'documentPrinter', + { + type: 'deploy', + data: newDocumentJob + } + ) + if (onOk) { + onOk() } - ) - if (onOk) { - onOk() } }} actions={[ diff --git a/src/components/Dashboard/Management/DocumentPrinters.jsx b/src/components/Dashboard/Management/DocumentPrinters.jsx index 2bcf780..b5a9bdc 100644 --- a/src/components/Dashboard/Management/DocumentPrinters.jsx +++ b/src/components/Dashboard/Management/DocumentPrinters.jsx @@ -1,5 +1,5 @@ import { useRef, useState } from 'react' -import { Button, Flex, Space, Dropdown, message, Modal } from 'antd' +import { Button, Flex, Space, Dropdown, Modal } from 'antd' import PlusIcon from '../../Icons/PlusIcon' import ObjectTable from '../common/ObjectTable' import ReloadIcon from '../../Icons/ReloadIcon' @@ -11,7 +11,6 @@ import ColumnViewButton from '../common/ColumnViewButton' import NewDocumentPrinter from './DocumentPrinters/NewDocumentPrinter' const DocumentPrinters = () => { - const [messageApi, contextHolder] = message.useMessage() const tableRef = useRef() const [newDocumentPrinterOpen, setNewDocumentPrinterOpen] = useState(false) const [viewMode, setViewMode] = useViewMode('documentPrinter') @@ -45,7 +44,6 @@ const DocumentPrinters = () => { return ( <> - {contextHolder} @@ -84,7 +82,6 @@ const DocumentPrinters = () => { { setNewDocumentPrinterOpen(false) - messageApi.success('New note type created successfully.') tableRef.current?.reload() }} reset={!newDocumentPrinterOpen} diff --git a/src/components/Dashboard/Management/DocumentPrinters/NewDocumentPrinter.jsx b/src/components/Dashboard/Management/DocumentPrinters/NewDocumentPrinter.jsx index af44046..6097527 100644 --- a/src/components/Dashboard/Management/DocumentPrinters/NewDocumentPrinter.jsx +++ b/src/components/Dashboard/Management/DocumentPrinters/NewDocumentPrinter.jsx @@ -66,9 +66,11 @@ const NewDocumentPrinter = ({ onOk, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Document Printer' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Management/DocumentSizes.jsx b/src/components/Dashboard/Management/DocumentSizes.jsx index 5416803..cec1077 100644 --- a/src/components/Dashboard/Management/DocumentSizes.jsx +++ b/src/components/Dashboard/Management/DocumentSizes.jsx @@ -1,5 +1,5 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewDocumentSize from './DocumentSizes/NewDocumentSize' import ObjectTable from '../common/ObjectTable' import PlusIcon from '../../Icons/PlusIcon' @@ -11,7 +11,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const DocumentSizes = () => { - const [messageApi, contextHolder] = message.useMessage() const [newDocumentSizeOpen, setNewDocumentSizeOpen] = useState(false) const tableRef = useRef() const [viewMode, setViewMode] = useViewMode('documentSize') @@ -44,7 +43,6 @@ const DocumentSizes = () => { return ( <> - {contextHolder} @@ -83,7 +81,6 @@ const DocumentSizes = () => { { setNewDocumentSizeOpen(false) - messageApi.success('New document size created successfully.') tableRef.current?.reload() }} reset={!newDocumentSizeOpen} diff --git a/src/components/Dashboard/Management/DocumentSizes/NewDocumentSize.jsx b/src/components/Dashboard/Management/DocumentSizes/NewDocumentSize.jsx index 6c62411..f1da440 100644 --- a/src/components/Dashboard/Management/DocumentSizes/NewDocumentSize.jsx +++ b/src/components/Dashboard/Management/DocumentSizes/NewDocumentSize.jsx @@ -47,9 +47,11 @@ const NewDocumentSize = ({ onOk, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Document Size' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Management/DocumentTemplates.jsx b/src/components/Dashboard/Management/DocumentTemplates.jsx index e1b02af..9cd0421 100644 --- a/src/components/Dashboard/Management/DocumentTemplates.jsx +++ b/src/components/Dashboard/Management/DocumentTemplates.jsx @@ -1,5 +1,5 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewDocumentTemplate from './DocumentTemplates/NewDocumentTemplate' import ObjectTable from '../common/ObjectTable' import PlusIcon from '../../Icons/PlusIcon' @@ -11,7 +11,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const DocumentTemplates = () => { - const [messageApi, contextHolder] = message.useMessage() const [newDocumentTemplateOpen, setNewDocumentTemplateOpen] = useState(false) const tableRef = useRef() @@ -46,7 +45,6 @@ const DocumentTemplates = () => { return ( <> - {contextHolder} @@ -85,7 +83,6 @@ const DocumentTemplates = () => { { setNewDocumentTemplateOpen(false) - messageApi.success('New note type created successfully.') tableRef.current?.reload() }} reset={!newDocumentTemplateOpen} diff --git a/src/components/Dashboard/Management/DocumentTemplates/NewDocumentTemplate.jsx b/src/components/Dashboard/Management/DocumentTemplates/NewDocumentTemplate.jsx index 11f735d..80d67d2 100644 --- a/src/components/Dashboard/Management/DocumentTemplates/NewDocumentTemplate.jsx +++ b/src/components/Dashboard/Management/DocumentTemplates/NewDocumentTemplate.jsx @@ -66,9 +66,11 @@ const NewDocumentTemplate = ({ onOk, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Document Template' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Management/Filaments.jsx b/src/components/Dashboard/Management/Filaments.jsx index d100bd6..cd721b0 100644 --- a/src/components/Dashboard/Management/Filaments.jsx +++ b/src/components/Dashboard/Management/Filaments.jsx @@ -1,7 +1,7 @@ // src/filaments.js import { useRef, useState } from 'react' -import { Button, Flex, Space, Modal, message, Dropdown } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewFilament from './Filaments/NewFilament' @@ -15,7 +15,6 @@ import GridIcon from '../../Icons/GridIcon' import useViewMode from '../hooks/useViewMode' const Filaments = () => { - const [messageApi, contextHolder] = message.useMessage() const [newFilamentOpen, setNewFilamentOpen] = useState(false) const tableRef = useRef() @@ -51,7 +50,6 @@ const Filaments = () => { return ( <> - {contextHolder} @@ -92,7 +90,6 @@ const Filaments = () => { { setNewFilamentOpen(false) - messageApi.success('New filament added successfully.') tableRef.current?.reload() }} reset={newFilamentOpen} diff --git a/src/components/Dashboard/Management/Filaments/NewFilament.jsx b/src/components/Dashboard/Management/Filaments/NewFilament.jsx index 181a2ad..0433508 100644 --- a/src/components/Dashboard/Management/Filaments/NewFilament.jsx +++ b/src/components/Dashboard/Management/Filaments/NewFilament.jsx @@ -61,9 +61,11 @@ const NewFilament = ({ onOk }) => { loading={submitLoading} formValid={formValid} title='New Filament' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Management/Hosts.jsx b/src/components/Dashboard/Management/Hosts.jsx index e11f91c..c290f0c 100644 --- a/src/components/Dashboard/Management/Hosts.jsx +++ b/src/components/Dashboard/Management/Hosts.jsx @@ -1,7 +1,7 @@ // src/hosts.js import { useRef, useState } from 'react' -import { Button, Flex, Space, Modal, message, Dropdown } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewHost from './Hosts/NewHost' @@ -15,7 +15,6 @@ import GridIcon from '../../Icons/GridIcon' import useViewMode from '../hooks/useViewMode' const Hosts = () => { - const [messageApi, contextHolder] = message.useMessage() const [newHostOpen, setNewHostOpen] = useState(false) const tableRef = useRef() @@ -50,7 +49,6 @@ const Hosts = () => { return ( <> - {contextHolder} @@ -91,7 +89,6 @@ const Hosts = () => { { setNewHostOpen(false) - messageApi.success('New host added successfully.') tableRef.current?.reload() }} reset={newHostOpen} diff --git a/src/components/Dashboard/Management/Hosts/NewHost.jsx b/src/components/Dashboard/Management/Hosts/NewHost.jsx index 12fedca..0b7e8ec 100644 --- a/src/components/Dashboard/Management/Hosts/NewHost.jsx +++ b/src/components/Dashboard/Management/Hosts/NewHost.jsx @@ -94,9 +94,11 @@ const NewHost = ({ onOk }) => { totalSteps={steps.length} onPrevious={() => setCurrentStep((prev) => prev - 1)} onNext={() => setCurrentStep((prev) => prev + 1)} - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} formValid={formValid} submitLoading={submitLoading} diff --git a/src/components/Dashboard/Management/Materials.jsx b/src/components/Dashboard/Management/Materials.jsx index 92e452c..8bb8694 100644 --- a/src/components/Dashboard/Management/Materials.jsx +++ b/src/components/Dashboard/Management/Materials.jsx @@ -9,12 +9,12 @@ import { Flex, Space, Modal, - message, Dropdown, Spin } from 'antd' import { createStyles } from 'antd-style' import { LoadingOutlined } from '@ant-design/icons' +import { useMessageContext } from '../context/MessageContext' import { AuthContext } from '../context/AuthContext' @@ -47,7 +47,7 @@ const useStyle = createStyles(({ css, token }) => { }) const Materials = () => { - const [messageApi, contextHolder] = message.useMessage() + const { showError } = useMessageContext() const navigate = useNavigate() const { styles } = useStyle() @@ -87,12 +87,11 @@ const Materials = () => { setLazyLoading(false) } catch (error) { if (error.response) { - messageApi.error( - 'Error updating material details:', - error.response.status + showError( + `Error updating material details: ${error.response.status}` ) } else { - messageApi.error( + showError( 'An unexpected error occurred. Please try again later.' ) } @@ -100,7 +99,7 @@ const Materials = () => { setLazyLoading(false) } }, - [messageApi] + [showError] ) useEffect(() => { @@ -241,7 +240,6 @@ const Materials = () => { return ( <> - {contextHolder} diff --git a/src/components/Dashboard/Management/NoteTypes.jsx b/src/components/Dashboard/Management/NoteTypes.jsx index b951947..16d4471 100644 --- a/src/components/Dashboard/Management/NoteTypes.jsx +++ b/src/components/Dashboard/Management/NoteTypes.jsx @@ -1,5 +1,5 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewNoteType from './NoteTypes/NewNoteType' import ObjectTable from '../common/ObjectTable' import PlusIcon from '../../Icons/PlusIcon' @@ -11,7 +11,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const NoteTypes = () => { - const [messageApi, contextHolder] = message.useMessage() const [newNoteTypeOpen, setNewNoteTypeOpen] = useState(false) const tableRef = useRef() @@ -46,7 +45,6 @@ const NoteTypes = () => { return ( <> - {contextHolder} @@ -85,7 +83,6 @@ const NoteTypes = () => { { setNewNoteTypeOpen(false) - messageApi.success('New note type created successfully.') tableRef.current?.reload() }} reset={!newNoteTypeOpen} diff --git a/src/components/Dashboard/Management/NoteTypes/NewNoteType.jsx b/src/components/Dashboard/Management/NoteTypes/NewNoteType.jsx index 670bb20..f5f3380 100644 --- a/src/components/Dashboard/Management/NoteTypes/NewNoteType.jsx +++ b/src/components/Dashboard/Management/NoteTypes/NewNoteType.jsx @@ -66,9 +66,11 @@ const NewNoteType = ({ onOk }) => { loading={submitLoading} formValid={formValid} title='New Note Type' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Management/Notes/NewNote.jsx b/src/components/Dashboard/Management/Notes/NewNote.jsx index 5f279bd..60efe40 100644 --- a/src/components/Dashboard/Management/Notes/NewNote.jsx +++ b/src/components/Dashboard/Management/Notes/NewNote.jsx @@ -31,9 +31,11 @@ const NewNote = ({ onOk, defaultValues = {} }) => { loading={submitLoading} formValid={formValid} title='New Note' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Management/Parts.jsx b/src/components/Dashboard/Management/Parts.jsx index dc2e6fe..2e9083b 100644 --- a/src/components/Dashboard/Management/Parts.jsx +++ b/src/components/Dashboard/Management/Parts.jsx @@ -2,7 +2,7 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import ObjectTable from '../common/ObjectTable' import NewPart from './Parts/NewPart' @@ -18,8 +18,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const Parts = (filter) => { - const [messageApi, contextHolder] = message.useMessage() - const [newPartOpen, setNewPartOpen] = useState(false) const tableRef = useRef() const [viewMode, setViewMode] = useViewMode('part') @@ -51,7 +49,6 @@ const Parts = (filter) => { return ( <> - {contextHolder} @@ -93,7 +90,6 @@ const Parts = (filter) => { { setNewPartOpen(false) - messageApi.success('Part created successfully!') tableRef.current?.reload() }} reset={newPartOpen} diff --git a/src/components/Dashboard/Management/Parts/NewPart.jsx b/src/components/Dashboard/Management/Parts/NewPart.jsx index 4f1f152..fb5bd42 100644 --- a/src/components/Dashboard/Management/Parts/NewPart.jsx +++ b/src/components/Dashboard/Management/Parts/NewPart.jsx @@ -103,9 +103,11 @@ const NewPart = ({ onOk, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Part' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Management/Products.jsx b/src/components/Dashboard/Management/Products.jsx index 2eb07a4..cb97198 100644 --- a/src/components/Dashboard/Management/Products.jsx +++ b/src/components/Dashboard/Management/Products.jsx @@ -8,7 +8,6 @@ import { Space, Modal, Dropdown, - message, Tag, Checkbox, Popover, @@ -31,7 +30,6 @@ import ListIcon from '../../Icons/ListIcon' import useViewMode from '../hooks/useViewMode' const Products = () => { - const [messageApi, contextHolder] = message.useMessage() const navigate = useNavigate() const [newProductOpen, setNewProductOpen] = useState(false) const tableRef = useRef() @@ -322,7 +320,6 @@ const Products = () => { return ( <> - {contextHolder} @@ -363,7 +360,6 @@ const Products = () => { { setNewProductOpen(false) - messageApi.success('Product created successfully!') tableRef.current?.reload() }} reset={newProductOpen} diff --git a/src/components/Dashboard/Management/Products/NewProduct.jsx b/src/components/Dashboard/Management/Products/NewProduct.jsx index ea70cef..ad21f70 100644 --- a/src/components/Dashboard/Management/Products/NewProduct.jsx +++ b/src/components/Dashboard/Management/Products/NewProduct.jsx @@ -88,9 +88,11 @@ const NewProduct = ({ onOk, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Product' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Management/TaxRates.jsx b/src/components/Dashboard/Management/TaxRates.jsx index ac47674..dbc791a 100644 --- a/src/components/Dashboard/Management/TaxRates.jsx +++ b/src/components/Dashboard/Management/TaxRates.jsx @@ -1,5 +1,5 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewTaxRate from './TaxRates/NewTaxRate' import ObjectTable from '../common/ObjectTable' import PlusIcon from '../../Icons/PlusIcon' @@ -11,7 +11,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const TaxRates = () => { - const [messageApi, contextHolder] = message.useMessage() const [newTaxRateOpen, setNewTaxRateOpen] = useState(false) const tableRef = useRef() @@ -45,7 +44,6 @@ const TaxRates = () => { return ( <> - {contextHolder} @@ -84,7 +82,6 @@ const TaxRates = () => { { setNewTaxRateOpen(false) - messageApi.success('New tax rate created successfully.') tableRef.current?.reload() }} reset={!newTaxRateOpen} diff --git a/src/components/Dashboard/Management/TaxRates/NewTaxRate.jsx b/src/components/Dashboard/Management/TaxRates/NewTaxRate.jsx index ec99bfa..72b5a4d 100644 --- a/src/components/Dashboard/Management/TaxRates/NewTaxRate.jsx +++ b/src/components/Dashboard/Management/TaxRates/NewTaxRate.jsx @@ -61,9 +61,11 @@ const NewTaxRate = ({ onOk, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Tax Rate' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Management/TaxRecords.jsx b/src/components/Dashboard/Management/TaxRecords.jsx index 15e85ee..a96f5cb 100644 --- a/src/components/Dashboard/Management/TaxRecords.jsx +++ b/src/components/Dashboard/Management/TaxRecords.jsx @@ -1,5 +1,5 @@ import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewTaxRecord from './TaxRecords/NewTaxRecord' import ObjectTable from '../common/ObjectTable' import PlusIcon from '../../Icons/PlusIcon' @@ -11,7 +11,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const TaxRecords = () => { - const [messageApi, contextHolder] = message.useMessage() const [newTaxRecordOpen, setNewTaxRecordOpen] = useState(false) const tableRef = useRef() @@ -46,7 +45,6 @@ const TaxRecords = () => { return ( <> - {contextHolder} @@ -85,7 +83,6 @@ const TaxRecords = () => { { setNewTaxRecordOpen(false) - messageApi.success('New tax record created successfully.') tableRef.current?.reload() }} reset={!newTaxRecordOpen} diff --git a/src/components/Dashboard/Management/TaxRecords/NewTaxRecord.jsx b/src/components/Dashboard/Management/TaxRecords/NewTaxRecord.jsx index 081bb53..5661712 100644 --- a/src/components/Dashboard/Management/TaxRecords/NewTaxRecord.jsx +++ b/src/components/Dashboard/Management/TaxRecords/NewTaxRecord.jsx @@ -61,9 +61,11 @@ const NewTaxRecord = ({ onOk, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Tax Record' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Management/Users/NewUser.jsx b/src/components/Dashboard/Management/Users/NewUser.jsx index 64a7499..6b78e64 100644 --- a/src/components/Dashboard/Management/Users/NewUser.jsx +++ b/src/components/Dashboard/Management/Users/NewUser.jsx @@ -1,18 +1,18 @@ import PropTypes from 'prop-types' -import { useState } from 'react' +import { useState, useEffect } from 'react' import axios from 'axios' import { useMediaQuery } from 'react-responsive' import { Form, Input, Button, - message, Typography, Flex, Steps, Descriptions, Divider } from 'antd' +import { useMessageContext } from '../../context/MessageContext' import config from '../../../../config' @@ -27,7 +27,7 @@ const initialNewUserForm = { } const NewUser = ({ onOk, reset }) => { - const [messageApi, contextHolder] = message.useMessage() + const { showError } = useMessageContext() const [newUserLoading, setNewUserLoading] = useState(false) const [currentStep, setCurrentStep] = useState(0) const [nextEnabled, setNextEnabled] = useState(false) @@ -88,7 +88,7 @@ const NewUser = ({ onOk, reset }) => { }) onOk() } catch (error) { - messageApi.error('Error creating new user: ' + error.message) + showError('Error creating new user: ' + error.message) } finally { setNewUserLoading(false) } @@ -181,8 +181,6 @@ const NewUser = ({ onOk, reset }) => { return ( - {contextHolder} - {!isMobile && (
{ - const [messageApi, contextHolder] = message.useMessage() const [newVendorOpen, setNewVendorOpen] = useState(false) const tableRef = useRef() @@ -45,7 +44,6 @@ const Vendors = () => { return ( <> - {contextHolder} @@ -84,7 +82,6 @@ const Vendors = () => { { setNewVendorOpen(false) - messageApi.success('New vendor created successfully.') tableRef.current?.reload() }} reset={!newVendorOpen} diff --git a/src/components/Dashboard/Management/Vendors/NewVendor.jsx b/src/components/Dashboard/Management/Vendors/NewVendor.jsx index fc72259..e5ea7d5 100644 --- a/src/components/Dashboard/Management/Vendors/NewVendor.jsx +++ b/src/components/Dashboard/Management/Vendors/NewVendor.jsx @@ -64,9 +64,11 @@ const NewVendor = ({ onOk, defaultValues }) => { loading={submitLoading} formValid={formValid} title='New Vendor' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Production/GCodeFiles.jsx b/src/components/Dashboard/Production/GCodeFiles.jsx index 9d75e46..becbd61 100644 --- a/src/components/Dashboard/Production/GCodeFiles.jsx +++ b/src/components/Dashboard/Production/GCodeFiles.jsx @@ -1,7 +1,7 @@ // src/gcodefiles.js import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewGCodeFile from './GCodeFiles/NewGCodeFile' import useColumnVisibility from '../hooks/useColumnVisibility' import PlusIcon from '../../Icons/PlusIcon' @@ -14,7 +14,6 @@ import useViewMode from '../hooks/useViewMode' import ColumnViewButton from '../common/ColumnViewButton' const GCodeFiles = () => { - const [messageApi, contextHolder] = message.useMessage() const [newGCodeFileOpen, setNewGCodeFileOpen] = useState(false) const tableRef = useRef() const [viewMode, setViewMode] = useViewMode('gcodeFile') @@ -48,7 +47,6 @@ const GCodeFiles = () => { return ( <> - {contextHolder} @@ -89,7 +87,6 @@ const GCodeFiles = () => { { setNewGCodeFileOpen(false) - messageApi.success('Finished uploading GCode file!') tableRef.current?.reload() }} reset={newGCodeFileOpen} diff --git a/src/components/Dashboard/Production/GCodeFiles/NewGCodeFile.jsx b/src/components/Dashboard/Production/GCodeFiles/NewGCodeFile.jsx index df1e237..1776aa9 100644 --- a/src/components/Dashboard/Production/GCodeFiles/NewGCodeFile.jsx +++ b/src/components/Dashboard/Production/GCodeFiles/NewGCodeFile.jsx @@ -1,9 +1,11 @@ import PropTypes from 'prop-types' +import { useMessageContext } from '../../context/MessageContext' import ObjectInfo from '../../common/ObjectInfo' import NewObjectForm from '../../common/NewObjectForm' import WizardView from '../../common/WizardView' const NewGCodeFile = ({ onOk, defaultValues }) => { + const { showSuccess } = useMessageContext() return ( { loading={submitLoading} formValid={formValid} title='New GCode File' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + showSuccess('Finished uploading GCode file!') + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Production/Jobs.jsx b/src/components/Dashboard/Production/Jobs.jsx index eff9c8a..a8d067b 100644 --- a/src/components/Dashboard/Production/Jobs.jsx +++ b/src/components/Dashboard/Production/Jobs.jsx @@ -1,7 +1,7 @@ // src/Jobs.js import { useState, useRef } from 'react' -import { Button, Flex, Space, Modal, Dropdown, message } from 'antd' +import { Button, Flex, Space, Modal, Dropdown } from 'antd' import NewJob from './Jobs/NewJob.jsx' import useColumnVisibility from '../hooks/useColumnVisibility.js' import PlusIcon from '../../Icons/PlusIcon.jsx' @@ -13,7 +13,6 @@ import useViewMode from '../hooks/useViewMode.js' import ColumnViewButton from '../common/ColumnViewButton.jsx' const Jobs = () => { - const [messageApi, contextHolder] = message.useMessage() const [newJobOpen, setNewJobOpen] = useState(false) const tableRef = useRef() const [viewMode, setViewMode] = useViewMode('job') @@ -50,7 +49,6 @@ const Jobs = () => { return ( <> - {contextHolder} @@ -93,7 +91,6 @@ const Jobs = () => { { setNewJobOpen(false) - messageApi.success('New print job created successfully.') tableRef.current?.reload() }} reset={newJobOpen} diff --git a/src/components/Dashboard/Production/Jobs/NewJob.jsx b/src/components/Dashboard/Production/Jobs/NewJob.jsx index 4ac7bd9..e573ba8 100644 --- a/src/components/Dashboard/Production/Jobs/NewJob.jsx +++ b/src/components/Dashboard/Production/Jobs/NewJob.jsx @@ -1,9 +1,11 @@ import PropTypes from 'prop-types' +import { useMessageContext } from '../../context/MessageContext' import ObjectInfo from '../../common/ObjectInfo' import NewObjectForm from '../../common/NewObjectForm' import WizardView from '../../common/WizardView' const NewJob = ({ onOk, defaultValues }) => { + const { showSuccess } = useMessageContext() return ( { loading={submitLoading} formValid={formValid} title='New Job' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + showSuccess('New job created successfully.') + onOk() + } }} /> ) diff --git a/src/components/Dashboard/Production/Printers.jsx b/src/components/Dashboard/Production/Printers.jsx index 66e6a25..e1ed5f6 100644 --- a/src/components/Dashboard/Production/Printers.jsx +++ b/src/components/Dashboard/Production/Printers.jsx @@ -1,7 +1,7 @@ // src/Printers.js import { useState, useRef } from 'react' -import { Button, message, Dropdown, Space, Flex, Modal } from 'antd' +import { Button, Dropdown, Space, Flex, Modal } from 'antd' import NewPrinter from './Printers/NewPrinter' import PlusIcon from '../../Icons/PlusIcon' import ReloadIcon from '../../Icons/ReloadIcon' @@ -14,7 +14,6 @@ import useViewMode from '../hooks/useViewMode' import useColumnVisibility from '../hooks/useColumnVisibility' const Printers = () => { - const [messageApi, contextHolder] = message.useMessage() const [newPrinterOpen, setNewPrinterOpen] = useState(false) const tableRef = useRef() @@ -50,7 +49,6 @@ const Printers = () => { return ( <> - {contextHolder} @@ -92,7 +90,6 @@ const Printers = () => { { setNewPrinterOpen(false) - messageApi.success('New printer added successfully.') tableRef.current?.reload() }} reset={newPrinterOpen} diff --git a/src/components/Dashboard/Production/Printers/NewPrinter.jsx b/src/components/Dashboard/Production/Printers/NewPrinter.jsx index c1392ae..d414986 100644 --- a/src/components/Dashboard/Production/Printers/NewPrinter.jsx +++ b/src/components/Dashboard/Production/Printers/NewPrinter.jsx @@ -1,9 +1,11 @@ import PropTypes from 'prop-types' +import { useMessageContext } from '../../context/MessageContext' import ObjectInfo from '../../common/ObjectInfo' import NewObjectForm from '../../common/NewObjectForm' import WizardView from '../../common/WizardView' const NewPrinter = ({ onOk, defaultValues }) => { + const { showSuccess } = useMessageContext() return ( { loading={submitLoading} formValid={formValid} title='New Printer' - onSubmit={() => { - handleSubmit() - onOk() + onSubmit={async () => { + const result = await handleSubmit() + if (result) { + showSuccess('New printer added successfully.') + onOk() + } }} /> ) diff --git a/src/components/Dashboard/common/CopyButton.jsx b/src/components/Dashboard/common/CopyButton.jsx index d439d83..8e9a9a0 100644 --- a/src/components/Dashboard/common/CopyButton.jsx +++ b/src/components/Dashboard/common/CopyButton.jsx @@ -1,5 +1,6 @@ import PropTypes from 'prop-types' -import { Button, Tooltip, message } from 'antd' +import { Button, Tooltip } from 'antd' +import { useMessageContext } from '../context/MessageContext' import CopyIcon from '../../Icons/CopyIcon' const CopyButton = ({ @@ -8,17 +9,17 @@ const CopyButton = ({ size = 'small', type = 'text' }) => { - const [messageApi, contextHolder] = message.useMessage() + const { showSuccess, showError } = useMessageContext() const doCopy = (copyText) => { if (navigator && navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard .writeText(copyText) .then(() => { - messageApi.success('Copied to clipboard') + showSuccess('Copied to clipboard') }) .catch(() => { - messageApi.error('Failed to copy') + showError('Failed to copy') }) } else if ( document.queryCommandSupported && @@ -34,21 +35,20 @@ const CopyButton = ({ textarea.select() try { document.execCommand('copy') - messageApi.success('Copied to clipboard') + showSuccess('Copied to clipboard') } catch (err) { console.error(err) console.error(err) - messageApi.error('Failed to copy') + showError('Failed to copy') } document.body.removeChild(textarea) } else { - messageApi.error('Copy not supported in this browser') + showError('Copy not supported in this browser') } } return ( <> - {contextHolder}