Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix breaking changes in backend #60

Closed
wants to merge 15 commits into from
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ledfx",
"version": "2.0.86",
"version": "2.0.87",
"description": "LedFx v2 - BladeMOD",
"author": "YeonV aka Blade",
"private": true,
Expand Down
23 changes: 2 additions & 21 deletions src/components/Dialogs/AddDeviceDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import {
} from '@mui/material';
import useStore from '../../store/useStore';
import SchemaForm from '../SchemaForm/SchemaForm/SchemaForm';
import { Ledfx } from '../../api/ledfx'

const PREFIX = 'AddDeviceDialog';

Expand Down Expand Up @@ -67,7 +66,7 @@ const AddDeviceDialog = () => {
const getVirtuals = useStore((state) => state.getVirtuals);
const addDevice = useStore((state) => state.addDevice);
const updateDevice = useStore((state) => state.updateDevice);
const setAddWled = useStore((state) => state.setAddWLed);

const devices = useStore((state) => state.devices);
const open = useStore((state) => state.dialogs.addDevice?.open || false);
const deviceId = useStore((state) => state.dialogs.addDevice?.edit || false);
Expand Down Expand Up @@ -110,25 +109,7 @@ const AddDeviceDialog = () => {
Object.keys(initial.config).length === 0 &&
initial.config?.constructor === Object
) {
if (deviceType === 'wled') {
if (cleanedModel.ip_address) {
Ledfx(`/api/fetch/${encodeURIComponent(
`http://${(cleanedModel.ip_address as string)
.replace('https://', '').replace('http://', '').replaceAll('/', '')}/json/nodes`
)}`, 'GET', {}).then((data: any) => {
const deviceIps = Object.values(devices).map((device: any) => device.config.ip_address)
const newDevices = [] as { name: string, ip_address: string}[]
data.nodes.forEach((node: any) => {
if (node.ip && !deviceIps.includes(node.ip)) {
newDevices.push({ name: node.name, ip_address: node.ip})
}
})
if (newDevices.length > 0) {
setAddWled(newDevices)
}
})
}
}

addDevice({
type: deviceType,
config: { ...defaultModel, ...cleanedModel },
Expand Down
128 changes: 90 additions & 38 deletions src/components/Dialogs/SceneDialogs/EditSceneDialog.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,13 @@ const EditSceneDialog = () => {
const [midiActivate, setMIDIActivate] = useState('')
const [invalid, setInvalid] = useState(false)
const [lp, setLp] = useState(undefined as any)
// const [user_presets, setUp] = useState(undefined as any)
const [disabledPSelector, setDisabledPSelector] = useState([] as string[])
const [scVirtualsToIgnore, setScVirtualsToIgnore] = useState<string[]>([])
const medium = useMediaQuery('(max-width: 920px )')
const small = useMediaQuery('(max-width: 580px )')
const xsmall = useMediaQuery('(max-width: 480px )')

const { user_presets } = useStore((state) => state.config)
const { effects } = useStore((state) => state.schemas)
const scenes = useStore((state) => state.scenes)
const open = useStore((state) => state.dialogs.addScene?.edit || false)
Expand All @@ -70,6 +70,8 @@ const EditSceneDialog = () => {
const addScene = useStore((state) => state.addScene)
const getScenes = useStore((state) => state.getScenes)
const getLedFxPresets = useStore((state) => state.getLedFxPresets)
const getUserPresets = useStore((state) => state.getUserPresets)
// const getFullConfig = useStore((state) => state.getFullConfig)

const toggletSceneActiveTag = useStore(
(state) => state.ui.toggletSceneActiveTag
Expand Down Expand Up @@ -147,6 +149,10 @@ const EditSceneDialog = () => {
setScVirtualsToIgnore([])
setDialogOpenAddScene(false, false)
}

const sVirtuals =
scenes[data.name?.toLowerCase().replaceAll(' ', '-')]?.virtuals || {}

const handleAddSceneWithVirtuals = () => {
addScene(
name,
Expand All @@ -155,10 +161,7 @@ const EditSceneDialog = () => {
url,
payload,
midiActivate,
filterKeys(
scenes[data.name?.toLowerCase().replaceAll(' ', '-')].virtuals,
scVirtualsToIgnore
)
filterKeys(sVirtuals, scVirtualsToIgnore)
).then(() => {
getScenes()
})
Expand All @@ -174,11 +177,17 @@ const EditSceneDialog = () => {
}

useEffect(() => {
getLedFxPresets().then((ledfx_presets) => {
setLp(ledfx_presets)
})
}, [])
// if (open) getFullConfig()

if (open)
getLedFxPresets().then((ledfx_presets) => {
setLp(ledfx_presets)
})
if (open) getUserPresets()
// .then((u_presets) => {
// // setUp(u_presets)
// })
}, [open])
useEffect(() => {
if (open) activateScene(data.name?.toLowerCase().replaceAll(' ', '-'))
}, [open])
Expand Down Expand Up @@ -212,6 +221,8 @@ const EditSceneDialog = () => {
}
}, [])

const { user_presets } = useStore((state) => state.config)

const renderPresets = (ledfx_presets: any, dev: string, effectId: string) => {
if (ledfx_presets) {
const ledfxPreset =
Expand All @@ -220,13 +231,7 @@ const EditSceneDialog = () => {
Object.keys(ledfx_presets).find(
(k) =>
JSON.stringify(ordered((ledfx_presets[k] as any).config)) ===
JSON.stringify(
ordered(
scenes[data.name?.toLowerCase().replaceAll(' ', '-')].virtuals[
dev
].config
)
)
JSON.stringify(ordered(sVirtuals[dev].config))
)
const userPresets =
user_presets[effectId] &&
Expand All @@ -235,13 +240,7 @@ const EditSceneDialog = () => {
(k) =>
JSON.stringify(
ordered((user_presets[effectId][k] as any).config)
) ===
JSON.stringify(
ordered(
scenes[data.name?.toLowerCase().replaceAll(' ', '-')]
.virtuals[dev].config
)
) && k
) === JSON.stringify(ordered(sVirtuals[dev].config)) && k
)
.filter((n) => !!n)
const userPreset =
Expand All @@ -250,17 +249,29 @@ const EditSceneDialog = () => {
return ledfxPreset || userPreset ? (
<Select
defaultValue={ledfxPreset || userPreset}
onChange={(e) =>
e.target.value &&
activatePreset(
dev,
'default_presets',
scenes[data.name?.toLowerCase().replaceAll(' ', '-')].virtuals[
dev
].type,
e.target.value
).then(() => getVirtuals())
}
onChange={(e) => {
let category = 'ledfx_presets'
if (
user_presets &&
user_presets[effectId] &&
Object.prototype.hasOwnProperty.call(
user_presets[effectId],
e.target.value
)
) {
category = 'user_presets'
}

return (
e.target.value &&
activatePreset(
dev,
category,
sVirtuals[dev].type,
e.target.value
).then(() => getVirtuals())
)
}}
disabled={
scVirtualsToIgnore.indexOf(dev) > -1 ||
disabledPSelector.indexOf(dev) > -1
Expand Down Expand Up @@ -290,8 +301,51 @@ const EditSceneDialog = () => {
))}
</Select>
) : (
<Select value="Not saved as Preset" disableUnderline>
<Select
defaultValue="Not saved as Preset"
onChange={(e) => {
let category = 'default_presets'
if (
user_presets &&
user_presets[effectId] &&
Object.prototype.hasOwnProperty.call(
user_presets[effectId],
e.target.value
)
) {
category = 'custom_presets'
}

return (
e.target.value &&
activatePreset(
dev,
category,
sVirtuals[dev].type,
e.target.value
).then(() => getVirtuals())
)
}}
disableUnderline
>
<MenuItem value="Not saved as Preset">Not saved as Preset</MenuItem>
{ledfx_presets && <ListSubheader>LedFx Presets</ListSubheader>}
{ledfx_presets &&
Object.keys(ledfx_presets)
.sort((k) => (k === 'reset' ? -1 : 1))
.map((ke, i) => (
<MenuItem key={ke + i} value={ke}>
{ke === 'reset' ? 'Default' : ke}
</MenuItem>
))}
{user_presets && <ListSubheader>User Presets</ListSubheader>}
{user_presets &&
user_presets[effectId] &&
Object.keys(user_presets[effectId]).map((ke, i) => (
<MenuItem key={ke + i} value={ke}>
{ke}
</MenuItem>
))}
</Select>
)
}
Expand Down Expand Up @@ -741,9 +795,7 @@ const EditSceneDialog = () => {
scenes &&
data.name?.toLowerCase().replaceAll(' ', '-') &&
scenes[data.name?.toLowerCase().replaceAll(' ', '-')] &&
Object.keys(
scenes[data.name?.toLowerCase().replaceAll(' ', '-')].virtuals
)
Object.keys(sVirtuals)
.filter(
(d) =>
!!scenes[data.name?.toLowerCase().replaceAll(' ', '-')]
Expand Down
Loading