Notify voters when suggestions change during refresh
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user