{#if !user} {m["sidebar.user.header"]()} { const auth = await getAuthURL(); localStorage.setItem("lnv-codeVerifier", auth.codeVerifier); localStorage.setItem("lnv-oidcstate", auth.state); location.href = auth.url; window.addEventListener("message", async (e) => { if (e.origin !== window.location.origin) return; const { code, state } = e.data; console.log("Received data from popup:", e.data); if (!code || !state) { console.error("Invalid response from popup"); return; } if (state !== auth.state) { alert("State mismatch. Please try again."); return; } const token = await getOIDCUser(code, auth.codeVerifier); localStorage.setItem("lnv-id", token.id_token); localStorage.setItem("lnv-token", token.access_token); localStorage.setItem("lnv-refresh", token.refresh_token); user = JSON.parse( atob((localStorage.getItem("lnv-id") || "").split(".")[1]), ); await uploadID(); }); }}>{m["sidebar.user.login"]()} {:else} {user.preferred_username} {user.name || user.preferred_username} { refreshToken(); }}>refresh {#await fetchMyUser() then u} Followers: {u.followers} Following: {u.following} Reviews: {u.reviewsCount} Hazards: {u.hazardsCount} {/await} { alert(await followUser(testInput).catch(alert)); }}>Follow { alert(await unfollowUser(testInput).catch(alert)); }}>Unfollow
{user.sub}