import { addExtensionSettings } from "@/seqta/utils/Adders/AddExtensionSettings"; import { loadHomePage } from "@/seqta/utils/Loaders/LoadHomePage"; import { SendNewsPage } from "@/seqta/utils/SendNewsPage"; import { setupSettingsButton } from "@/seqta/utils/setupSettingsButton"; import { GetThresholdOfColor } from "@/seqta/ui/colors/getThresholdColour"; import { appendBackgroundToUI } from "./ImageBackgrounds"; import stringToHTML from "@/seqta/utils/stringToHTML"; import { settingsState } from "@/seqta/utils/listeners/SettingsState"; import { updateAllColors } from "./colors/Manager"; import { delay } from "@/seqta/utils/delay"; let cachedUserInfo: any = null; let LightDarkModeSnakeEggButton = 0; export async function getUserInfo() { if (cachedUserInfo) return cachedUserInfo; try { const response = await fetch(`${location.origin}/seqta/student/login`, { method: "POST", headers: { "Content-Type": "application/json; charset=utf-8", }, body: JSON.stringify({ mode: "normal", query: null, redirect_url: location.origin, }), }); cachedUserInfo = (await response.json()).payload; return cachedUserInfo; } catch (error) { console.error("[BetterSEQTA+] Failed to get user info:", error); throw error; } } export async function AddBetterSEQTAElements() { if (settingsState.onoff) { if (settingsState.DarkMode) { document.documentElement.classList.add("dark"); } const fragment = document.createDocumentFragment(); const menu = document.getElementById("menu")!; const menuList = menu.firstChild as HTMLElement; createHomeButton(fragment, menuList); createNewsButton(fragment, menu); menuList.insertBefore(fragment, menuList.firstChild); try { await Promise.all([ appendBackgroundToUI(), handleUserInfo(), handleStudentData(), ]); } catch (error) { console.error("[BetterSEQTA+] Failed to initialize UI elements:", error); } setupEventListeners(); await addDarkLightToggle(); customizeMenuToggle(); } addExtensionSettings(); await createSettingsButton(); setupSettingsButton(); } function createHomeButton(fragment: DocumentFragment, _: HTMLElement) { const container = document.getElementById("content")!; const div = document.createElement("div"); div.classList.add("titlebar"); container.append(div); fragment.appendChild( stringToHTML( /* html */ `
`, ).firstChild!, ); } async function handleUserInfo() { try { updateUserInfo(await getUserInfo()); } catch (error) { console.error("[BetterSEQTA+] Failed to handle user info:", error); } } function updateUserInfo(info: { basic: boolean; clientIP: string[] | null; email: string | null; id: number | null; lastAccessedTime: number | null; meta: { code: string | null; governmentID: string | null; }; personUUID: string | null; status: number | null; synergeticCommunityUrl: string | null; type: string | null; userCode: string | null; userDesc: string | null; userName: string | null; }) { const titlebar = document.getElementsByClassName("titlebar")[0]; titlebar.append( stringToHTML(/* html */ `${info.userDesc}
${info.meta.code} // ${info.meta.governmentID}