Notify voters when suggestions change during refresh

This commit is contained in:
2026-02-06 23:19:34 +01:00
parent b75e25fb92
commit b2b3996d78
3 changed files with 39 additions and 1 deletions

View File

@@ -1,5 +1,5 @@
import { api, adminApi } from "./api.js";
import { handleAuthError, renderAllSuggestions, renderCounts, renderMySuggestions, renderPhasePill, renderPhaseTitles, renderResults, renderVotes, renderWelcome, setAuthUI, syncVoteScores, updatePhaseNav, openResultsRelockModal } from "./ui.js";
import { handleAuthError, renderAllSuggestions, renderCounts, renderMySuggestions, renderPhasePill, renderPhaseTitles, renderResults, renderVotes, renderWelcome, setAuthUI, syncVoteScores, updatePhaseNav, openResultsRelockModal, openSuggestionsChangedModal } from "./ui.js";
import { state, clearUserState } from "./state.js";
export async function loadState() {
@@ -29,9 +29,27 @@ export async function loadSuggestData() {
export async function loadRevealData() {
if (state.phase === "Vote" || state.phase === "Results") {
const prev = state.allSuggestions ?? [];
const prevById = Object.fromEntries(prev.map((s) => [s.id, s]));
const latest = await api.allSuggestions();
const latestSig = signatureSuggestions(latest);
const changed = latestSig !== state.allSuggestionsSig;
if (changed && state.phase === "Vote" && state.allSuggestionsSig) {
const added = latest
.filter((s) => !prevById[s.id])
.map((s) => s.name);
const relinked = latest
.filter((s) => {
const prevItem = prevById[s.id];
return (
prevItem &&
prevItem.parentSuggestionId !== s.parentSuggestionId
);
})
.map((s) => s.name);
const names = [...added, ...relinked];
openSuggestionsChangedModal(names);
}
state.allSuggestions = latest;
state.allSuggestionsSig = latestSig;
renderAllSuggestions();