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,