chore: get rid of some unecessary conditionals #835

Merged
Sainan merged 2 commits from conditional-warn into main 2025-01-20 03:21:39 -08:00
15 changed files with 23 additions and 39 deletions

View File

@ -22,6 +22,7 @@
"@typescript-eslint/no-unsafe-assignment": "warn", "@typescript-eslint/no-unsafe-assignment": "warn",
"@typescript-eslint/no-explicit-any": "warn", "@typescript-eslint/no-explicit-any": "warn",
"@typescript-eslint/no-loss-of-precision": "warn", "@typescript-eslint/no-loss-of-precision": "warn",
"@typescript-eslint/no-unnecessary-condition": "warn",
"no-case-declarations": "warn", "no-case-declarations": "warn",
"prettier/prettier": "error", "prettier/prettier": "error",
"@typescript-eslint/semi": "error", "@typescript-eslint/semi": "error",

View File

@ -26,9 +26,7 @@ export const claimCompletedRecipeController: RequestHandler = async (req, res) =
if (!accountId) throw new Error("no account id"); if (!accountId) throw new Error("no account id");
const inventory = await getInventory(accountId); const inventory = await getInventory(accountId);
const pendingRecipe = inventory.PendingRecipes.find( const pendingRecipe = inventory.PendingRecipes.id(claimCompletedRecipeRequest.RecipeIds[0].$oid);
recipe => recipe._id?.toString() === claimCompletedRecipeRequest.RecipeIds[0].$oid
);
if (!pendingRecipe) { if (!pendingRecipe) {
throw new Error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$oid}`); throw new Error(`no pending recipe found with id ${claimCompletedRecipeRequest.RecipeIds[0].$oid}`);
} }

View File

@ -21,7 +21,6 @@ export const createGuildController: RequestHandler = async (req, res) => {
inventory.GuildId = guild._id; inventory.GuildId = guild._id;
// Give clan key (TODO: This should only be a blueprint) // Give clan key (TODO: This should only be a blueprint)
inventory.LevelKeys ??= [];
inventory.LevelKeys.push({ inventory.LevelKeys.push({
ItemType: "/Lotus/Types/Keys/DojoKey", ItemType: "/Lotus/Types/Keys/DojoKey",
ItemCount: 1 ItemCount: 1

View File

@ -10,19 +10,19 @@ export const findSessionsController: RequestHandler = (_req, res) => {
logger.debug("Found ID"); logger.debug("Found ID");
const session = getSession(req.id); const session = getSession(req.id);
if (session) res.json({ queryId: req.queryId, Sessions: session }); if (session.length) res.json({ queryId: req.queryId, Sessions: session });
else res.json({}); else res.json({});
} else if (req.originalSessionId != undefined) { } else if (req.originalSessionId != undefined) {
logger.debug("Found OriginalSessionID"); logger.debug("Found OriginalSessionID");
const session = getSession(req.originalSessionId); const session = getSession(req.originalSessionId);
if (session) res.json({ queryId: req.queryId, Sessions: session }); if (session.length) res.json({ queryId: req.queryId, Sessions: session });
else res.json({}); else res.json({});
} else { } else {
logger.debug("Found SessionRequest"); logger.debug("Found SessionRequest");
const session = getSession(req); const session = getSession(req);
if (session) res.json({ queryId: req.queryId, Sessions: session }); if (session.length) res.json({ queryId: req.queryId, Sessions: session });
else res.json({}); else res.json({});
} }
}; };

View File

@ -70,7 +70,7 @@ export const focusController: RequestHandler = async (req, res) => {
cost += ExportFocusUpgrades[focusType].baseFocusPointCost; cost += ExportFocusUpgrades[focusType].baseFocusPointCost;
inventory.FocusUpgrades.push({ ItemType: focusType, Level: 0 }); inventory.FocusUpgrades.push({ ItemType: focusType, Level: 0 });
} }
inventory.FocusXP[focusPolarity] -= cost; inventory.FocusXP![focusPolarity] -= cost;
await inventory.save(); await inventory.save();
res.json({ res.json({
FocusTypes: request.FocusTypes, FocusTypes: request.FocusTypes,
@ -88,7 +88,7 @@ export const focusController: RequestHandler = async (req, res) => {
const focusUpgradeDb = inventory.FocusUpgrades.find(entry => entry.ItemType == focusUpgrade.ItemType)!; const focusUpgradeDb = inventory.FocusUpgrades.find(entry => entry.ItemType == focusUpgrade.ItemType)!;
focusUpgradeDb.Level = focusUpgrade.Level; focusUpgradeDb.Level = focusUpgrade.Level;
} }
inventory.FocusXP[focusPolarity] -= cost; inventory.FocusXP![focusPolarity] -= cost;
await inventory.save(); await inventory.save();
res.json({ res.json({
FocusInfos: request.FocusInfos, FocusInfos: request.FocusInfos,
@ -113,7 +113,7 @@ export const focusController: RequestHandler = async (req, res) => {
const request = JSON.parse(String(req.body)) as IUnbindUpgradeRequest; const request = JSON.parse(String(req.body)) as IUnbindUpgradeRequest;
const focusPolarity = focusTypeToPolarity(request.FocusTypes[0]); const focusPolarity = focusTypeToPolarity(request.FocusTypes[0]);
const inventory = await getInventory(accountId); const inventory = await getInventory(accountId);
inventory.FocusXP[focusPolarity] -= 750_000 * request.FocusTypes.length; inventory.FocusXP![focusPolarity] -= 750_000 * request.FocusTypes.length;
addMiscItems(inventory, [ addMiscItems(inventory, [
{ {
ItemType: "/Lotus/Types/Gameplay/Eidolon/Resources/SentientShards/SentientShardBrilliantItem", ItemType: "/Lotus/Types/Gameplay/Eidolon/Resources/SentientShards/SentientShardBrilliantItem",

View File

@ -34,9 +34,6 @@ export const gildWeaponController: RequestHandler = async (req, res) => {
data.Category = req.query.Category as WeaponTypeInternal | "Hoverboards"; data.Category = req.query.Category as WeaponTypeInternal | "Hoverboards";
const inventory = await getInventory(accountId); const inventory = await getInventory(accountId);
if (!inventory[data.Category]) {
throw new Error(`Category ${String(req.query.Category)} not found in inventory`);
}
const weaponIndex = inventory[data.Category].findIndex(x => String(x._id) === data.ItemId); const weaponIndex = inventory[data.Category].findIndex(x => String(x._id) === data.ItemId);
if (weaponIndex === -1) { if (weaponIndex === -1) {
throw new Error(`Weapon with ${data.ItemId} not found in category ${String(req.query.Category)}`); throw new Error(`Weapon with ${data.ItemId} not found in category ${String(req.query.Category)}`);

View File

@ -239,7 +239,7 @@ export const infestedFoundryController: RequestHandler = async (req, res) => {
inventory.InfestedFoundry!.Slots!--; inventory.InfestedFoundry!.Slots!--;
} }
inventory.InfestedFoundry!.ConsumedSuits ??= []; inventory.InfestedFoundry!.ConsumedSuits ??= [];
inventory.InfestedFoundry!.ConsumedSuits?.push(consumedSuit); inventory.InfestedFoundry!.ConsumedSuits.push(consumedSuit);
inventory.InfestedFoundry!.LastConsumedSuit = suit; inventory.InfestedFoundry!.LastConsumedSuit = suit;
inventory.InfestedFoundry!.AbilityOverrideUnlockCooldown = new Date( inventory.InfestedFoundry!.AbilityOverrideUnlockCooldown = new Date(
new Date().getTime() + 24 * 60 * 60 * 1000 new Date().getTime() + 24 * 60 * 60 * 1000

View File

@ -9,13 +9,11 @@ export const queueDojoComponentDestructionController: RequestHandler = async (re
guild.DojoComponents!.findIndex(x => x._id.toString() === componentId), guild.DojoComponents!.findIndex(x => x._id.toString() === componentId),
1 1
)[0]; )[0];
if (component) {
const room = Object.values(ExportDojoRecipes.rooms).find(x => x.resultType == component.pf); const room = Object.values(ExportDojoRecipes.rooms).find(x => x.resultType == component.pf);
if (room) { if (room) {
guild.DojoCapacity -= room.capacity; guild.DojoCapacity -= room.capacity;
guild.DojoEnergy -= room.energy; guild.DojoEnergy -= room.energy;
} }
}
await guild.save(); await guild.save();
res.json({ res.json({
DojoRequestStatus: 1 DojoRequestStatus: 1

View File

@ -75,6 +75,7 @@ export const startRecipeController: RequestHandler = async (req, res) => {
spectreLoadout.LongGuns = item.ItemType; spectreLoadout.LongGuns = item.ItemType;
spectreLoadout.LongGunsModularParts = item.ModularParts; spectreLoadout.LongGunsModularParts = item.ModularParts;
} else { } else {
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
console.assert(type == "/Lotus/Types/Game/LotusMeleeWeapon"); console.assert(type == "/Lotus/Types/Game/LotusMeleeWeapon");
const item = inventory.Melee.id(oid)!; const item = inventory.Melee.id(oid)!;
spectreLoadout.Melee = item.ItemType; spectreLoadout.Melee = item.ItemType;

View File

@ -22,7 +22,7 @@ export const syndicateSacrificeController: RequestHandler = async (request, resp
InventoryChanges: {}, InventoryChanges: {},
Level: data.SacrificeLevel, Level: data.SacrificeLevel,
LevelIncrease: level <= 0 ? 1 : level, LevelIncrease: level <= 0 ? 1 : level,
NewEpisodeReward: syndicate?.Tag == "RadioLegionIntermission9Syndicate" NewEpisodeReward: syndicate.Tag == "RadioLegionIntermission9Syndicate"
}; };
const manifest = ExportSyndicates[data.AffiliationTag]; const manifest = ExportSyndicates[data.AffiliationTag];

View File

@ -9,10 +9,6 @@ import { getInventory } from "@/src/services/inventoryService";
const viewController: RequestHandler = async (req, res) => { const viewController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req); const accountId = await getAccountIdForRequest(req);
const inventory = await getInventory(accountId, "XPInfo"); const inventory = await getInventory(accountId, "XPInfo");
if (!inventory) {
res.status(400).json({ error: "inventory was undefined" });
return;
}
const responseJson: IStatsView = {}; const responseJson: IStatsView = {};
responseJson.Weapons = []; responseJson.Weapons = [];

View File

@ -50,13 +50,7 @@ export const getWeaponType = (weaponName: string): WeaponTypeInternal => {
throw new Error(`${weaponName} doesn't quack like a weapon`); throw new Error(`${weaponName} doesn't quack like a weapon`);
} }
const weaponType = weaponInfo.productCategory; return weaponInfo.productCategory;
if (!weaponType) {
throw new Error(`unknown weapon category for item ${weaponName}`);
}
return weaponType;
}; };
export const getRecipe = (uniqueName: string): IRecipe | undefined => { export const getRecipe = (uniqueName: string): IRecipe | undefined => {

View File

@ -44,7 +44,7 @@ export const handleInventoryItemConfigChange = async (
// all non-empty entries are one loadout slot // all non-empty entries are one loadout slot
for (const [loadoutId, loadoutConfig] of Object.entries(operatorConfig)) { for (const [loadoutId, loadoutConfig] of Object.entries(operatorConfig)) {
logger.debug(`loadoutId ${loadoutId} loadoutConfig`, { config: loadoutConfig }); logger.debug(`loadoutId ${loadoutId} loadoutConfig`, { config: loadoutConfig });
const loadout = operatorLoadout.find(loadout => loadout._id?.toString() === loadoutId); const loadout = operatorLoadout.id(loadoutId);
// if no config with this id exists, create a new one // if no config with this id exists, create a new one
if (!loadout) { if (!loadout) {
@ -109,7 +109,7 @@ export const handleInventoryItemConfigChange = async (
} }
const loadoutIndex = loadout[loadoutSlot].indexOf(oldLoadoutConfig); const loadoutIndex = loadout[loadoutSlot].indexOf(oldLoadoutConfig);
if (loadoutIndex === undefined || loadoutIndex === -1) { if (loadoutIndex === -1) {
throw new Error("loadout index not found"); throw new Error("loadout index not found");
} }

View File

@ -55,7 +55,7 @@ export const handleSetShipDecorations = async (
if (placedDecoration.MoveId) { if (placedDecoration.MoveId) {
//moved within the same room //moved within the same room
if (placedDecoration.OldRoom === placedDecoration.Room) { if (placedDecoration.OldRoom === placedDecoration.Room) {
const existingDecorationIndex = roomToPlaceIn?.PlacedDecos?.findIndex( const existingDecorationIndex = roomToPlaceIn.PlacedDecos.findIndex(
deco => deco._id.toString() === placedDecoration.MoveId deco => deco._id.toString() === placedDecoration.MoveId
); );
@ -136,7 +136,7 @@ export const handleSetShipDecorations = async (
//place decoration //place decoration
const decoId = new Types.ObjectId(); const decoId = new Types.ObjectId();
roomToPlaceIn.PlacedDecos?.push({ roomToPlaceIn.PlacedDecos.push({
Type: placedDecoration.Type, Type: placedDecoration.Type,
Pos: placedDecoration.Pos, Pos: placedDecoration.Pos,
Rot: placedDecoration.Rot, Rot: placedDecoration.Rot,
@ -157,7 +157,7 @@ export const handleSetPlacedDecoInfo = async (accountId: string, req: ISetPlaced
throw new Error("room not found"); throw new Error("room not found");
} }
const placedDeco = room.PlacedDecos?.id(req.DecoId); const placedDeco = room.PlacedDecos.id(req.DecoId);
if (!placedDeco) { if (!placedDeco) {
throw new Error("deco not found"); throw new Error("deco not found");
} }

View File

@ -223,7 +223,7 @@ export interface IInventoryResponse extends IDailyAffiliations {
Sentinels: IEquipmentDatabase[]; Sentinels: IEquipmentDatabase[];
EmailItems: ITypeCount[]; EmailItems: ITypeCount[];
CompletedSyndicates: string[]; CompletedSyndicates: string[];
FocusXP: IFocusXP; FocusXP?: IFocusXP;
Wishlist: string[]; Wishlist: string[];
Alignment: IAlignment; Alignment: IAlignment;
CompletedSorties: string[]; CompletedSorties: string[];
@ -235,7 +235,7 @@ export interface IInventoryResponse extends IDailyAffiliations {
ShipDecorations: IConsumable[]; ShipDecorations: IConsumable[];
DiscoveredMarkers: IDiscoveredMarker[]; DiscoveredMarkers: IDiscoveredMarker[];
CompletedJobs: ICompletedJob[]; CompletedJobs: ICompletedJob[];
FocusAbility: string; FocusAbility?: string;
FocusUpgrades: IFocusUpgrade[]; FocusUpgrades: IFocusUpgrade[];
OperatorAmps: IEquipmentDatabase[]; OperatorAmps: IEquipmentDatabase[];
HasContributedToDojo?: boolean; HasContributedToDojo?: boolean;