diff --git a/src/components/SafeLinks.vue b/src/components/SafeLinks.vue deleted file mode 100644 index 19d95cbd7..000000000 --- a/src/components/SafeLinks.vue +++ /dev/null @@ -1,65 +0,0 @@ - - - diff --git a/src/pages/Details.vue b/src/pages/Details.vue index 1a4f78b6e..1d068b92e 100644 --- a/src/pages/Details.vue +++ b/src/pages/Details.vue @@ -9,9 +9,8 @@
{{ monitor.id }}
-

- -

+ +

@@ -281,13 +280,14 @@ import Status from "../components/Status.vue"; import Datetime from "../components/Datetime.vue"; import CountUp from "../components/CountUp.vue"; import Uptime from "../components/Uptime.vue"; -import SafeLinks from "../components/SafeLinks.vue"; import Pagination from "v-pagination-3"; const PingChart = defineAsyncComponent(() => import("../components/PingChart.vue")); import Tag from "../components/Tag.vue"; import CertificateInfo from "../components/CertificateInfo.vue"; import { getMonitorRelativeURL } from "../util.ts"; import { URL } from "whatwg-url"; +import DOMPurify from "dompurify"; +import { marked } from "marked"; import { getResBaseURL } from "../util-frontend"; import { highlight, languages } from "prismjs/components/prism-core"; import "prismjs/components/prism-clike"; @@ -310,8 +310,7 @@ export default { Tag, CertificateInfo, PrismEditor, - ScreenshotDialog, - SafeLinks, + ScreenshotDialog }, data() { return { @@ -403,6 +402,14 @@ export default { screenshotURL() { return getResBaseURL() + this.monitor.screenshot + "?time=" + this.cacheTime; + }, + + descriptionHTML() { + if (this.monitor.description != null) { + return DOMPurify.sanitize(marked(this.monitor.description)); + } else { + return ""; + } } },