diff --git a/marko/page/logs-content/components/post/component.js b/marko/page/logs-content/components/post/component.js index cd3f382..854fa8e 100644 --- a/marko/page/logs-content/components/post/component.js +++ b/marko/page/logs-content/components/post/component.js @@ -1,3 +1,7 @@ +const EventEmitter = require("events"); + +let linkSignal = null; + module.exports = class { onCreate(input) { this.state = { @@ -8,8 +12,11 @@ module.exports = class { modal: null, removed: false, multipart: false, + anchored: false, } + this.mounted = false; + this.updatePost(input) } @@ -45,15 +52,51 @@ module.exports = class { this.updatePost(input) } + onMount() { + this.linkSignalCallback = () => { + this.state.anchored = false + } + if (linkSignal == null) { + linkSignal = new EventEmitter() + linkSignal.setMaxListeners(10000) + } + linkSignal.on("signal", this.linkSignalCallback) + + this.state.anchored = window.location.hash.slice(1) === this.input.post.id; + } + + onUnmount() { + linkSignal.removeListener("signal", this.linkSignalCallback) + } + + link() { + linkSignal.emit("signal") + this.state.anchored = true + } + updatePost(input) { this.state.shortName = input.post.nick.split("_").shift() this.state.name = input.post.nick this.state.nameSuffix = "" - this.state.text = input.post.text.replace(/\x02/g, "**").replace(/\x1D/g, "_") + this.state.text = input.post.text.replace(/\x02/g, "**").replace(/\x1D/g, "_").trim(); + + if (this.state.text.startsWith("|")) { + this.state.name = "" + this.state.text = this.state.text.slice(1).trim(); + } + + if (input.post.kind === "text" && !this.state.text.includes("\"") && !this.state.text.includes("|")) { + const colonIndex = this.state.text.indexOf(": "); + if (colonIndex != -1 && colonIndex < this.state.text.indexOf(" ")) { + this.state.text = this.state.text.replace(": ", ": \"") + "\""; + } else { + this.state.text = '"' + this.state.text + '"' + } + } - if (input.post.kind === "text" && !this.state.text.includes("\"")) { - this.state.text = '"' + this.state.text + '"' + if (this.state.text.charAt(0) == this.state.text.charAt(0).toUpperCase()) { + this.state.name = "" } if (!input.post.nick.startsWith("=")) { diff --git a/marko/page/logs-content/components/post/index.marko b/marko/page/logs-content/components/post/index.marko index 8743d43..1cdafc5 100644 --- a/marko/page/logs-content/components/post/index.marko +++ b/marko/page/logs-content/components/post/index.marko @@ -1,6 +1,8 @@ -
+
+