chore: improve structuring of mission response types (#2604)
Some checks failed
Build Docker image / docker-amd64 (push) Waiting to run
Build Docker image / docker-arm64 (push) Waiting to run
Build / build (push) Has been cancelled

Reviewed-on: #2604
Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com>
Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
Sainan 2025-08-11 08:09:08 -07:00 committed by Sainan
parent ebdca760e6
commit fac3ec01c6
2 changed files with 34 additions and 13 deletions

View File

@ -6,7 +6,11 @@ import { addMissionInventoryUpdates, addMissionRewards } from "@/src/services/mi
import { getInventory } from "@/src/services/inventoryService"; import { getInventory } from "@/src/services/inventoryService";
import { getInventoryResponse } from "@/src/controllers/api/inventoryController"; import { getInventoryResponse } from "@/src/controllers/api/inventoryController";
import { logger } from "@/src/utils/logger"; import { logger } from "@/src/utils/logger";
import { IMissionInventoryUpdateResponse } from "@/src/types/missionTypes"; import {
IMissionInventoryUpdateResponse,
IMissionInventoryUpdateResponseBackToDryDock,
IMissionInventoryUpdateResponseRailjackInterstitial
} from "@/src/types/missionTypes";
import { sendWsBroadcastTo } from "@/src/services/wsService"; import { sendWsBroadcastTo } from "@/src/services/wsService";
import { generateRewardSeed } from "@/src/services/rngService"; import { generateRewardSeed } from "@/src/services/rngService";
@ -95,17 +99,9 @@ export const missionInventoryUpdateController: RequestHandler = async (req, res)
inventory.RewardSeed = generateRewardSeed(); inventory.RewardSeed = generateRewardSeed();
} }
await inventory.save(); await inventory.save();
const inventoryResponse = await getInventoryResponse(inventory, true, account.BuildLabel);
//TODO: figure out when to send inventory. it is needed for many cases. //TODO: figure out when to send inventory. it is needed for many cases.
if (missionReport.RJ) { const deltas: IMissionInventoryUpdateResponseRailjackInterstitial = {
logger.debug(`railjack interstitial request, sending only deltas`, {
InventoryChanges: inventoryChanges,
AffiliationMods
});
}
res.json({
InventoryJson: missionReport.RJ ? undefined : JSON.stringify(inventoryResponse),
InventoryChanges: inventoryChanges, InventoryChanges: inventoryChanges,
MissionRewards, MissionRewards,
...credits, ...credits,
@ -114,7 +110,25 @@ export const missionInventoryUpdateController: RequestHandler = async (req, res)
SyndicateXPItemReward, SyndicateXPItemReward,
AffiliationMods, AffiliationMods,
ConquestCompletedMissionsCount ConquestCompletedMissionsCount
} satisfies IMissionInventoryUpdateResponse); };
if (missionReport.RJ) {
logger.debug(`railjack interstitial request, sending only deltas`, deltas);
res.json(deltas);
} else if (missionReport.RewardInfo) {
logger.debug(`classic mission completion, sending everything`);
const inventoryResponse = await getInventoryResponse(inventory, true, account.BuildLabel);
res.json({
InventoryJson: JSON.stringify(inventoryResponse),
...deltas
} satisfies IMissionInventoryUpdateResponse);
} else {
logger.debug(`no reward info, assuming this wasn't a mission completion and we should just sync inventory`);
const inventoryResponse = await getInventoryResponse(inventory, true, account.BuildLabel);
res.json({
InventoryJson: JSON.stringify(inventoryResponse)
} satisfies IMissionInventoryUpdateResponseBackToDryDock);
}
sendWsBroadcastTo(account._id.toString(), { update_inventory: true }); sendWsBroadcastTo(account._id.toString(), { update_inventory: true });
}; };

View File

@ -23,12 +23,19 @@ export interface IMissionCredits {
DailyMissionBonus?: boolean; DailyMissionBonus?: boolean;
} }
export interface IMissionInventoryUpdateResponse extends Partial<IMissionCredits> { export interface IMissionInventoryUpdateResponseRailjackInterstitial extends Partial<IMissionCredits> {
ConquestCompletedMissionsCount?: number; ConquestCompletedMissionsCount?: number;
InventoryJson?: string;
MissionRewards?: IMissionReward[]; MissionRewards?: IMissionReward[];
InventoryChanges?: IInventoryChanges; InventoryChanges?: IInventoryChanges;
FusionPoints?: number; FusionPoints?: number;
SyndicateXPItemReward?: number; SyndicateXPItemReward?: number;
AffiliationMods?: IAffiliationMods[]; AffiliationMods?: IAffiliationMods[];
} }
export interface IMissionInventoryUpdateResponse extends IMissionInventoryUpdateResponseRailjackInterstitial {
InventoryJson?: string;
}
export interface IMissionInventoryUpdateResponseBackToDryDock {
InventoryJson: string;
}