const getHost = () => /HOST_PORT=(wss?:\/\/.+)/.exec(window.location.search) export default function listenToACT(callback) { if (!getHost()) return listenOverlayPlugin(callback) return listenActWebSocket(callback) } function listenActWebSocket(callback) { const url = new URLSearchParams(window.location.search) const wsUri = `${url.get("HOST_PORT")}BeforeLogLineRead` || undefined const ws = new WebSocket(wsUri) ws.onerror = () => ws.close() ws.onclose = () => setTimeout(() => { listenActWebSocket(callback) }, 1000) ws.onmessage = function(e, m) { if (e.data === ".") return ws.send(".") const obj = JSON.parse(e.data) if (obj.msgtype === "SendCharName") { return callback(obj.msg) } else if (obj.msgtype === "Chat") { return callback(...obj.msg.split("|")) } } return () => { ws.close() } } function listenOverlayPlugin(callback) { const listener = e => { callback(...e.detail) } document.addEventListener("onLogLine", listener) return () => { document.removeEventListener("onLogLine", listener) } }