Add reserve drill assignment API
This commit is contained in:
@@ -628,6 +628,27 @@ export function setCampaignReserveTrainingFocus(focusId: CampaignReserveTraining
|
||||
return cloneCampaignState(state);
|
||||
}
|
||||
|
||||
export function setCampaignReserveTrainingAssignment(unitId: string, focusId?: CampaignReserveTrainingFocusId) {
|
||||
const state = ensureCampaignState();
|
||||
const normalizedUnitId = normalizeKeyString(unitId);
|
||||
const rosterUnitIds = normalizedRosterUnitIds(state.roster);
|
||||
const allowedUnitIds = rosterUnitIds.size > 0 ? rosterUnitIds : undefined;
|
||||
if (!normalizedUnitId || (allowedUnitIds && !allowedUnitIds.has(normalizedUnitId))) {
|
||||
return cloneCampaignState(state);
|
||||
}
|
||||
|
||||
const assignments = normalizeCampaignReserveTrainingAssignments(state.reserveTrainingAssignments, allowedUnitIds);
|
||||
if (focusId && isReserveTrainingFocusId(focusId)) {
|
||||
assignments[normalizedUnitId] = focusId;
|
||||
} else {
|
||||
delete assignments[normalizedUnitId];
|
||||
}
|
||||
state.reserveTrainingAssignments = assignments;
|
||||
state.updatedAt = new Date().toISOString();
|
||||
persistCampaignState(state);
|
||||
return cloneCampaignState(state);
|
||||
}
|
||||
|
||||
export function normalizeCampaignReserveTrainingAssignments(
|
||||
assignments?: Record<string, unknown>,
|
||||
allowedUnitIds?: Set<string>
|
||||
|
||||
Reference in New Issue
Block a user