diff --git a/README.md b/README.md index eddbc04..42d9f64 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,6 @@ These can be defined in Lanyard's KV store to customize the page: | `badges` | Enables badge fetching (`true` / `false`) | | `readme` | URL to a README displayed on the profile (`.md` or `.html`) | | `css` | URL to a css to change styles on the page, no import or require allowed | -| `optout` | Allows users to stop sharing there profile on the website (`true` / `false`) | --- diff --git a/public/js/index.js b/public/js/index.js index a32bbd8..c405af6 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -335,10 +335,9 @@ async function loadBadges(userId, options = {}) { async function populateReadme(data) { const readmeSection = document.querySelector(".readme"); - const kv = data.kv || {}; - if (readmeSection && kv.readme) { - const url = kv.readme; + if (readmeSection && data.kv?.readme) { + const url = data.kv.readme; try { const res = await fetch(`/api/readme?url=${encodeURIComponent(url)}`); if (!res.ok) throw new Error("Failed to fetch readme"); @@ -356,46 +355,8 @@ async function populateReadme(data) { } } -async function updatePresence(initialData) { - if ( - !initialData || - typeof initialData !== "object" || - initialData.success === false || - initialData.error - ) { - const loadingOverlay = document.getElementById("loading-overlay"); - if (loadingOverlay) { - loadingOverlay.innerHTML = ` -
-

${initialData?.error?.message || "Failed to load presence data."}

-
- `; - loadingOverlay.style.opacity = "1"; - } - return; - } - - const data = - initialData?.d && Object.keys(initialData.d).length > 0 - ? initialData.d - : initialData; - - const kv = data.kv || {}; - - if (kv.optout === "true") { - const loadingOverlay = document.getElementById("loading-overlay"); - if (loadingOverlay) { - loadingOverlay.innerHTML = ` -
-

This user has opted out of sharing their presence.

-
- `; - loadingOverlay.style.opacity = "1"; - } - return; - } - - const cssLink = kv.css; +async function updatePresence(data) { + const cssLink = data.kv?.css; if (cssLink) { try { const res = await fetch(`/api/css?url=${encodeURIComponent(cssLink)}`); @@ -410,7 +371,7 @@ async function updatePresence(initialData) { } } - if (!badgesLoaded && data?.kv && data.kv.badges !== "false") { + if (!badgesLoaded && data && data.kv.badges !== "false") { loadBadges(userId, { services: [], seperated: true, @@ -554,9 +515,9 @@ async function updatePresence(initialData) { getAllNoAsset(); } - if (kv.snow === "true") loadEffectScript("snow"); - if (kv.rain === "true") loadEffectScript("rain"); - if (kv.stars === "true") loadEffectScript("stars"); + if (data.kv?.snow === "true") loadEffectScript("snow"); + if (data.kv?.rain === "true") loadEffectScript("rain"); + if (data.kv?.stars === "true") loadEffectScript("stars"); const loadingOverlay = document.getElementById("loading-overlay"); if (loadingOverlay) { @@ -682,19 +643,6 @@ if (userId && instanceUri) { socket.addEventListener("message", (event) => { const payload = JSON.parse(event.data); - if (payload.error || payload.success === false) { - const loadingOverlay = document.getElementById("loading-overlay"); - if (loadingOverlay) { - loadingOverlay.innerHTML = ` -
-

${payload.error?.message || "An unknown error occurred."}

-
- `; - loadingOverlay.style.opacity = "1"; - } - return; - } - if (payload.op === 1 && payload.d?.heartbeat_interval) { heartbeatInterval = setInterval(() => { socket.send(JSON.stringify({ op: 3 })); @@ -711,8 +659,8 @@ if (userId && instanceUri) { } if (payload.t === "INIT_STATE" || payload.t === "PRESENCE_UPDATE") { - updatePresence(payload); - requestAnimationFrame(updateElapsedAndProgress); + updatePresence(payload.d); + requestAnimationFrame(() => updateElapsedAndProgress()); } });