Reduce instances of IItemEventRouterResponse being passed into a function and then returned, its an object and passed by ref, no need to return it

Reduce instances of `IItemEventRouterResponse` being reassigned in a function

Rename `getMoney` to `giveProfileMoney`
This commit is contained in:
Dev 2024-01-16 12:21:42 +00:00
parent 9daa706325
commit 0166e30dd1
10 changed files with 69 additions and 59 deletions

View File

@ -114,7 +114,7 @@ export class HealthController
*/ */
public offraidEat(pmcData: IPmcData, request: IOffraidEatRequestData, sessionID: string): IItemEventRouterResponse public offraidEat(pmcData: IPmcData, request: IOffraidEatRequestData, sessionID: string): IItemEventRouterResponse
{ {
let output = this.eventOutputHolder.getOutput(sessionID); const output = this.eventOutputHolder.getOutput(sessionID);
let resourceLeft = 0; let resourceLeft = 0;
const itemToConsume = pmcData.Inventory.items.find((x) => x._id === request.item); const itemToConsume = pmcData.Inventory.items.find((x) => x._id === request.item);
@ -145,7 +145,7 @@ export class HealthController
// Remove item from inventory if resource has dropped below threshold // Remove item from inventory if resource has dropped below threshold
if (consumedItemMaxResource === 1 || resourceLeft < 1) if (consumedItemMaxResource === 1 || resourceLeft < 1)
{ {
output = this.inventoryHelper.removeItem(pmcData, request.item, sessionID, output); this.inventoryHelper.removeItem(pmcData, request.item, sessionID, output);
} }
return output; return output;
@ -165,7 +165,7 @@ export class HealthController
sessionID: string, sessionID: string,
): IItemEventRouterResponse ): IItemEventRouterResponse
{ {
let output = this.eventOutputHolder.getOutput(sessionID); const output = this.eventOutputHolder.getOutput(sessionID);
const payMoneyRequest: IProcessBuyTradeRequestData = { const payMoneyRequest: IProcessBuyTradeRequestData = {
Action: healthTreatmentRequest.Action, Action: healthTreatmentRequest.Action,
tid: Traders.THERAPIST, tid: Traders.THERAPIST,
@ -179,7 +179,7 @@ export class HealthController
scheme_id: 0, scheme_id: 0,
}; };
output = this.paymentService.payMoney(pmcData, payMoneyRequest, sessionID, output); this.paymentService.payMoney(pmcData, payMoneyRequest, sessionID, output);
if (output.warnings.length > 0) if (output.warnings.length > 0)
{ {
return output; return output;

View File

@ -368,7 +368,7 @@ export class HideoutController
sessionID: string, sessionID: string,
): IItemEventRouterResponse ): IItemEventRouterResponse
{ {
let output = this.eventOutputHolder.getOutput(sessionID); const output = this.eventOutputHolder.getOutput(sessionID);
const itemsToAdd = Object.entries(addItemToHideoutRequest.items).map((kvp) => const itemsToAdd = Object.entries(addItemToHideoutRequest.items).map((kvp) =>
{ {
@ -410,7 +410,7 @@ export class HideoutController
upd: item.inventoryItem.upd, upd: item.inventoryItem.upd,
}]; }];
output = this.inventoryHelper.removeItem(pmcData, item.inventoryItem._id, sessionID, output); this.inventoryHelper.removeItem(pmcData, item.inventoryItem._id, sessionID, output);
} }
// Trigger a forced update // Trigger a forced update
@ -609,7 +609,7 @@ export class HideoutController
sessionID: string, sessionID: string,
): IItemEventRouterResponse ): IItemEventRouterResponse
{ {
let output = this.eventOutputHolder.getOutput(sessionID); const output = this.eventOutputHolder.getOutput(sessionID);
for (const requestedItem of body.items) for (const requestedItem of body.items)
{ {
@ -631,7 +631,7 @@ export class HideoutController
} }
else else
{ {
output = this.inventoryHelper.removeItem(pmcData, requestedItem.id, sessionID, output); this.inventoryHelper.removeItem(pmcData, requestedItem.id, sessionID, output);
} }
} }

View File

@ -587,7 +587,7 @@ export class InsuranceController
*/ */
public insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse public insure(pmcData: IPmcData, body: IInsureRequestData, sessionID: string): IItemEventRouterResponse
{ {
let output = this.eventOutputHolder.getOutput(sessionID); const output = this.eventOutputHolder.getOutput(sessionID);
const itemsToInsureCount = body.items.length; const itemsToInsureCount = body.items.length;
const itemsToPay = []; const itemsToPay = [];
const inventoryItemsHash = {}; const inventoryItemsHash = {};
@ -617,7 +617,7 @@ export class InsuranceController
}; };
// pay for the item insurance // pay for the item insurance
output = this.paymentService.payMoney(pmcData, options, sessionID, output); this.paymentService.payMoney(pmcData, options, sessionID, output);
if (output.warnings.length > 0) if (output.warnings.length > 0)
{ {
return output; return output;
@ -644,7 +644,7 @@ export class InsuranceController
*/ */
public cost(request: IGetInsuranceCostRequestData, sessionID: string): IGetInsuranceCostResponseData public cost(request: IGetInsuranceCostRequestData, sessionID: string): IGetInsuranceCostResponseData
{ {
const output: IGetInsuranceCostResponseData = {}; const response: IGetInsuranceCostResponseData = {};
const pmcData = this.profileHelper.getPmcProfile(sessionID); const pmcData = this.profileHelper.getPmcProfile(sessionID);
const inventoryItemsHash: Record<string, Item> = {}; const inventoryItemsHash: Record<string, Item> = {};
@ -671,10 +671,10 @@ export class InsuranceController
); );
} }
output[trader] = items; response[trader] = items;
} }
return output; return response;
} }
} }

View File

@ -173,13 +173,17 @@ export class InventoryController
sessionID: string, sessionID: string,
): IItemEventRouterResponse ): IItemEventRouterResponse
{ {
const output = this.eventOutputHolder.getOutput(sessionID);
if (body.fromOwner?.type === "Mail") if (body.fromOwner?.type === "Mail")
{ {
return this.inventoryHelper.removeItemAndChildrenFromMailRewards( this.inventoryHelper.removeItemAndChildrenFromMailRewards(
sessionID, sessionID,
body, body,
this.eventOutputHolder.getOutput(sessionID), output,
); );
return;
} }
const profileToRemoveItemFrom = (!body.fromOwner || body.fromOwner.id === pmcData._id) const profileToRemoveItemFrom = (!body.fromOwner || body.fromOwner.id === pmcData._id)
@ -190,7 +194,7 @@ export class InventoryController
profileToRemoveItemFrom, profileToRemoveItemFrom,
body.item, body.item,
sessionID, sessionID,
this.eventOutputHolder.getOutput(sessionID), output,
); );
} }

View File

@ -711,7 +711,7 @@ export class RagfairController
public extendOffer(info: IExtendOfferRequestData, sessionID: string): IItemEventRouterResponse public extendOffer(info: IExtendOfferRequestData, sessionID: string): IItemEventRouterResponse
{ {
let output = this.eventOutputHolder.getOutput(sessionID); const output = this.eventOutputHolder.getOutput(sessionID);
const pmcData = this.saveServer.getProfile(sessionID).characters.pmc; const pmcData = this.saveServer.getProfile(sessionID).characters.pmc;
const offers = pmcData.RagfairInfo.offers; const offers = pmcData.RagfairInfo.offers;
const index = offers.findIndex((offer) => offer._id === info.offerId); const index = offers.findIndex((offer) => offer._id === info.offerId);
@ -743,7 +743,7 @@ export class RagfairController
); );
const request = this.createBuyTradeRequestObject("RUB", tax); const request = this.createBuyTradeRequestObject("RUB", tax);
output = this.paymentService.payMoney(pmcData, request, sessionID, output); this.paymentService.payMoney(pmcData, request, sessionID, output);
if (output.warnings.length > 0) if (output.warnings.length > 0)
{ {
return this.httpResponse.appendErrorToOutput( return this.httpResponse.appendErrorToOutput(

View File

@ -435,7 +435,7 @@ export class RepeatableQuestController
break; break;
} }
let output = this.eventOutputHolder.getOutput(sessionID); const output = this.eventOutputHolder.getOutput(sessionID);
if (!repeatableToChange) if (!repeatableToChange)
{ {
const message = "Unable to find repeatable quest to replace"; const message = "Unable to find repeatable quest to replace";
@ -447,7 +447,7 @@ export class RepeatableQuestController
// Charge player money for replacing quest // Charge player money for replacing quest
for (const cost of changeRequirement.changeCost) for (const cost of changeRequirement.changeCost)
{ {
output = this.paymentService.addPaymentToOutput(pmcData, cost.templateId, cost.count, sessionID, output); this.paymentService.addPaymentToOutput(pmcData, cost.templateId, cost.count, sessionID, output);
if (output.warnings.length > 0) if (output.warnings.length > 0)
{ {
return output; return output;

View File

@ -68,14 +68,18 @@ export class TradeController
{ {
const foundInRaid = this.traderConfig.purchasesAreFoundInRaid; const foundInRaid = this.traderConfig.purchasesAreFoundInRaid;
const buyData = <IProcessBuyTradeRequestData>request; const buyData = <IProcessBuyTradeRequestData>request;
return this.tradeHelper.buyItem(pmcData, buyData, sessionID, foundInRaid, output); this.tradeHelper.buyItem(pmcData, buyData, sessionID, foundInRaid, output);
return output;
} }
// Selling // Selling
if (request.type === "sell_to_trader") if (request.type === "sell_to_trader")
{ {
const sellData = <IProcessSellTradeRequestData>request; const sellData = <IProcessSellTradeRequestData>request;
return this.tradeHelper.sellItem(pmcData, pmcData, sellData, sessionID); this.tradeHelper.sellItem(pmcData, pmcData, sellData, sessionID, output);
return output;
} }
const errorMessage = `Unhandled trade event: ${request.type}`; const errorMessage = `Unhandled trade event: ${request.type}`;
@ -226,16 +230,19 @@ export class TradeController
sessionId: string, sessionId: string,
): IItemEventRouterResponse ): IItemEventRouterResponse
{ {
const output = this.eventOutputHolder.getOutput(sessionId);
const scavProfile = this.profileHelper.getFullProfile(sessionId)?.characters?.scav; const scavProfile = this.profileHelper.getFullProfile(sessionId)?.characters?.scav;
if (!scavProfile) if (!scavProfile)
{ {
return this.httpResponse.appendErrorToOutput( return this.httpResponse.appendErrorToOutput(
this.eventOutputHolder.getOutput(sessionId), output,
`Profile ${request.fromOwner.id} has no scav account`, `Profile ${request.fromOwner.id} has no scav account`,
); );
} }
return this.sellInventoryToTrader(sessionId, scavProfile, pmcData, Traders.FENCE); this.sellInventoryToTrader(sessionId, scavProfile, pmcData, Traders.FENCE, output);
return output;
} }
/** /**
@ -245,14 +252,15 @@ export class TradeController
* @param profileWithItemsToSell Profile with items to be sold to trader * @param profileWithItemsToSell Profile with items to be sold to trader
* @param profileThatGetsMoney Profile that gets the money after selling items * @param profileThatGetsMoney Profile that gets the money after selling items
* @param trader Trader to sell items to * @param trader Trader to sell items to
* @returns IItemEventRouterResponse * @param output IItemEventRouterResponse
*/ */
protected sellInventoryToTrader( protected sellInventoryToTrader(
sessionId: string, sessionId: string,
profileWithItemsToSell: IPmcData, profileWithItemsToSell: IPmcData,
profileThatGetsMoney: IPmcData, profileThatGetsMoney: IPmcData,
trader: Traders, trader: Traders,
): IItemEventRouterResponse output: IItemEventRouterResponse
): void
{ {
const handbookPrices = this.ragfairPriceService.getAllStaticPrices(); const handbookPrices = this.ragfairPriceService.getAllStaticPrices();
// TODO, apply trader sell bonuses? // TODO, apply trader sell bonuses?
@ -291,7 +299,7 @@ export class TradeController
}); });
} }
this.logger.debug(`Selling scav items to fence for ${sellRequest.price} roubles`); this.logger.debug(`Selling scav items to fence for ${sellRequest.price} roubles`);
return this.tradeHelper.sellItem(profileWithItemsToSell, profileThatGetsMoney, sellRequest, sessionId); this.tradeHelper.sellItem(profileWithItemsToSell, profileThatGetsMoney, sellRequest, sessionId, output);
} }
/** /**

View File

@ -915,7 +915,7 @@ export class InventoryHelper
sessionId: string, sessionId: string,
removeRequest: IInventoryRemoveRequestData, removeRequest: IInventoryRemoveRequestData,
output: IItemEventRouterResponse, output: IItemEventRouterResponse,
): IItemEventRouterResponse ): void
{ {
const fullProfile = this.profileHelper.getFullProfile(sessionId); const fullProfile = this.profileHelper.getFullProfile(sessionId);
@ -951,8 +951,6 @@ export class InventoryHelper
messageWithReward.rewardCollected = !hasRewardItemsRemaining; messageWithReward.rewardCollected = !hasRewardItemsRemaining;
} }
} }
return output;
} }
public removeItemByCount( public removeItemByCount(

View File

@ -10,6 +10,7 @@ import { IAddItemDirectRequest } from "@spt-aki/models/eft/inventory/IAddItemDir
import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse"; import { IItemEventRouterResponse } from "@spt-aki/models/eft/itemEvent/IItemEventRouterResponse";
import { IProcessBuyTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBuyTradeRequestData"; import { IProcessBuyTradeRequestData } from "@spt-aki/models/eft/trade/IProcessBuyTradeRequestData";
import { IProcessSellTradeRequestData } from "@spt-aki/models/eft/trade/IProcessSellTradeRequestData"; import { IProcessSellTradeRequestData } from "@spt-aki/models/eft/trade/IProcessSellTradeRequestData";
import { BackendErrorCodes } from "@spt-aki/models/enums/BackendErrorCodes";
import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes"; import { ConfigTypes } from "@spt-aki/models/enums/ConfigTypes";
import { Traders } from "@spt-aki/models/enums/Traders"; import { Traders } from "@spt-aki/models/enums/Traders";
import { IInventoryConfig } from "@spt-aki/models/spt/config/IInventoryConfig"; import { IInventoryConfig } from "@spt-aki/models/spt/config/IInventoryConfig";
@ -65,7 +66,7 @@ export class TradeHelper
sessionID: string, sessionID: string,
foundInRaid: boolean, foundInRaid: boolean,
output: IItemEventRouterResponse, output: IItemEventRouterResponse,
): IItemEventRouterResponse ): void
{ {
let offerItems: Item[] = []; let offerItems: Item[] = [];
let buyCallback: { (buyCount: number) }; let buyCallback: { (buyCount: number) };
@ -132,10 +133,13 @@ export class TradeHelper
itemPurchased.upd.StackObjectsCount -= buyCount; itemPurchased.upd.StackObjectsCount -= buyCount;
/// Pay for item /// Pay for item
output = this.paymentService.payMoney(pmcData, buyRequestData, sessionID, output); this.paymentService.payMoney(pmcData, buyRequestData, sessionID, output);
if (output.warnings.length > 0) if (output.warnings.length > 0)
{ {
throw new Error(`Transaction failed: ${output.warnings[0].errmsg}`); const errorMessage = `Transaction failed: ${output.warnings[0].errmsg}`;
this.httpResponse.appendErrorToOutput(output, errorMessage);
return;
} }
this.fenceService.removeFenceOffer(buyRequestData.item_id); this.fenceService.removeFenceOffer(buyRequestData.item_id);
@ -147,7 +151,9 @@ export class TradeHelper
{ {
this.logger.debug(`Tried to buy item ${buyRequestData.item_id} from fence that no longer exists`); this.logger.debug(`Tried to buy item ${buyRequestData.item_id} from fence that no longer exists`);
const message = this.localisationService.getText("ragfair-offer_no_longer_exists"); const message = this.localisationService.getText("ragfair-offer_no_longer_exists");
return this.httpResponse.appendErrorToOutput(output, message); this.httpResponse.appendErrorToOutput(output, message);
return;
} }
offerItems = this.itemHelper.findAndReturnChildrenAsItems(fenceItems, buyRequestData.item_id); offerItems = this.itemHelper.findAndReturnChildrenAsItems(fenceItems, buyRequestData.item_id);
@ -185,10 +191,10 @@ export class TradeHelper
} }
/// Pay for item /// Pay for item
output = this.paymentService.payMoney(pmcData, buyRequestData, sessionID, output); this.paymentService.payMoney(pmcData, buyRequestData, sessionID, output);
if (output.warnings.length > 0) if (output.warnings.length > 0)
{ {
throw new Error(`Transaction failed: ${output.warnings[0].errmsg}`); return this.httpResponse.appendErrorToOutput(output, output.warnings[0].errmsg, BackendErrorCodes.UNKNOWN_TRADING_ERROR);
} }
if (assortHasBuyRestrictions) if (assortHasBuyRestrictions)
@ -232,13 +238,11 @@ export class TradeHelper
this.inventoryHelper.addItemToStash(sessionID, request, pmcData, output); this.inventoryHelper.addItemToStash(sessionID, request, pmcData, output);
if (output.warnings.length > 0) if (output.warnings.length > 0)
{ {
return output; return;
} }
// Remove amount of items added to player stash // Remove amount of items added to player stash
itemsToSendRemaining -= itemCountToSend; itemsToSendRemaining -= itemCountToSend;
} }
return output;
} }
/** /**
@ -247,17 +251,16 @@ export class TradeHelper
* @param profileToReceiveMoney Profile to accept the money for selling item * @param profileToReceiveMoney Profile to accept the money for selling item
* @param sellRequest Request data * @param sellRequest Request data
* @param sessionID Session id * @param sessionID Session id
* @returns IItemEventRouterResponse * @param output IItemEventRouterResponse
*/ */
public sellItem( public sellItem(
profileWithItemsToSell: IPmcData, profileWithItemsToSell: IPmcData,
profileToReceiveMoney: IPmcData, profileToReceiveMoney: IPmcData,
sellRequest: IProcessSellTradeRequestData, sellRequest: IProcessSellTradeRequestData,
sessionID: string, sessionID: string,
): IItemEventRouterResponse output: IItemEventRouterResponse,
): void
{ {
let output = this.eventOutputHolder.getOutput(sessionID);
// Find item in inventory and remove it // Find item in inventory and remove it
for (const itemToBeRemoved of sellRequest.items) for (const itemToBeRemoved of sellRequest.items)
{ {
@ -270,17 +273,19 @@ export class TradeHelper
const errorMessage = `Unable to sell item ${itemToBeRemoved.id}, cannot be found in player inventory`; const errorMessage = `Unable to sell item ${itemToBeRemoved.id}, cannot be found in player inventory`;
this.logger.error(errorMessage); this.logger.error(errorMessage);
return this.httpResponse.appendErrorToOutput(output, errorMessage); this.httpResponse.appendErrorToOutput(output, errorMessage);
return;
} }
this.logger.debug(`Selling: id: ${matchingItemInInventory._id} tpl: ${matchingItemInInventory._tpl}`); this.logger.debug(`Selling: id: ${matchingItemInInventory._id} tpl: ${matchingItemInInventory._tpl}`);
// Also removes children // Also removes children
output = this.inventoryHelper.removeItem(profileWithItemsToSell, itemToBeRemoved.id, sessionID, output); this.inventoryHelper.removeItem(profileWithItemsToSell, itemToBeRemoved.id, sessionID, output);
} }
// Give player money for sold item(s) // Give player money for sold item(s)
return this.paymentService.getMoney(profileToReceiveMoney, sellRequest.price, sellRequest, output, sessionID); this.paymentService.giveProfileMoney(profileToReceiveMoney, sellRequest.price, sellRequest, output, sessionID);
} }
/** /**

View File

@ -61,7 +61,7 @@ export class PaymentService
if (!this.paymentHelper.isMoneyTpl(item._tpl)) if (!this.paymentHelper.isMoneyTpl(item._tpl))
{ {
// If the item is not money, remove it from the inventory. // If the item is not money, remove it from the inventory.
output = this.inventoryHelper.removeItem(pmcData, item._id, sessionID, output); this.inventoryHelper.removeItem(pmcData, item._id, sessionID, output);
request.scheme_items[index].count = 0; request.scheme_items[index].count = 0;
} }
else else
@ -91,7 +91,7 @@ export class PaymentService
if (currencyAmount > 0) if (currencyAmount > 0)
{ {
// Find money stacks in inventory and remove amount needed + update output object to inform client of changes // Find money stacks in inventory and remove amount needed + update output object to inform client of changes
output = this.addPaymentToOutput(pmcData, currencyTpl, currencyAmount, sessionID, output); this.addPaymentToOutput(pmcData, currencyTpl, currencyAmount, sessionID, output);
// If there are warnings, exit early. // If there are warnings, exit early.
if (output.warnings.length > 0) if (output.warnings.length > 0)
@ -163,13 +163,13 @@ export class PaymentService
* @param {string} sessionID * @param {string} sessionID
* @returns IItemEventRouterResponse * @returns IItemEventRouterResponse
*/ */
public getMoney( public giveProfileMoney(
pmcData: IPmcData, pmcData: IPmcData,
amount: number, amount: number,
body: IProcessSellTradeRequestData, body: IProcessSellTradeRequestData,
output: IItemEventRouterResponse, output: IItemEventRouterResponse,
sessionID: string, sessionID: string,
): IItemEventRouterResponse ): void
{ {
const trader = this.traderHelper.getTrader(body.tid, sessionID); const trader = this.traderHelper.getTrader(body.tid, sessionID);
const currency = this.paymentHelper.getCurrency(trader.currency); const currency = this.paymentHelper.getCurrency(trader.currency);
@ -233,8 +233,6 @@ export class PaymentService
pmcData.TradersInfo[body.tid].salesSum = saleSum; pmcData.TradersInfo[body.tid].salesSum = saleSum;
this.traderHelper.lvlUp(body.tid, pmcData); this.traderHelper.lvlUp(body.tid, pmcData);
return output;
} }
/** /**
@ -269,7 +267,6 @@ export class PaymentService
* @param amountToPay money value to pay * @param amountToPay money value to pay
* @param sessionID Session id * @param sessionID Session id
* @param output output object to send to client * @param output output object to send to client
* @returns IItemEventRouterResponse
*/ */
public addPaymentToOutput( public addPaymentToOutput(
pmcData: IPmcData, pmcData: IPmcData,
@ -277,7 +274,7 @@ export class PaymentService
amountToPay: number, amountToPay: number,
sessionID: string, sessionID: string,
output: IItemEventRouterResponse, output: IItemEventRouterResponse,
): IItemEventRouterResponse ): void
{ {
const moneyItemsInInventory = this.getSortedMoneyItemsInInventory( const moneyItemsInInventory = this.getSortedMoneyItemsInInventory(
pmcData, pmcData,
@ -298,13 +295,13 @@ export class PaymentService
amountAvailable: amountAvailable, amountAvailable: amountAvailable,
}), }),
); );
output = this.httpResponse.appendErrorToOutput( this.httpResponse.appendErrorToOutput(
output, output,
this.localisationService.getText("payment-not_enough_money_to_complete_transation_short"), this.localisationService.getText("payment-not_enough_money_to_complete_transation_short"),
BackendErrorCodes.UNKNOWN_TRADING_ERROR, BackendErrorCodes.UNKNOWN_TRADING_ERROR,
); );
return output; return;
} }
let leftToPay = amountToPay; let leftToPay = amountToPay;
@ -314,7 +311,7 @@ export class PaymentService
if (leftToPay >= itemAmount) if (leftToPay >= itemAmount)
{ {
leftToPay -= itemAmount; leftToPay -= itemAmount;
output = this.inventoryHelper.removeItem(pmcData, moneyItem._id, sessionID, output); this.inventoryHelper.removeItem(pmcData, moneyItem._id, sessionID, output);
} }
else else
{ {
@ -328,8 +325,6 @@ export class PaymentService
break; break;
} }
} }
return output;
} }
/** /**