Recover saves with malformed battle reports
This commit is contained in:
@@ -812,11 +812,7 @@ function normalizeCampaignState(state: Partial<CampaignState>): CampaignState {
|
||||
normalized.sortieItemAssignments = normalizeSortieItemAssignments(recordOrEmpty(normalized.sortieItemAssignments));
|
||||
normalized.reserveTrainingFocus = normalizeReserveTrainingFocusId(normalized.reserveTrainingFocus);
|
||||
normalized.battleHistory = recordOrEmpty<CampaignBattleSettlement>(normalized.battleHistory);
|
||||
if (isPlainObject(normalized.firstBattleReport)) {
|
||||
normalized.firstBattleReport = cloneReport(normalized.firstBattleReport);
|
||||
} else {
|
||||
normalized.firstBattleReport = undefined;
|
||||
}
|
||||
normalized.firstBattleReport = normalizeFirstBattleReport(normalized.firstBattleReport);
|
||||
return normalized;
|
||||
}
|
||||
|
||||
@@ -878,6 +874,18 @@ function normalizeCampaignStep(step: unknown): CampaignStep {
|
||||
return typeof step === 'string' && campaignStepIds.has(step as CampaignStep) ? step as CampaignStep : 'new';
|
||||
}
|
||||
|
||||
function normalizeFirstBattleReport(report: unknown): FirstBattleReport | undefined {
|
||||
if (!isPlainObject(report)) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
try {
|
||||
return cloneReport(report as FirstBattleReport);
|
||||
} catch {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
function reserveTrainingFocusDefinition(focusId?: string) {
|
||||
const normalizedId = normalizeReserveTrainingFocusId(focusId);
|
||||
return campaignReserveTrainingFocusDefinitions.find((focus) => focus.id === normalizedId) ?? campaignReserveTrainingFocusDefinitions[0];
|
||||
|
||||
Reference in New Issue
Block a user