generated from nhcarrigan/template
fix: guard against undefined counts in sync and force-unlock messages
Closes #125
This commit is contained in:
@@ -13,18 +13,22 @@ import { ConfirmationModal } from "../ui/confirmationModal.js";
|
|||||||
type ActiveModal = "force-unlocks" | "hard-reset" | "sync-new-content" | null;
|
type ActiveModal = "force-unlocks" | "hard-reset" | "sync-new-content" | null;
|
||||||
|
|
||||||
interface SyncNewContentResult {
|
interface SyncNewContentResult {
|
||||||
achievementsAdded: number;
|
achievementsAdded: number | undefined;
|
||||||
adventurersAdded: number;
|
adventurersAdded: number | undefined;
|
||||||
bossesAdded: number;
|
bossesAdded: number | undefined;
|
||||||
bossRewardsPatched: number;
|
bossRewardsPatched: number | undefined;
|
||||||
equipmentAdded: number;
|
equipmentAdded: number | undefined;
|
||||||
explorationAreasAdded: number;
|
explorationAreasAdded: number | undefined;
|
||||||
questRewardsPatched: number;
|
questRewardsPatched: number | undefined;
|
||||||
questsAdded: number;
|
questsAdded: number | undefined;
|
||||||
upgradesAdded: number;
|
upgradesAdded: number | undefined;
|
||||||
zonesAdded: number;
|
zonesAdded: number | undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const safeNumber = (value: number | undefined): number => {
|
||||||
|
return value ?? 0;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds a human-readable summary of what the sync-new-content operation added.
|
* Builds a human-readable summary of what the sync-new-content operation added.
|
||||||
* @param result - The counts returned by the operation.
|
* @param result - The counts returned by the operation.
|
||||||
@@ -32,16 +36,16 @@ interface SyncNewContentResult {
|
|||||||
*/
|
*/
|
||||||
const buildSyncNewContentMessage = (result: SyncNewContentResult): string => {
|
const buildSyncNewContentMessage = (result: SyncNewContentResult): string => {
|
||||||
const entries: Array<[ number, string ]> = [
|
const entries: Array<[ number, string ]> = [
|
||||||
[ result.zonesAdded, "zone(s)" ],
|
[ safeNumber(result.zonesAdded), "zone(s)" ],
|
||||||
[ result.questsAdded, "quest(s)" ],
|
[ safeNumber(result.questsAdded), "quest(s)" ],
|
||||||
[ result.questRewardsPatched, "quest reward(s) patched" ],
|
[ safeNumber(result.questRewardsPatched), "quest reward(s) patched" ],
|
||||||
[ result.bossesAdded, "boss(es)" ],
|
[ safeNumber(result.bossesAdded), "boss(es)" ],
|
||||||
[ result.bossRewardsPatched, "boss reward(s) patched" ],
|
[ safeNumber(result.bossRewardsPatched), "boss reward(s) patched" ],
|
||||||
[ result.explorationAreasAdded, "exploration area(s)" ],
|
[ safeNumber(result.explorationAreasAdded), "exploration area(s)" ],
|
||||||
[ result.adventurersAdded, "adventurer tier(s)" ],
|
[ safeNumber(result.adventurersAdded), "adventurer tier(s)" ],
|
||||||
[ result.upgradesAdded, "upgrade(s)" ],
|
[ safeNumber(result.upgradesAdded), "upgrade(s)" ],
|
||||||
[ result.equipmentAdded, "equipment item(s)" ],
|
[ safeNumber(result.equipmentAdded), "equipment item(s)" ],
|
||||||
[ result.achievementsAdded, "achievement(s)" ],
|
[ safeNumber(result.achievementsAdded), "achievement(s)" ],
|
||||||
];
|
];
|
||||||
const parts = entries.
|
const parts = entries.
|
||||||
filter(([ count ]) => {
|
filter(([ count ]) => {
|
||||||
@@ -60,14 +64,14 @@ const buildSyncNewContentMessage = (result: SyncNewContentResult): string => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
interface ForceUnlocksResult {
|
interface ForceUnlocksResult {
|
||||||
adventurersUnlocked: number;
|
adventurersUnlocked: number | undefined;
|
||||||
bossesUnlocked: number;
|
bossesUnlocked: number | undefined;
|
||||||
equipmentUnlocked: number;
|
equipmentUnlocked: number | undefined;
|
||||||
explorationUnlocked: number;
|
explorationUnlocked: number | undefined;
|
||||||
questsUnlocked: number;
|
questsUnlocked: number | undefined;
|
||||||
storyUnlocked: number;
|
storyUnlocked: number | undefined;
|
||||||
upgradesUnlocked: number;
|
upgradesUnlocked: number | undefined;
|
||||||
zonesUnlocked: number;
|
zonesUnlocked: number | undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -77,14 +81,14 @@ interface ForceUnlocksResult {
|
|||||||
*/
|
*/
|
||||||
const buildForceUnlocksMessage = (result: ForceUnlocksResult): string => {
|
const buildForceUnlocksMessage = (result: ForceUnlocksResult): string => {
|
||||||
const entries: Array<[ number, string ]> = [
|
const entries: Array<[ number, string ]> = [
|
||||||
[ result.zonesUnlocked, "zone(s)" ],
|
[ safeNumber(result.zonesUnlocked), "zone(s)" ],
|
||||||
[ result.questsUnlocked, "quest(s)" ],
|
[ safeNumber(result.questsUnlocked), "quest(s)" ],
|
||||||
[ result.bossesUnlocked, "boss(es)" ],
|
[ safeNumber(result.bossesUnlocked), "boss(es)" ],
|
||||||
[ result.explorationUnlocked, "exploration area(s)" ],
|
[ safeNumber(result.explorationUnlocked), "exploration area(s)" ],
|
||||||
[ result.adventurersUnlocked, "adventurer tier(s)" ],
|
[ safeNumber(result.adventurersUnlocked), "adventurer tier(s)" ],
|
||||||
[ result.upgradesUnlocked, "upgrade(s)" ],
|
[ safeNumber(result.upgradesUnlocked), "upgrade(s)" ],
|
||||||
[ result.equipmentUnlocked, "equipment item(s)" ],
|
[ safeNumber(result.equipmentUnlocked), "equipment item(s)" ],
|
||||||
[ result.storyUnlocked, "story chapter(s)" ],
|
[ safeNumber(result.storyUnlocked), "story chapter(s)" ],
|
||||||
];
|
];
|
||||||
const parts = entries.
|
const parts = entries.
|
||||||
filter(([ count ]) => {
|
filter(([ count ]) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user