Stefan Dej a940115e4e bugfix: fix migrate presets from .mainsail.json to moonraker db
Signed-off-by: Stefan Dej <meteyou@gmail.com>
2021-03-11 14:54:02 +01:00

148 lines
4.1 KiB
JavaScript

import Vue from "vue";
import objectAssignDeep from "object-assign-deep"
export default {
reset({ commit }) {
commit('reset')
},
getData({ commit, dispatch, rootState }, payload) {
commit('setData', payload.value)
if ('tempchart' in payload.value && 'datasetSettings' in payload.value.tempchart) {
commit('setTempchartDatasetSettings', payload.value.tempchart.datasetSettings)
}
if (!rootState.socket.remoteMode) {
dispatch('farm/readStoredPrinters', {}, { root: true })
}
dispatch('printer/init', null, { root: true })
},
setSettings({ commit }, payload) {
commit('setSettings', payload)
Object.keys(payload).forEach(key => {
Vue.prototype.$socket.sendObj('server.database.get_item', { namespace: 'mainsail' }, 'gui/updateSettings', { newVal: payload[key], keyName: key })
})
},
updateSettings({ commit }, payload) {
const keyName = payload.keyName
let newState = payload.newVal
if ('value' in payload && keyName in payload.value && typeof payload.value[keyName] !== "string") {
newState = objectAssignDeep(payload.value[keyName], newState)
}
Vue.prototype.$socket.sendObj('server.database.post_item', { namespace: 'mainsail', key: keyName, value: newState })
commit('void', {}, { root: true })
},
setGcodefilesMetadata({ commit, dispatch, state }, data) {
commit('setGcodefilesMetadata', data)
dispatch('updateSettings', {
keyName: 'gcodefiles',
newVal: state.gcodefiles
})
},
setGcodefilesShowHiddenFiles({ commit, dispatch, state }, data) {
commit('setGcodefilesShowHiddenFiles', data)
dispatch('updateSettings', {
keyName: 'gcodefiles',
newVal: state.gcodefiles
})
},
addPreset({ commit, dispatch, state }, payload) {
commit("addPreset", payload)
dispatch('updateSettings', {
keyName: 'presets',
newVal: state.presets
})
},
updatePreset({ commit, dispatch, state }, payload) {
commit("updatePreset", payload)
dispatch('updateSettings', {
keyName: 'presets',
newVal: state.presets
})
},
deletePreset({ commit, dispatch, state }, payload) {
commit("deletePreset", payload)
dispatch('updateSettings', {
keyName: 'presets',
newVal: state.presets
})
},
setTempchartDatasetSetting({ commit, dispatch, state }, payload) {
commit("setTempchartDatasetSetting", payload)
dispatch('updateSettings', {
keyName: 'tempchart',
newVal: state.tempchart
})
},
setTempchartDatasetAdditionalSensorSetting({ commit, dispatch, state }, payload) {
commit("setTempchartDatasetAdditionalSensorSetting", payload)
dispatch('updateSettings', {
keyName: 'tempchart',
newVal: state.tempchart
})
},
resetMoonrakerDB() {
Vue.prototype.$socket.sendObj('server.database.list', { }, 'gui/resetMoonrakerDB2')
},
resetMoonrakerDB2({ commit }, payload) {
if ('namespaces' in payload && payload.namespaces.includes('mainsail')) {
Vue.prototype.$socket.sendObj('server.database.get_item', { namespace: 'mainsail' }, 'gui/resetMoonrakerDB3')
}
commit('void', {}, { root: true })
},
resetMoonrakerDB3({ commit }, payload) {
if ('value' in payload && Object.keys(payload.value).length) {
Object.keys(payload.value).forEach(key => {
Vue.prototype.$socket.sendObj('server.database.delete_item', { namespace: 'mainsail', key: key })
})
window.location.reload()
}
commit('void', {}, { root: true })
},
//TODO: remove it after a short time of migration. maybe april release
migrateMainsailJson({ state, dispatch, rootState }, payload) {
const settings = {}
Object.keys(payload.state).forEach(key => {
if (key in state) {
if (Array.isArray(payload.state[key])) settings[key] = payload.state[key]
else settings[key] = {...payload.state[key]}
}
if (key === "cooldownGcode") settings["cooldown_gcode"] = payload.state[key]
if (key === "remotePrinters") settings["remote_printers"] = payload.state[key]
})
if (Object.keys(settings).length) {
dispatch('setSettings', settings)
}
Vue.prototype.$socket.sendObj('server.files.delete_file', { path: 'config/.mainsail.json' })
if (!rootState.socket.remoteMode) {
dispatch('farm/readStoredPrinters', {}, { root: true })
}
dispatch('printer/init', null, { root: true })
}
}