chore: improve structuring of mission response types (#2604)
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:
parent
ebdca760e6
commit
fac3ec01c6
@ -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 });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user