mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2026-01-09 00:45:32 +08:00
Remove jquery from profile page
This commit is contained in:
parent
9ea7990eb8
commit
8f0fef3c3f
1 changed files with 41 additions and 23 deletions
|
|
@ -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(`
|
||||
<div class="details none">
|
||||
<div class="avatarAndName">
|
||||
<div class="avatar"></div>
|
||||
|
|
@ -182,7 +182,7 @@ type UpdateOptions = {
|
|||
async function update(options: UpdateOptions): Promise<void> {
|
||||
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<void> {
|
|||
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<void> {
|
|||
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<void> {
|
|||
}
|
||||
}
|
||||
|
||||
$(".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<undefined | UserProfile>({
|
|||
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();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue