From 1d0320073c5cc0a17b3e6e9b8bfc3ecb61897f37 Mon Sep 17 00:00:00 2001 From: Alaa Date: Wed, 15 Oct 2025 13:05:29 +0100 Subject: [PATCH] Fix hashtag infinite loop causing browser slowdown - Only fetch hashtag data once to prevent repeated API calls - Fixes infinite state-change event loop - Resolves browser performance issues Fixes #3 --- front-end/views/hashtag.mjs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/front-end/views/hashtag.mjs b/front-end/views/hashtag.mjs index 7b7e996..7e76b3f 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,17 +7,20 @@ 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 expectedHashtag = `#${hashtag}`; + if (state.currentHashtag !== expectedHashtag) { + apiService.getBloomsByHashtag(hashtag); + } renderOne( state.isLoggedIn, @@ -52,4 +55,4 @@ function hashtagView(hashtag) { ); } -export {hashtagView}; +export { hashtagView };