diff --git a/mods/bambu/bambu.js b/mods/bambu/bambu.js index bda5fdb9..ef9847cf 100644 --- a/mods/bambu/bambu.js +++ b/mods/bambu/bambu.js @@ -30,12 +30,14 @@ self.kiri.load(api => { }; ws.onclose = () => { socket.open = false; + socket.ws = undefined; }; ws.onmessage = msg => { let data = JSON.parse(msg.data); let { serial, message, error } = data; if (error) { console.log({ serial, error }); + printer_status(`error: ${error}`); } else if (serial) { let rec = status[serial] = deepMerge(status[serial] || {}, message); if (selected?.rec.serial === serial) { @@ -109,7 +111,7 @@ self.kiri.load(api => { } function printer_del() { - if (!selected.name) { + if (!selected?.name) { return; } delete printers[selected.name]; @@ -183,6 +185,10 @@ self.kiri.load(api => { } } + function printer_status(msg) { + $('bbl_status').value = msg; + } + function render_list() { let list = Object.keys(printers).map(name => { return h.option({ _: name, value: name }) @@ -238,7 +244,11 @@ self.kiri.load(api => { h.label({ class: "set-header dev-sel" }, [ h.a('bambu manager') ]), h.select({ id: "bbl_sel", class: "dev-list" }, []), h.div({ class: "grow gap3 j-end" }, [ - h.button({ id: "bbl_hide", _: '', onclick(ev) { + h.button({ + id: "bbl_hide", + _: '', + class: "a-center", + onclick(ev) { if (ev.target.hide === true) { ev.target.hide = false; $('bbl_code').type = 'text'; @@ -334,7 +344,7 @@ self.kiri.load(api => { ]), h.div({ class: "t-body t-inset f-col gap3 pad4" }, [ h.div({ class: "set-header", onclick() { - console.log('bbl reload files'); + // console.log('bbl reload files'); list_files(); } }, h.a({ class: "flex f-row grow" }, [ h.label('files'), @@ -347,7 +357,7 @@ self.kiri.load(api => { h.div({ class: "set-sep "}), h.div({ class: "gap4" }, [ h.label({ class: "set-header dev-sel" }, [ h.a('status') ]), - h.input({ id: "bbl_status", class: "grow" }), + h.input({ id: "bbl_status", class: "t-left mono grow" }), ]) ]), { before: true }); select = modal.bbl_sel; @@ -370,8 +380,9 @@ self.kiri.load(api => { api.event.on("modal.hide", which => { if (selected?.rec.modified) { api.conf.save(); - selected = undefined; } + selected = undefined; + status = {}; }); api.event.on("device.selected", devsel => { diff --git a/mods/bambu/init.js b/mods/bambu/init.js index 31cf257f..005a4aef 100644 --- a/mods/bambu/init.js +++ b/mods/bambu/init.js @@ -120,8 +120,9 @@ module.exports = async (server) => { secure: "implicit", secureOptions: { rejectUnauthorized: false } }); - } catch (err) { + } catch (error) { util.log({ ftp_error: error }); + throw error; } return client; } @@ -174,6 +175,10 @@ module.exports = async (server) => { return JSON.stringify(obj); } + function wsend(msg) { + wsopen.forEach(ws => ws.send(JSON.stringify(msg))); + } + if (!(env.debug || env.electron)) { util.log('no valid context for bambu'); return; @@ -238,7 +243,7 @@ module.exports = async (server) => { case "monitor": get_mqtt(host, code, serial, message => { // util.log({ mqtt_msg: serial }); - wsopen.forEach(ws => ws.send(JSON.stringify({ serial, message }))); + wsend({ serial, message }); }, mqtt => { // on open only }).then(mqtt => { @@ -258,10 +263,7 @@ module.exports = async (server) => { }); }).catch(error => { util.log({ mqtt_err: error }); - ws.send(JSON.stringify({ - serial, - error: error.message || error.toString() - })); + wsend({ serial, error: error.message || error.toString() }); }); break; case "files": @@ -274,7 +276,9 @@ module.exports = async (server) => { size: file.size }; }); - wsopen.forEach(ws => ws.send(JSON.stringify({ serial, message: { files }}))); + wsend({ serial, message: { files }}); + }).catch(error => { + wsend({ serial, error: error.message || error.toString() }); }); break; case "keepalive":