From 8f0fef3c3fe5896119e903adf57b860c9db11f03 Mon Sep 17 00:00:00 2001 From: Leonabcd123 <156839416+Leonabcd123@users.noreply.github.com> Date: Sat, 13 Dec 2025 21:34:31 +0200 Subject: [PATCH] Remove jquery from profile page --- frontend/src/ts/pages/profile.ts | 64 ++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/frontend/src/ts/pages/profile.ts b/frontend/src/ts/pages/profile.ts index 098a5a5af..55437c733 100644 --- a/frontend/src/ts/pages/profile.ts +++ b/frontend/src/ts/pages/profile.ts @@ -12,14 +12,14 @@ import * as TestActivity from "../elements/test-activity"; import { TestActivityCalendar } from "../elements/test-activity-calendar"; import { getFirstDayOfTheWeek } from "../utils/date-and-time"; import { addFriend } from "./friends"; -import { qsr } from "../utils/dom"; +import { qs, qsr } from "../utils/dom"; const firstDayOfTheWeek = getFirstDayOfTheWeek(); function reset(): void { - $(".page.pageProfile .error").addClass("hidden"); - $(".page.pageProfile .preloader").removeClass("hidden"); - $(".page.pageProfile .profile").html(` + qs(".page.pageProfile .error")?.hide(); + qs(".page.pageProfile .preloader")?.show(); + qs(".page.pageProfile .profile")?.setHtml(`
@@ -182,7 +182,7 @@ type UpdateOptions = { async function update(options: UpdateOptions): Promise { const getParamExists = checkIfGetParameterExists("isUid"); if (options.data) { - $(".page.pageProfile .preloader").addClass("hidden"); + qs(".page.pageProfile .preloader")?.hide(); await Profile.update("profile", options.data); PbTables.update( // this cast is fine because pb tables can handle the partial data inside user profiles @@ -195,15 +195,15 @@ async function update(options: UpdateOptions): Promise { query: { isUid: getParamExists }, }); - $(".page.pageProfile .preloader").addClass("hidden"); + qs(".page.pageProfile .preloader")?.hide(); if (response.status === 404) { const message = getParamExists ? "User not found" : `User ${options.uidOrName} not found`; - $(".page.pageProfile .preloader").addClass("hidden"); - $(".page.pageProfile .error").removeClass("hidden"); - $(".page.pageProfile .error .message").text(message); + qs(".page.pageProfile .preloader")?.hide(); + qs(".page.pageProfile .error")?.show(); + qs(".page.pageProfile .error .message")?.setText(message); } else if (response.status === 200) { const profile = response.body.data; window.history.replaceState(null, "", `/profile/${profile.name}`); @@ -228,7 +228,7 @@ async function update(options: UpdateOptions): Promise { TestActivity.clear(testActivity); } } else { - // $(".page.pageProfile .failedToLoad").removeClass("hidden"); + // qs(".page.pageProfile .failedToLoad")?.show(); Notifications.add("Failed to load profile: " + response.body.message, -1); return; } @@ -237,23 +237,41 @@ async function update(options: UpdateOptions): Promise { } } -$(".page.pageProfile").on("click", ".profile .userReportButton", () => { - const uid = $(".page.pageProfile .profile").attr("uid") ?? ""; - const name = $(".page.pageProfile .profile").attr("name") ?? ""; +qs(".page.pageProfile")?.on("click", (event: MouseEvent) => { + const target = event.target; + + if (target instanceof HTMLElement) { + if (!target.matches(".profile .userReportButton")) return; + } else { + return; + } + + const uid = qs(".page.pageProfile .profile")?.getAttribute("uid") ?? ""; + const name = qs(".page.pageProfile .profile")?.getAttribute("name") ?? ""; const lbOptOut = - ($(".page.pageProfile .profile").attr("lbOptOut") ?? "false") === "true"; + (qs(".page.pageProfile .profile")?.getAttribute("lbOptOut") ?? "false") === + "true"; void UserReportModal.show({ uid, name, lbOptOut }); }); -$(".page.pageProfile").on("click", ".profile .addFriendButton", async () => { - const friendName = $(".page.pageProfile .profile").attr("name") ?? ""; +qs(".page.pageProfile")?.on("click", async (event: MouseEvent) => { + const target = event.target; + + if (target instanceof HTMLElement) { + if (!target.matches(".profile .addFriendButton")) return; + } else { + return; + } + + const friendName = + qs(".page.pageProfile .profile")?.getAttribute("name") ?? ""; const result = await addFriend(friendName); if (result === true) { Notifications.add(`Request sent to ${friendName}`); - $(".profile .details .addFriendButton").addClass("disabled"); + qs(".profile .details .addFriendButton")?.disable(); } else { Notifications.add(result, -1); } @@ -271,18 +289,18 @@ export const page = new Page({ Skeleton.append("pageProfile", "main"); const uidOrName = options?.params?.["uidOrName"] ?? ""; if (uidOrName) { - $(".page.pageProfile .preloader").removeClass("hidden"); - $(".page.pageProfile .search").addClass("hidden"); - $(".page.pageProfile .content").removeClass("hidden"); + qs(".page.pageProfile .preloader")?.show(); + qs(".page.pageProfile .search")?.hide(); + qs(".page.pageProfile .content")?.show(); reset(); void update({ uidOrName, data: options?.data, }); } else { - $(".page.pageProfile .preloader").addClass("hidden"); - $(".page.pageProfile .search").removeClass("hidden"); - $(".page.pageProfile .content").addClass("hidden"); + qs(".page.pageProfile .preloader")?.hide(); + qs(".page.pageProfile .search")?.show(); + qs(".page.pageProfile .content")?.hide(); } }, });