diff --git a/front-end/components/bloom.mjs b/front-end/components/bloom.mjs index 0b4166c..3cb59d9 100644 --- a/front-end/components/bloom.mjs +++ b/front-end/components/bloom.mjs @@ -36,10 +36,11 @@ const createBloom = (template, bloom) => { function _formatHashtags(text) { if (!text) return text; - return text.replace( - /\B#[^#]+/g, - (match) => `${match}` - ); + + return text.replace(/(^|\s)(#[A-Za-z0-9_]+)/g, (full, prefix, tag) => { + const encoded = encodeURIComponent(tag.slice(1)); + return `${prefix}${tag}`; + }); } function _formatTimestamp(timestamp) { diff --git a/front-end/views/hashtag.mjs b/front-end/views/hashtag.mjs index 7b7e996..bb00dce 100644 --- a/front-end/views/hashtag.mjs +++ b/front-end/views/hashtag.mjs @@ -14,10 +14,10 @@ import {createHeading} from "../components/heading.mjs"; // Hashtag view: show all tweets containing this tag -function hashtagView(hashtag) { +async function hashtagView(hashtag) { destroy(); - apiService.getBloomsByHashtag(hashtag); + await apiService.getBloomsByHashtag(hashtag); renderOne( state.isLoggedIn,