forked from OpenWF/SpaceNinjaServer
		
	chore: improve structuring of mission response types (#2604)
Reviewed-on: OpenWF/SpaceNinjaServer#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