From daf721f7cdcc3b0c0184191a2e0a19f397f47c85 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Wed, 14 May 2025 21:13:49 -0700 Subject: [PATCH] chore: don't set a default avatar image type in inventory (#2075) This seems to be somewhat of an issue for older versions, plus it's not really accurate anyway. Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2075 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- src/controllers/api/addToAllianceController.ts | 4 ++-- src/controllers/api/addToGuildController.ts | 4 ++-- src/controllers/api/giftingController.ts | 9 +++++++-- src/controllers/api/inboxController.ts | 9 +++++++-- src/models/inventoryModels/inventoryModel.ts | 2 +- src/services/inventoryService.ts | 4 ++++ src/types/inventoryTypes/inventoryTypes.ts | 2 +- 7 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/controllers/api/addToAllianceController.ts b/src/controllers/api/addToAllianceController.ts index e7b24dec..7509e95a 100644 --- a/src/controllers/api/addToAllianceController.ts +++ b/src/controllers/api/addToAllianceController.ts @@ -1,7 +1,7 @@ import { getJSONfromString, regexEscape } from "@/src/helpers/stringHelpers"; import { Alliance, AllianceMember, Guild, GuildMember } from "@/src/models/guildModel"; import { createMessage } from "@/src/services/inboxService"; -import { getInventory } from "@/src/services/inventoryService"; +import { getEffectiveAvatarImageType, getInventory } from "@/src/services/inventoryService"; import { getAccountForRequest, getSuffixedName } from "@/src/services/loginService"; import { GuildPermission } from "@/src/types/guildTypes"; import { logger } from "@/src/utils/logger"; @@ -95,7 +95,7 @@ export const addToAllianceController: RequestHandler = async (req, res) => { } ], sub: "/Lotus/Language/Menu/Mailbox_AllianceInvite_Title", - icon: ExportFlavour[senderInventory.ActiveAvatarImageType].icon, + icon: ExportFlavour[getEffectiveAvatarImageType(senderInventory)].icon, contextInfo: alliance._id.toString(), highPriority: true, acceptAction: "ALLIANCE_INVITE", diff --git a/src/controllers/api/addToGuildController.ts b/src/controllers/api/addToGuildController.ts index aeda4214..53f0b445 100644 --- a/src/controllers/api/addToGuildController.ts +++ b/src/controllers/api/addToGuildController.ts @@ -4,7 +4,7 @@ import { Account } from "@/src/models/loginModel"; import { addInventoryDataToFriendInfo, areFriends } from "@/src/services/friendService"; import { hasGuildPermission } from "@/src/services/guildService"; import { createMessage } from "@/src/services/inboxService"; -import { getInventory } from "@/src/services/inventoryService"; +import { getEffectiveAvatarImageType, getInventory } from "@/src/services/inventoryService"; import { getAccountForRequest, getAccountIdForRequest, getSuffixedName } from "@/src/services/loginService"; import { IOid } from "@/src/types/commonTypes"; import { GuildPermission, IGuildMemberClient } from "@/src/types/guildTypes"; @@ -64,7 +64,7 @@ export const addToGuildController: RequestHandler = async (req, res) => { } ], sub: "/Lotus/Language/Menu/Mailbox_ClanInvite_Title", - icon: ExportFlavour[senderInventory.ActiveAvatarImageType].icon, + icon: ExportFlavour[getEffectiveAvatarImageType(senderInventory)].icon, contextInfo: payload.GuildId.$oid, highPriority: true, acceptAction: "GUILD_INVITE", diff --git a/src/controllers/api/giftingController.ts b/src/controllers/api/giftingController.ts index 09b48f4e..55865cee 100644 --- a/src/controllers/api/giftingController.ts +++ b/src/controllers/api/giftingController.ts @@ -2,7 +2,12 @@ import { getJSONfromString } from "@/src/helpers/stringHelpers"; import { Account } from "@/src/models/loginModel"; import { areFriends } from "@/src/services/friendService"; import { createMessage } from "@/src/services/inboxService"; -import { combineInventoryChanges, getInventory, updateCurrency } from "@/src/services/inventoryService"; +import { + combineInventoryChanges, + getEffectiveAvatarImageType, + getInventory, + updateCurrency +} from "@/src/services/inventoryService"; import { getAccountForRequest, getSuffixedName } from "@/src/services/loginService"; import { handleStoreItemAcquisition } from "@/src/services/purchaseService"; import { IOid } from "@/src/types/commonTypes"; @@ -85,7 +90,7 @@ export const giftingController: RequestHandler = async (req, res) => { } ], sub: "/Lotus/Language/Menu/GiftReceivedSubject", - icon: ExportFlavour[senderInventory.ActiveAvatarImageType].icon, + icon: ExportFlavour[getEffectiveAvatarImageType(senderInventory)].icon, gifts: [ { GiftType: data.PurchaseParams.StoreItem diff --git a/src/controllers/api/inboxController.ts b/src/controllers/api/inboxController.ts index 94d253ad..8e775c10 100644 --- a/src/controllers/api/inboxController.ts +++ b/src/controllers/api/inboxController.ts @@ -9,7 +9,12 @@ import { getMessage } from "@/src/services/inboxService"; import { getAccountForRequest, getAccountFromSuffixedName, getSuffixedName } from "@/src/services/loginService"; -import { addItems, combineInventoryChanges, getInventory } from "@/src/services/inventoryService"; +import { + addItems, + combineInventoryChanges, + getEffectiveAvatarImageType, + getInventory +} from "@/src/services/inventoryService"; import { logger } from "@/src/utils/logger"; import { ExportFlavour } from "warframe-public-export-plus"; import { handleStoreItemAcquisition } from "@/src/services/purchaseService"; @@ -88,7 +93,7 @@ export const inboxController: RequestHandler = async (req, res) => { } ], sub: "/Lotus/Language/Menu/GiftReceivedConfirmationSubject", - icon: ExportFlavour[inventory.ActiveAvatarImageType].icon, + icon: ExportFlavour[getEffectiveAvatarImageType(inventory)].icon, highPriority: true } ]); diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index e5e2378a..27caf691 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -1621,7 +1621,7 @@ const inventorySchema = new Schema( Drones: [droneSchema], //Active profile ico - ActiveAvatarImageType: { type: String, default: "/Lotus/Types/StoreItems/AvatarImages/AvatarImageDefault" }, + ActiveAvatarImageType: String, // open location store like EidolonPlainsDiscoverable or OrbVallisCaveDiscoverable DiscoveredMarkers: [discoveredMarkerSchema], diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index a4e33ee3..09d23306 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -2025,3 +2025,7 @@ export const giveNemesisPetRecipe = ( } satisfies INemesisPetTargetFingerprint) }); }; + +export const getEffectiveAvatarImageType = (inventory: TInventoryDatabaseDocument): string => { + return inventory.ActiveAvatarImageType ?? "/Lotus/Types/StoreItems/AvatarImages/AvatarImageDefault"; +}; diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index ea09db80..32cac658 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -296,7 +296,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu SortieRewardAttenuation?: ISortieRewardAttenuation[]; Drones: IDroneClient[]; StepSequencers: IStepSequencer[]; - ActiveAvatarImageType: string; + ActiveAvatarImageType?: string; ShipDecorations: ITypeCount[]; DiscoveredMarkers: IDiscoveredMarker[]; //CompletedJobs: ICompletedJob[];