// retoor <retoor@molodetz.nl>
import { Http } from "./Http.js";
import { Toast } from "./Toast.js";
let confirmedThisSession = false;
class AvatarRegenerator {
constructor() {
this.btn = document.querySelector("[data-regenerate-avatar]");
if (!this.btn) return;
this.preview = document.getElementById("profile-avatar-preview");
this.btn.addEventListener("click", () => this.regenerate());
}
async regenerate() {
if (!confirmedThisSession) {
const ok = await window.app.dialog.confirm({
title: "Regenerate avatar",
message: "A new random avatar will be generated. Your current avatar is gone for good and can never be brought back.",
confirmLabel: "Regenerate",
danger: true,
});
if (!ok) return;
confirmedThisSession = true;
}
const username = this.btn.dataset.username;
this.btn.disabled = true;
try {
const result = await Http.postJson(`/profile/${username}/regenerate-avatar`, {});
const url = result && result.data ? result.data.avatar_url : "";
if (!url) {
Toast.flash(this.btn, "Error", 2000, "Regenerate avatar");
return;
}
if (this.preview) this.preview.src = url;
Toast.flash(this.btn, "Regenerated", 2000, "Regenerate avatar");
} catch {
Toast.flash(this.btn, "Error", 2000, "Regenerate avatar");
} finally {
this.btn.disabled = false;
}
}
}
window.AvatarRegenerator = AvatarRegenerator;
export { AvatarRegenerator };