refactor: App.js 1-list display + start/resume (no re-sort)

3 sites fixed to match shared 1-list model:
- line 1216 display: sortedParticipants = participants[] (no re-sort). GM
  list renders participants[] directly = turnOrderIds.
- startCombat inline: sort ALL participants by init (active+inactive),
  first active = current, persist participants[] reordered + turnOrderIds.
- resume inline: no re-sort on resume. turnOrderIds unchanged.

Display === rotation === turnOrderIds by construction (1-list invariant).
Build green.
This commit is contained in:
david raistrick
2026-07-01 16:03:38 -04:00
parent d1cbe7091a
commit 7c3ec105d5
+11 -6
View File
@@ -1213,7 +1213,8 @@ function ParticipantManager({ encounter, encounterPath, campaignCharacters }) {
setDraggedItemId(null);
};
const sortedParticipants = sortParticipantsByInitiative(participants, participants);
// 1-list model: participants[] IS the display order. No re-sort.
const sortedParticipants = participants;
const initiativeGroups = participants.reduce((acc, p) => {
acc[p.initiative] = (acc[p.initiative] || 0) + 1;
@@ -1595,14 +1596,18 @@ function InitiativeControls({ campaignId, encounter, encounterPath }) {
return;
}
const sortedParticipants = sortParticipantsByInitiative(activeParticipants, encounter.participants);
// 1-list model: sort ALL participants by init (active+inactive),
// first active = current. Matches shared.startEncounter.
const sortedParticipants = sortParticipantsByInitiative(encounter.participants, encounter.participants);
const firstActive = sortedParticipants.find(p => p.isActive);
try {
await storage.updateDoc(encounterPath, {
isStarted: true,
isPaused: false,
round: 1,
currentTurnParticipantId: sortedParticipants[0].id,
participants: sortedParticipants,
currentTurnParticipantId: firstActive.id,
turnOrderIds: sortedParticipants.map(p => p.id)
});
@@ -1635,9 +1640,9 @@ function InitiativeControls({ campaignId, encounter, encounterPath }) {
let newTurnOrderIds = encounter.turnOrderIds;
if (!newPausedState && encounter.isPaused) {
const activeParticipants = encounter.participants.filter(p => p.isActive);
const sortedParticipants = sortParticipantsByInitiative(activeParticipants, encounter.participants);
newTurnOrderIds = sortedParticipants.map(p => p.id);
// 1-list model: no re-sort on resume. turnOrderIds already mirrors
// participants[] (set at start/add/reorder). Resume = unpause only.
newTurnOrderIds = encounter.turnOrderIds;
}
try {