commit 4f27647c5bad5fadadd4cc2cdf019e6b06c9a461
parent eec07c3b1bb52a1c113d970ba17d55702962ecb3
Author: William Casarin <jb55@jb55.com>
Date: Fri, 4 Nov 2022 12:53:20 -0700
web: support inline images and links
Diffstat:
3 files changed, 24 insertions(+), 4 deletions(-)
diff --git a/webv2/damus.css b/webv2/damus.css
@@ -20,6 +20,10 @@
cursor: pointer;
}
+.inline-img {
+ width: 100%;
+}
+
.line-top {
width: 2px;
height: 5px;
diff --git a/webv2/damus.js b/webv2/damus.js
@@ -950,6 +950,22 @@ function render_action_bar(ev) {
`
}
+const IMG_REGEX = /(png|jpeg)$/i
+function is_img_url(path) {
+ return IMG_REGEX.test(path)
+}
+
+const URL_REGEX = /(https?:\/\/[^\s\):]+)/g;
+function linkify(text) {
+ return text.replace(URL_REGEX, function(url) {
+ const parsed = new URL(url)
+ if (is_img_url(parsed.pathname))
+ return `<img class="inline-img" src="${url}">`;
+ else
+ return `<a target="_blank" rel="noopener noreferrer" href="${url}">${url}</a>`;
+ })
+}
+
function convert_quote_blocks(content)
{
const split = content.split("\n")
@@ -960,13 +976,13 @@ function convert_quote_blocks(content)
str += "<span class='quote'>"
blockin = true
}
- str += sanitize(line.slice(1))
+ str += linkify(sanitize(line.slice(1)))
} else {
if (blockin) {
blockin = false
str += "</span>"
}
- str += sanitize(line)
+ str += linkify(sanitize(line))
}
return str + "<br/>"
}, "")
diff --git a/webv2/index.html b/webv2/index.html
@@ -6,7 +6,7 @@
<title>Damus</title>
- <link rel="stylesheet" href="damus.css?v=12">
+ <link rel="stylesheet" href="damus.css?v=13">
</head>
<body>
<section class="header">
@@ -41,7 +41,7 @@
<script src="noble-secp256k1.js?v=1"></script>
<script src="bech32.js?v=1"></script>
<script src="nostr.js?v=6"></script>
- <script src="damus.js?v=44"></script>
+ <script src="damus.js?v=45"></script>
<script>
// I have to delay loading to wait for nos2x
const relay = setTimeout(damus_web_init, 100)