From 2f0210b464cc866bd7aefdc6b1f62c5b0864b5ef Mon Sep 17 00:00:00 2001 From: JanefrancessC Date: Thu, 2 Jul 2026 23:50:13 +0100 Subject: [PATCH 1/2] fix: guard hashtagView against slowing down browser --- front-end/views/hashtag.mjs | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/front-end/views/hashtag.mjs b/front-end/views/hashtag.mjs index 7b7e9969..1c63aaca 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,25 @@ 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); + if (hashtag === state.currentHashtag) { + apiService.getBloomsByHashtag(hashtag); + } renderOne( state.isLoggedIn, getLogoutContainer(), "logout-template", - createLogout + createLogout, ); document .querySelector("[data-action='logout']") @@ -32,24 +34,24 @@ function hashtagView(hashtag) { state.isLoggedIn, getLoginContainer(), "login-template", - createLogin + createLogin, ); document - .querySelector("[data-action='login']") - ?.addEventListener("click", handleLogin); + .querySelector("[data-form='login']") + ?.addEventListener("submit", handleLogin); renderOne( state.currentHashtag, getHeadingContainer(), "heading-template", - createHeading + createHeading, ); renderEach( state.hashtagBlooms || [], getTimelineContainer(), "bloom-template", - createBloom + createBloom, ); } -export {hashtagView}; +export { hashtagView }; From 1deac3f330c960e27601f7a4fc5cd133614c004a Mon Sep 17 00:00:00 2001 From: JanefrancessC Date: Fri, 3 Jul 2026 00:05:04 +0100 Subject: [PATCH 2/2] fix: correct the guard --- front-end/views/hashtag.mjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/front-end/views/hashtag.mjs b/front-end/views/hashtag.mjs index 1c63aaca..35598e32 100644 --- a/front-end/views/hashtag.mjs +++ b/front-end/views/hashtag.mjs @@ -17,7 +17,7 @@ import { createHeading } from "../components/heading.mjs"; function hashtagView(hashtag) { destroy(); - if (hashtag === state.currentHashtag) { + if (hashtag !== state.currentHashtag) { apiService.getBloomsByHashtag(hashtag); } @@ -37,8 +37,8 @@ function hashtagView(hashtag) { createLogin, ); document - .querySelector("[data-form='login']") - ?.addEventListener("submit", handleLogin); + .querySelector("[data-action='login']") + ?.addEventListener("click", handleLogin); renderOne( state.currentHashtag,