visual changes
This commit is contained in:
+5
-11
@@ -6,6 +6,7 @@ import { getAuthToken, setAccessToken } from "@rustpad/session";
|
||||
import { api } from "@rustpad/api";
|
||||
import { copyText } from "@rustpad/clipboard";
|
||||
import { safeAppUrl } from "@rustpad/security";
|
||||
import { toast } from "@rustpad/toast";
|
||||
|
||||
function slugify(value, fallback) {
|
||||
return value.toLowerCase().normalize("NFKD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "") || fallback;
|
||||
@@ -84,14 +85,6 @@ document.querySelector("#workspace-form").addEventListener("submit", async (even
|
||||
|
||||
handleAccountConfirmationToken();
|
||||
handleResetToken();
|
||||
function toast(text) {
|
||||
const element = document.querySelector("#toast");
|
||||
if (!element) return;
|
||||
element.textContent = text;
|
||||
element.classList.add("visible");
|
||||
clearTimeout(toast.timer);
|
||||
toast.timer = setTimeout(() => element.classList.remove("visible"), 3000);
|
||||
}
|
||||
|
||||
{ const params=new URLSearchParams(location.search); const token=params.get("account_action_token"); if(token){ api("/api/auth/account-action/confirm",{method:"POST",body:JSON.stringify({token})}).then(r=>toast(r.message)).catch(e=>toast(e.message)).finally(()=>{params.delete("account_action_token");history.replaceState({},"",`${location.pathname}${params.size?`?${params}`:""}${location.hash}`);}); } }
|
||||
|
||||
@@ -256,7 +249,7 @@ function renderAccount(session) {
|
||||
if (identityDialog) {
|
||||
const authDialog = bindIdentityDialog({
|
||||
dialog: identityDialog,
|
||||
onIdentity: async (_nickname, session) => renderAccount(session),
|
||||
onIdentity: async (_nickname, session) => { renderAccount(session); if (session) toast(`Logged in as ${session.nickname}.`); },
|
||||
});
|
||||
|
||||
document.querySelector("#footer-login")?.addEventListener("click", () => {
|
||||
@@ -290,14 +283,14 @@ if (identityDialog) {
|
||||
const suggestion = currentSession?.suggested_nickname;
|
||||
const suggestionElement = document.querySelector("#profile-nickname-suggestion");
|
||||
suggestionElement.textContent = suggestion ? `Suggested nickname: ${suggestion}` : "No automatic nickname suggestion is available.";
|
||||
document.querySelector("#profile-password").required = !directoryManaged;
|
||||
document.querySelector("#profile-password").required = false;
|
||||
profileDialog.showModal();
|
||||
});
|
||||
document.querySelector("#close-profile")?.addEventListener("click", () => profileDialog.close());
|
||||
profileDialog?.addEventListener("click", event => { if (event.target === profileDialog) profileDialog.close(); });
|
||||
profileForm?.addEventListener("submit", async event => {
|
||||
event.preventDefault(); const message=document.querySelector("#profile-message"); message.textContent=""; message.classList.remove("success", "error");
|
||||
try { const selectedColor=document.querySelector("#profile-color").value; const result=await api("/api/auth/profile",{method:"POST",headers:authHeaders(),body:JSON.stringify({nickname:document.querySelector("#profile-nickname").value.trim(),editor_color:selectedColor,new_email:currentSession?.directory_managed?null:(document.querySelector("#profile-email").value.trim()||null),new_password:currentSession?.directory_managed?null:(document.querySelector("#profile-new-password").value||null),password:currentSession?.directory_managed?"":document.querySelector("#profile-password").value})}); message.textContent=result.message; message.classList.add("success"); currentSession.nickname=result.nickname; currentSession.editor_color=result.editor_color; renderAccount(currentSession); } catch(e){ message.textContent=e.message; message.classList.add("error"); }
|
||||
try { const selectedColor=document.querySelector("#profile-color").value; const newEmail=currentSession?.directory_managed?null:(document.querySelector("#profile-email").value.trim()||null); const newPassword=currentSession?.directory_managed?null:(document.querySelector("#profile-new-password").value||null); const password=currentSession?.directory_managed?"":document.querySelector("#profile-password").value; if ((newEmail || newPassword) && !password) throw new Error("Enter the current password to change e-mail or password."); const result=await api("/api/auth/profile",{method:"POST",headers:authHeaders(),body:JSON.stringify({nickname:document.querySelector("#profile-nickname").value.trim(),editor_color:selectedColor,new_email:newEmail,new_password:newPassword,password})}); message.textContent=result.message; message.classList.add("success"); currentSession.nickname=result.nickname; currentSession.editor_color=result.editor_color; renderAccount(currentSession); } catch(e){ message.textContent=e.message; message.classList.add("error"); }
|
||||
});
|
||||
document.querySelector("#profile-delete")?.addEventListener("click", async () => {
|
||||
const message=document.querySelector("#profile-message"); const password=document.querySelector("#profile-password").value;
|
||||
@@ -313,6 +306,7 @@ if (identityDialog) {
|
||||
document.querySelector("#footer-logout")?.addEventListener("click", async () => {
|
||||
await logoutCurrentSession();
|
||||
renderAccount(null);
|
||||
toast("Logged out.");
|
||||
});
|
||||
|
||||
window.addEventListener("rustpad:session-expired", () => renderAccount(null));
|
||||
|
||||
Reference in New Issue
Block a user