Move suggest form into modal

This commit is contained in:
2026-02-04 14:50:49 +01:00
parent bf1ceba156
commit 0cece5f7a3
5 changed files with 140 additions and 146 deletions

View File

@@ -2,7 +2,6 @@ import { api, adminApi } from "./js/api.js";
import { t, setLanguage, getLanguage, initI18n, onLanguageChange } from "./js/i18n.js";
import { state, clearUserState, getSavedUsername, setSavedUsername } from "./js/state.js";
import { $, toast } from "./js/dom.js";
import { triggerCelebration } from "./js/effects.js";
import {
setAuthUI,
setAuthMode,
@@ -16,7 +15,7 @@ import {
syncVoteScores,
renderResults,
renderPhaseTitles,
normalizeSuggestionForm,
openNewSuggestionModal,
} from "./js/ui.js";
import {
loadState,
@@ -117,24 +116,14 @@ function setupHandlers() {
});
}
$("suggest-form").addEventListener("submit", async (e) => {
e.preventDefault();
const form = e.target;
const data = normalizeSuggestionForm(new FormData(form));
if (!data.name) return toast(t("toast.nameRequired"), true);
if (data.screenshotUrl && !isValidImageUrl(data.screenshotUrl)) {
return toast(t("toast.invalidImageUrl"), true);
}
try {
await api.createSuggestion(data);
form.reset();
toast(t("toast.suggestionAdded"));
triggerCelebration(form.querySelector("button[type=submit]"));
await loadSuggestData();
} catch (err) {
toast(err.message, true);
}
});
const openSuggestBtn = $("open-suggest-modal");
if (openSuggestBtn) {
openSuggestBtn.addEventListener("click", (e) => {
e.preventDefault();
if (state.phase !== "Suggest") return;
openNewSuggestionModal();
});
}
$("set-phase").addEventListener("click", async () => {
const phase = $("phase-select").value;
@@ -223,16 +212,3 @@ async function main() {
}
main();
function isValidImageUrl(url) {
if (!url) return true;
try {
const u = new URL(url);
const allowed = ["http:", "https:"];
if (!allowed.includes(u.protocol)) return false;
const path = u.pathname.toLowerCase();
return [".png", ".jpg", ".jpeg", ".gif", ".webp", ".avif"].some((ext) => path.endsWith(ext));
} catch {
return false;
}
}