Compare commits

...

2 Commits

23 changed files with 137 additions and 88 deletions

View File

@ -184,7 +184,6 @@ const downloadArtifact = async (artifact, destinationPath, webContents) => {
} }
const restartApp = (app) => { const restartApp = (app) => {
console.log('[app-update] restarting app')
app.relaunch() app.relaunch()
app.exit(0) app.exit(0)
} }

View File

@ -111,13 +111,6 @@ export const launchMacInstaller = (
const installScript = buildMacInstallScript(installerPath, logPath) const installScript = buildMacInstallScript(installerPath, logPath)
const promptName = 'farmcontrol' const promptName = 'farmcontrol'
console.log('[app-update] launching macOS installer:', {
installerPath,
installScript,
logPath,
promptName
})
sendProgress(webContents, { sendProgress(webContents, {
phase: 'installing', phase: 'installing',
percent: 0, percent: 0,
@ -140,7 +133,6 @@ export const launchMacInstaller = (
await fs.unlink(logPath).catch(() => {}) await fs.unlink(logPath).catch(() => {})
if (stdout) console.log('[app-update] installer stdout:', stdout)
if (stderr) console.error('[app-update] installer stderr:', stderr) if (stderr) console.error('[app-update] installer stderr:', stderr)
if (error) { if (error) {
@ -174,7 +166,6 @@ export const launchMacInstaller = (
message: message || 'Installation complete. Restarting Farm Control...' message: message || 'Installation complete. Restarting Farm Control...'
}) })
console.log('[app-update] installer completed successfully')
resolve() resolve()
}) })
}) })

View File

@ -157,7 +157,6 @@ function setupWindowEvents() {
}) })
}) })
win.on('enter-full-screen', () => { win.on('enter-full-screen', () => {
console.log('Entered fullscreen')
win.webContents.send('window-state', { win.webContents.send('window-state', {
isFullScreen: true isFullScreen: true
}) })
@ -293,7 +292,6 @@ export function setupMainWindowAppEvents(app) {
export function setupDevAuthServer() { export function setupDevAuthServer() {
const env = (process.env.NODE_ENV || 'development').trim() const env = (process.env.NODE_ENV || 'development').trim()
if (env == 'development') { if (env == 'development') {
console.log('Starting development auth web server...')
import('express').then(({ default: express }) => { import('express').then(({ default: express }) => {
const app = express() const app = express()
const port = 3500 const port = 3500
@ -310,11 +308,7 @@ export function setupDevAuthServer() {
} }
}) })
app.listen(port, () => { app.listen(port, () => {})
console.log(`Dev auth server running on http://localhost:${port}`)
})
}) })
} else {
console.log('Will use url scheme instead of auth server.')
} }
} }

View File

@ -9,14 +9,7 @@ const DEBUG_PREFIX = '[app-update][win-progress]'
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)) const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
const debugLog = (message, details) => { const debugLog = () => {}
if (details === undefined) {
console.log(`${DEBUG_PREFIX} ${message}`)
return
}
console.log(`${DEBUG_PREFIX} ${message}`, details)
}
const decodeMsiLogBuffer = (buffer) => { const decodeMsiLogBuffer = (buffer) => {
if (!buffer?.length) return '' if (!buffer?.length) return ''

View File

@ -191,7 +191,7 @@ const AppPasswordInfo = () => {
<Modal <Modal
open={regenerateSecretOpen} open={regenerateSecretOpen}
destroyOnClose destroyOnHidden={true}
width={650} width={650}
onCancel={() => { onCancel={() => {
actionHandlerRef.current?.clearAction?.() actionHandlerRef.current?.clearAction?.()

View File

@ -229,7 +229,7 @@ const FilamentInfo = () => {
footer={null} footer={null}
width={700} width={700}
onCancel={() => setNewFilamentSkuOpen(false)} onCancel={() => setNewFilamentSkuOpen(false)}
destroyOnClose destroyOnHidden={true}
> >
<NewFilamentSku <NewFilamentSku
onOk={() => { onOk={() => {

View File

@ -184,7 +184,7 @@ const PartInfo = () => {
footer={null} footer={null}
width={700} width={700}
onCancel={() => setNewPartSkuOpen(false)} onCancel={() => setNewPartSkuOpen(false)}
destroyOnClose destroyOnHidden={true}
> >
<NewPartSku <NewPartSku
onOk={() => { onOk={() => {

View File

@ -188,7 +188,7 @@ const ProductInfo = () => {
footer={null} footer={null}
width={700} width={700}
onCancel={() => setNewProductSkuOpen(false)} onCancel={() => setNewProductSkuOpen(false)}
destroyOnClose destroyOnHidden={true}
> >
<NewProductSku <NewProductSku
onOk={() => { onOk={() => {

View File

@ -239,7 +239,7 @@ const UserInfo = () => {
<Modal <Modal
open={newAppPasswordOpen} open={newAppPasswordOpen}
destroyOnClose destroyOnHidden={true}
width={700} width={700}
onCancel={() => { onCancel={() => {
actionHandlerRef.current?.clearAction?.() actionHandlerRef.current?.clearAction?.()

View File

@ -66,8 +66,6 @@ const DeployJob = ({
} }
}, [objectData]) }, [objectData])
console.log(objectData)
const steps = [ const steps = [
{ {
title: 'Confirm', title: 'Confirm',

View File

@ -1,6 +1,9 @@
import { useRef, useState } from 'react' import { useRef, useState } from 'react'
import { useLocation } from 'react-router-dom' import { useLocation } from 'react-router-dom'
import { Space, Flex, Card } from 'antd' import { Space, Flex, Card, Button, Modal } from 'antd'
import NewPrinterProfile, {
EditPrinterProfile
} from '../PrinterProfiles/NewPrinterProfile'
import { LoadingOutlined } from '@ant-design/icons' import { LoadingOutlined } from '@ant-design/icons'
import loglevel from 'loglevel' import loglevel from 'loglevel'
import config from '../../../../config.js' import config from '../../../../config.js'
@ -22,17 +25,20 @@ import InfoCollapsePlaceholder from '../../common/InfoCollapsePlaceholder.jsx'
import DocumentPrintButton from '../../common/DocumentPrintButton.jsx' import DocumentPrintButton from '../../common/DocumentPrintButton.jsx'
import UserNotifierToggle from '../../common/UserNotifierToggle.jsx' import UserNotifierToggle from '../../common/UserNotifierToggle.jsx'
import ScrollBox from '../../common/ScrollBox.jsx' import ScrollBox from '../../common/ScrollBox.jsx'
import PlusIcon from '../../../Icons/PlusIcon.jsx'
import PrinterProfileIcon from '../../../Icons/PrinterProfileIcon.jsx'
const log = loglevel.getLogger('PrinterInfo') const log = loglevel.getLogger('PrinterInfo')
log.setLevel(config.logLevel) log.setLevel(config.logLevel)
const PrinterInfo = () => { const PrinterInfo = () => {
const location = useLocation() const location = useLocation()
const objectFormRef = useRef(null) const objectFormRef = useRef(null)
const profilesTableRef = useRef(null)
const actionHandlerRef = useRef(null) const actionHandlerRef = useRef(null)
const printerId = new URLSearchParams(location.search).get('printerId') const printerId = new URLSearchParams(location.search).get('printerId')
const [collapseState, updateCollapseState] = useCollapseState('PrinterInfo', { const [collapseState, updateCollapseState] = useCollapseState('PrinterInfo', {
info: true, info: true,
profiles: true,
stocks: true, stocks: true,
notes: true, notes: true,
auditLogs: false auditLogs: false
@ -46,6 +52,15 @@ const PrinterInfo = () => {
loading: false, loading: false,
objectData: {} objectData: {}
}) })
const [profileModal, setProfileModal] = useState({
open: false,
profileId: null
})
const handleProfileSaved = () => {
setProfileModal({ open: false, profileId: null })
profilesTableRef.current?.reload()
}
const actions = { const actions = {
edit: () => { edit: () => {
@ -85,6 +100,7 @@ const PrinterInfo = () => {
disabled={objectFormState.loading} disabled={objectFormState.loading}
items={[ items={[
{ key: 'info', label: 'Printer Information' }, { key: 'info', label: 'Printer Information' },
{ key: 'profiles', label: 'Printer Profiles' },
{ key: 'notes', label: 'Notes' }, { key: 'notes', label: 'Notes' },
{ key: 'auditLogs', label: 'Audit Logs' } { key: 'auditLogs', label: 'Audit Logs' }
]} ]}
@ -147,31 +163,73 @@ const PrinterInfo = () => {
setEditFormState((prev) => ({ ...prev, ...state })) setEditFormState((prev) => ({ ...prev, ...state }))
}} }}
> >
{({ loading, isEditing, objectData }) => { {({ loading, isEditing, objectData }) => (
return ( <ObjectInfo
<ObjectInfo loading={loading}
loading={loading} indicator={<LoadingOutlined />}
indicator={<LoadingOutlined />} isEditing={isEditing}
isEditing={isEditing} type='printer'
type='printer' objectData={objectData}
objectData={objectData} labelWidth='175px'
labelWidth='175px' visibleProperties={{
visibleProperties={{ currentFilamentStock: false,
currentFilamentStock: false, 'currentFilamentStock._id': false,
'currentFilamentStock._id': false, currentJob: false,
currentJob: false, 'currentJob._id': false,
'currentJob._id': false, currentSubJob: false,
currentSubJob: false, 'currentSubJob._id': false,
'currentSubJob._id': false, alerts: false
alerts: false }}
}} />
/> )}
)
}}
</ObjectForm> </ObjectForm>
</InfoCollapse> </InfoCollapse>
</ActionHandler> </ActionHandler>
<InfoCollapse
title='Printer Profiles'
icon={<PrinterProfileIcon />}
active={collapseState.profiles}
onToggle={(expanded) => updateCollapseState('profiles', expanded)}
collapseKey='profiles'
>
{objectFormState.loading ? (
<InfoCollapsePlaceholder />
) : (
<Flex vertical gap='middle'>
<Flex>
<Button
icon={<PlusIcon />}
onClick={() =>
setProfileModal({ open: true, profileId: null })
}
>
New Printer Profile
</Button>
</Flex>
<ObjectTable
ref={profilesTableRef}
type='printerProfile'
masterFilter={{ printer: printerId }}
visibleColumns={{
printer: false,
'printer._id': false
}}
onRowAction={(action, profile) => {
if (action.name === 'edit') {
setProfileModal({
open: true,
profileId: profile._id
})
return true
}
return false
}}
/>
</Flex>
)}
</InfoCollapse>
<InfoCollapse <InfoCollapse
title='Notes' title='Notes'
icon={<NoteIcon />} icon={<NoteIcon />}
@ -206,6 +264,27 @@ const PrinterInfo = () => {
</Flex> </Flex>
</ScrollBox> </ScrollBox>
</Flex> </Flex>
<Modal
open={profileModal.open}
footer={null}
width={1000}
onCancel={() => setProfileModal({ open: false, profileId: null })}
destroyOnHidden
>
{profileModal.open &&
(profileModal.profileId ? (
<EditPrinterProfile
profileId={profileModal.profileId}
printerId={printerId}
onOk={handleProfileSaved}
/>
) : (
<NewPrinterProfile
printerId={printerId}
onOk={handleProfileSaved}
/>
))}
</Modal>
</> </>
) )
} }

View File

@ -285,7 +285,7 @@ const MarketplaceInfo = () => {
onCancel={() => setSyncListingsOpen(false)} onCancel={() => setSyncListingsOpen(false)}
width={500} width={500}
footer={null} footer={null}
destroyOnClose destroyOnHidden={true}
centered centered
> >
<SyncListings <SyncListings
@ -301,7 +301,7 @@ const MarketplaceInfo = () => {
onCancel={() => setSyncOrdersOpen(false)} onCancel={() => setSyncOrdersOpen(false)}
width={500} width={500}
footer={null} footer={null}
destroyOnClose destroyOnHidden={true}
centered centered
> >
<SyncOrders <SyncOrders
@ -317,7 +317,7 @@ const MarketplaceInfo = () => {
onCancel={() => setConfigureModalOpen(false)} onCancel={() => setConfigureModalOpen(false)}
width={650} width={650}
footer={null} footer={null}
destroyOnClose destroyOnHidden={true}
centered centered
> >
<ConfigureMarketplace <ConfigureMarketplace

View File

@ -105,7 +105,7 @@ const ExportListButton = ({
</Dropdown> </Dropdown>
<Modal <Modal
open={odataModalOpen} open={odataModalOpen}
destroyOnClose destroyOnHidden={true}
width={650} width={650}
onCancel={() => setOdataModalOpen(false)} onCancel={() => setOdataModalOpen(false)}
footer={null} footer={null}
@ -114,7 +114,7 @@ const ExportListButton = ({
</Modal> </Modal>
<Modal <Modal
open={rssModalOpen} open={rssModalOpen}
destroyOnClose destroyOnHidden={true}
width={750} width={750}
onCancel={() => setRssModalOpen(false)} onCancel={() => setRssModalOpen(false)}
footer={null} footer={null}

View File

@ -19,7 +19,6 @@ const FilePreview = ({ file, style = {} }) => {
return return
} }
setLoading(true) setLoading(true)
console.log('fetching file content', file)
const objectUrl = await fetchFileContent(file, false) const objectUrl = await fetchFileContent(file, false)
if (objectUrl == null) { if (objectUrl == null) {
setLoading(false) setLoading(false)

View File

@ -220,7 +220,7 @@ const Notification = ({
{showExtraInfo && ( {showExtraInfo && (
<> <>
<Divider style={{ margin: largeSpacing ? '10px 0' : 0 }} /> <Divider style={{ margin: largeSpacing ? '10px 0' : 0 }} />
<Flex justify='space-between' align='center'> <Flex ju stify='space-between' align='center'>
{getNotificationTag(notification.type)} {getNotificationTag(notification.type)}
<TimeDisplay <TimeDisplay
dateTime={notification.createdAt} dateTime={notification.createdAt}

View File

@ -376,7 +376,6 @@ const ObjectChildTable = ({
const currentItems = Array.isArray(itemsSource) ? itemsSource : [] const currentItems = Array.isArray(itemsSource) ? itemsSource : []
const newItems = [...currentItems, newItem] const newItems = [...currentItems, newItem]
console.log('newItems', newItems)
if (typeof onChange === 'function') { if (typeof onChange === 'function') {
onChange(newItems) onChange(newItems)
} }

View File

@ -47,17 +47,20 @@ const ObjectDisplay = ({
}, []) }, [])
// Detect minimal objects that only contain an _id (must be string, not populated object) // Detect minimal objects that only contain an _id (must be string, not populated object)
const isMinimalObject = useCallback((obj) => { const isMinimalObject = useCallback(
if (!obj || typeof obj !== 'object' || Array.isArray(obj)) return false (obj) => {
const keys = Object.keys(obj) if (!obj || typeof obj !== 'object' || Array.isArray(obj)) return false
const id = obj._id const keys = Object.keys(obj)
return ( const id = obj._id
keys.length === 1 && return (
keys[0] === '_id' && keys.length === 1 &&
typeof id === 'string' && keys[0] === '_id' &&
isValidId(id) typeof id === 'string' &&
) isValidId(id)
}, [isValidId]) )
},
[isValidId]
)
// If only an _id is provided, fetch the full object via spotlight // If only an _id is provided, fetch the full object via spotlight
const fetchFullObjectIfNeeded = useCallback( const fetchFullObjectIfNeeded = useCallback(
@ -131,7 +134,14 @@ const ObjectDisplay = ({
cancelled = true cancelled = true
setIsHydrating(false) setIsHydrating(false)
} }
}, [object, fetchFullObjectIfNeeded, isMinimalObject, isValidId, getStringId, token]) }, [
object,
fetchFullObjectIfNeeded,
isMinimalObject,
isValidId,
getStringId,
token
])
if (!objectData) { if (!objectData) {
return <Text type='secondary'>n/a</Text> return <Text type='secondary'>n/a</Text>
} }

View File

@ -43,8 +43,6 @@ const PropertyChanges = ({ type, value }) => {
...flatNew ...flatNew
} }
console.log(combinedChanges)
return ( return (
<Descriptions size='small' column={1}> <Descriptions size='small' column={1}>
{Object.keys(combinedChanges).map((key) => { {Object.keys(combinedChanges).map((key) => {

View File

@ -1770,8 +1770,6 @@ const ApiServerProvider = ({ children }) => {
'launchSession' 'launchSession'
) )
console.log(new URLSearchParams(location.search))
if ( if (
authenticated !== true || authenticated !== true ||
!token || !token ||

View File

@ -303,8 +303,6 @@ const AuthProvider = ({ children }) => {
profileImage?._id ?? profileImage?._id ??
(typeof profileImage === 'string' ? profileImage : null) (typeof profileImage === 'string' ? profileImage : null)
console.log('Fetching profile image:', profileImageId)
if (!token) { if (!token) {
if (profileImageUrlRef.current) { if (profileImageUrlRef.current) {
URL.revokeObjectURL(profileImageUrlRef.current) URL.revokeObjectURL(profileImageUrlRef.current)
@ -372,10 +370,6 @@ const AuthProvider = ({ children }) => {
} }
}, [userProfile?.profileImage, token]) }, [userProfile?.profileImage, token])
useEffect(() => {
console.log('userProfile', userProfile)
}, [userProfile])
const logout = useCallback( const logout = useCallback(
(redirectUri = '/login') => { (redirectUri = '/login') => {
setAuthenticated(false) setAuthenticated(false)

View File

@ -57,7 +57,6 @@ const EmailNotificationTemplate = () => {
) )
} }
case 'newNote': { case 'newNote': {
console.log('newNote metadata', JSON.stringify(metadata, null, 2))
const model = getModelByName(metadata?.note?.parentType) const model = getModelByName(metadata?.note?.parentType)
const infoAction = const infoAction =
model.actions?.find((action) => action.name === 'info') ?? null model.actions?.find((action) => action.name === 'info') ?? null

View File

@ -161,7 +161,6 @@ export const ListingVarient = {
showHyperlink: true, showHyperlink: true,
readOnly: true, readOnly: true,
value: (objectData) => { value: (objectData) => {
console.log('listing product id', objectData?.listing?.product?._id)
return objectData?.listing?.product return objectData?.listing?.product
}, },
required: true, required: true,

View File

@ -244,7 +244,6 @@ export const OrderItem = {
showHyperlink: true, showHyperlink: true,
columnWidth: 300, columnWidth: 300,
masterFilter: (objectData) => { masterFilter: (objectData) => {
console.log(objectData)
if (objectData?.itemType === 'filament' && objectData?.item?._id) { if (objectData?.itemType === 'filament' && objectData?.item?._id) {
return { filament: objectData.item._id } return { filament: objectData.item._id }
} }