diff --git a/frontend/app/player/MessageDistributor/managers/AssistManager.ts b/frontend/app/player/MessageDistributor/managers/AssistManager.ts index d3d6f9570..d5de4da7f 100644 --- a/frontend/app/player/MessageDistributor/managers/AssistManager.ts +++ b/frontend/app/player/MessageDistributor/managers/AssistManager.ts @@ -251,8 +251,8 @@ export default class AssistManager { this.socket.emit("click", [ data.x, data.y ]); } - private toggleRemoteControl(newState: boolean){ - if (newState) { + private toggleRemoteControl(enable: boolean){ + if (enable) { this.md.overlay.addEventListener("mousemove", this.onMouseMove) this.md.overlay.addEventListener("click", this.onMouseClick) this.md.overlay.addEventListener("wheel", this.onWheel) diff --git a/frontend/app/player/MessageDistributor/managers/DOMManager.ts b/frontend/app/player/MessageDistributor/managers/DOMManager.ts index 685a34f2c..b698bf062 100644 --- a/frontend/app/player/MessageDistributor/managers/DOMManager.ts +++ b/frontend/app/player/MessageDistributor/managers/DOMManager.ts @@ -149,11 +149,11 @@ export default class DOMManager extends ListWalker { //this.screen.setDisconnected(false); this.stylesManager.reset(); - break; + return case "create_text_node": this.nl[ msg.id ] = document.createTextNode(''); this.insertNode(msg); - break; + return case "create_element_node": // console.log('elementnode', msg) if (msg.svg) { @@ -168,20 +168,20 @@ export default class DOMManager extends ListWalker { } this.removeBodyScroll(msg.id); this.removeAutocomplete(msg); - break; + return case "move_node": this.insertNode(msg); - break; + return case "remove_node": node = this.nl[ msg.id ] - if (!node) { logger.error("Node not found", msg); break; } - if (!node.parentElement) { logger.error("Parent node not found", msg); break; } + if (!node) { logger.error("Node not found", msg); return } + if (!node.parentElement) { logger.error("Parent node not found", msg); return } node.parentElement.removeChild(node); - break; + return case "set_node_attribute": let { id, name, value } = msg; node = this.nl[ id ]; - if (!node) { logger.error("Node not found", msg); break; } + if (!node) { logger.error("Node not found", msg); return } if (this.isLink[ id ] && name === "href") { // @ts-ignore TODO: global ENV type if (value.startsWith(window.ENV.ASSETS_HOST)) { // Hack for queries in rewrited urls @@ -198,43 +198,54 @@ export default class DOMManager extends ListWalker { logger.error(e, msg); } this.removeBodyScroll(msg.id); - break; + return case "remove_node_attribute": - if (!this.nl[ msg.id ]) { logger.error("Node not found", msg); break; } + if (!this.nl[ msg.id ]) { logger.error("Node not found", msg); return } try { (this.nl[ msg.id ] as HTMLElement).removeAttribute(msg.name); } catch(e) { logger.error(e, msg); } - break; + return case "set_input_value": - if (!this.nl[ msg.id ]) { logger.error("Node not found", msg); break; } - const val = msg.mask > 0 ? '*'.repeat(msg.mask) : msg.value; - (this.nl[ msg.id ] as HTMLInputElement).value = val; - break; + node = this.nl[ msg.id ] + if (!node) { logger.error("Node not found", msg); return } + if (!(node instanceof HTMLInputElement || node instanceof HTMLTextAreaElement)) { + logger.error("Trying to set value of non-Input element", msg) + return + } + const val = msg.mask > 0 ? '*'.repeat(msg.mask) : msg.value + doc = this.screen.document + if (doc && node === doc.activeElement) { + // For the case of Remote Control + node.onblur = () => { node.value = val } + return + } + node.value = val + return case "set_input_checked": node = this.nl[ msg.id ]; - if (!node) { logger.error("Node not found", msg); break; } + if (!node) { logger.error("Node not found", msg); return } (node as HTMLInputElement).checked = msg.checked; - break; + return case "set_node_data": case "set_css_data": node = this.nl[ msg.id ] - if (!node) { logger.error("Node not found", msg); break; } + if (!node) { logger.error("Node not found", msg); return } // @ts-ignore node.data = msg.data; if (node instanceof HTMLStyleElement) { doc = this.screen.document doc && rewriteNodeStyleSheet(doc, node) } - break; + return case "css_insert_rule": node = this.nl[ msg.id ]; - if (!node) { logger.error("Node not found", msg); break; } + if (!node) { logger.error("Node not found", msg); return } if (!(node instanceof HTMLStyleElement) // link or null || node.sheet == null) { logger.warn("Non-style node in CSS rules message (or sheet is null)", msg); - break; + return } try { node.sheet.insertRule(msg.rule, msg.index) @@ -246,21 +257,21 @@ export default class DOMManager extends ListWalker { logger.warn("Cannot insert rule.", e, msg) } } - break; + return case "css_delete_rule": node = this.nl[ msg.id ]; - if (!node) { logger.error("Node not found", msg); break; } + if (!node) { logger.error("Node not found", msg); return } if (!(node instanceof HTMLStyleElement) // link or null || node.sheet == null) { logger.warn("Non-style node in CSS rules message (or sheet is null)", msg); - break; + return } try { node.sheet.deleteRule(msg.index) } catch (e) { logger.warn(e, msg) } - break; + return case "create_i_frame_document": node = this.nl[ msg.frameID ]; // console.log('ifr', msg, node) @@ -282,17 +293,7 @@ export default class DOMManager extends ListWalker { } else { logger.warn("Context message host is not Element", msg) } - - break; - //not sure what to do with this one - //case "disconnected": - //setTimeout(() => { - // if last one - //if (this.msgs[ this.msgs.length - 1 ] === msg) { - // this.setDisconnected(true); - // } - //}, 10000); - //break; + return } }