diff --git a/front-end/views/hashtag.mjs b/front-end/views/hashtag.mjs index 7b7e996..58e6301 100644 --- a/front-end/views/hashtag.mjs +++ b/front-end/views/hashtag.mjs @@ -1,4 +1,4 @@ -import {renderOne, renderEach, destroy} from "../lib/render.mjs"; +import { renderOne, renderEach, destroy } from "../lib/render.mjs"; import { state, apiService, @@ -7,23 +7,28 @@ import { getTimelineContainer, getHeadingContainer, } from "../index.mjs"; -import {createLogin, handleLogin} from "../components/login.mjs"; -import {createLogout, handleLogout} from "../components/logout.mjs"; -import {createBloom} from "../components/bloom.mjs"; -import {createHeading} from "../components/heading.mjs"; +import { createLogin, handleLogin } from "../components/login.mjs"; +import { createLogout, handleLogout } from "../components/logout.mjs"; +import { createBloom } from "../components/bloom.mjs"; +import { createHeading } from "../components/heading.mjs"; // Hashtag view: show all tweets containing this tag function hashtagView(hashtag) { destroy(); - apiService.getBloomsByHashtag(hashtag); + const cleanHashtag = hashtag.startsWith("#") ? hashtag : `#${hashtag}`; + + if (state.currentHashtag !== cleanHashtag) { + state.currentHashtag = cleanHashtag; + apiService.getBloomsByHashtag(cleanHashtag.slice(1)); + } renderOne( state.isLoggedIn, getLogoutContainer(), "logout-template", - createLogout + createLogout, ); document .querySelector("[data-action='logout']") @@ -32,7 +37,7 @@ function hashtagView(hashtag) { state.isLoggedIn, getLoginContainer(), "login-template", - createLogin + createLogin, ); document .querySelector("[data-action='login']") @@ -42,14 +47,14 @@ function hashtagView(hashtag) { state.currentHashtag, getHeadingContainer(), "heading-template", - createHeading + createHeading, ); renderEach( state.hashtagBlooms || [], getTimelineContainer(), "bloom-template", - createBloom + createBloom, ); } -export {hashtagView}; +export { hashtagView };