From a0fa41cd58971480903963a8bcb98b326b15bc1c Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Mon, 31 Mar 2025 09:18:00 -0700 Subject: [PATCH] chore: accept ObjectId for accountId when sending inbox messages (#1409) Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1409 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- .../api/contributeGuildClassController.ts | 2 +- src/controllers/api/giftingController.ts | 2 +- src/controllers/api/inboxController.ts | 2 +- src/services/inboxService.ts | 6 +++--- src/services/inventoryService.ts | 2 +- src/services/missionInventoryUpdateService.ts | 12 ++++++------ src/services/questService.ts | 8 ++++---- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/controllers/api/contributeGuildClassController.ts b/src/controllers/api/contributeGuildClassController.ts index 854f5223..1a20f4ef 100644 --- a/src/controllers/api/contributeGuildClassController.ts +++ b/src/controllers/api/contributeGuildClassController.ts @@ -41,7 +41,7 @@ export const contributeGuildClassController: RequestHandler = async (req, res) = const members = await GuildMember.find({ guildId: payload.GuildId, status: 0 }, "accountId"); for (const member of members) { // somewhat unfaithful as on live the "msg" is not a loctag, but since we don't have the string, we'll let the client fill it in with "arg". - await createMessage(member.accountId.toString(), [ + await createMessage(member.accountId, [ { sndr: guild.Name, msg: "/Lotus/Language/Clan/Clan_AscensionCeremonyInProgressDetails", diff --git a/src/controllers/api/giftingController.ts b/src/controllers/api/giftingController.ts index ce3e5a30..f965e60c 100644 --- a/src/controllers/api/giftingController.ts +++ b/src/controllers/api/giftingController.ts @@ -56,7 +56,7 @@ export const giftingController: RequestHandler = async (req, res) => { await senderInventory.save(); const senderName = getSuffixedName(senderAccount); - await createMessage(account._id.toString(), [ + await createMessage(account._id, [ { sndr: senderName, msg: data.Message || "/Lotus/Language/Menu/GiftReceivedBody_NoCustomMessage", diff --git a/src/controllers/api/inboxController.ts b/src/controllers/api/inboxController.ts index 84ebf03e..7cb777e2 100644 --- a/src/controllers/api/inboxController.ts +++ b/src/controllers/api/inboxController.ts @@ -67,7 +67,7 @@ export const inboxController: RequestHandler = async (req, res) => { (await handleStoreItemAcquisition(gift.GiftType, inventory, giftQuantity)).InventoryChanges ); if (sender) { - await createMessage(sender._id.toString(), [ + await createMessage(sender._id, [ { sndr: recipientName, msg: "/Lotus/Language/Menu/GiftReceivedConfirmationBody", diff --git a/src/services/inboxService.ts b/src/services/inboxService.ts index 49b5cca3..0c2d698d 100644 --- a/src/services/inboxService.ts +++ b/src/services/inboxService.ts @@ -1,6 +1,6 @@ import { IMessageDatabase, Inbox } from "@/src/models/inboxModel"; import { getAccountForRequest } from "@/src/services/loginService"; -import { HydratedDocument } from "mongoose"; +import { HydratedDocument, Types } from "mongoose"; import { Request } from "express"; import eventMessages from "@/static/fixed_responses/eventMessages.json"; import { logger } from "@/src/utils/logger"; @@ -39,7 +39,7 @@ export const createNewEventMessages = async (req: Request): Promise => { return; } - const savedEventMessages = await createMessage(account._id.toString(), newEventMessages); + const savedEventMessages = await createMessage(account._id, newEventMessages); logger.debug("created event messages", savedEventMessages); const latestEventMessage = newEventMessages.reduce((prev, current) => @@ -50,7 +50,7 @@ export const createNewEventMessages = async (req: Request): Promise => { await account.save(); }; -export const createMessage = async (accountId: string, messages: IMessageCreationTemplate[]) => { +export const createMessage = async (accountId: string | Types.ObjectId, messages: IMessageCreationTemplate[]) => { const ownerIdMessages = messages.map(m => ({ ...m, ownerId: accountId diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 92543e6f..f296e43f 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -1019,7 +1019,7 @@ export const addEmailItem = async ( const meta = ExportEmailItems[typeName]; const emailItem = inventory.EmailItems.find(x => x.ItemType == typeName); if (!emailItem || !meta.sendOnlyOnce) { - await createMessage(inventory.accountOwnerId.toString(), [convertInboxMessage(meta.message)]); + await createMessage(inventory.accountOwnerId, [convertInboxMessage(meta.message)]); if (emailItem) { emailItem.ItemCount += 1; diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index b885c046..f4fe1164 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -105,13 +105,13 @@ export const addMissionInventoryUpdates = async ( if (!inventory.BrandedSuits.find(x => x.equals(SuitId))) { inventory.BrandedSuits.push(SuitId); - await createMessage(inventory.accountOwnerId.toString(), [ + await createMessage(inventory.accountOwnerId, [ { sndr: "/Lotus/Language/Menu/Mailbox_WarframeSender", msg: "/Lotus/Language/G1Quests/BrandedMessage", sub: "/Lotus/Language/G1Quests/BrandedTitle", att: ["/Lotus/Types/Recipes/Components/BrandRemovalBlueprint"], - highPriority: true // I cannot find any content of this within the last 10 years so I can only assume that highPriority is set (it certainly would make sense), but I just don't know for sure that it is so on live. + highPriority: true // TOVERIFY: I cannot find any content of this within the last 10 years so I can only assume that highPriority is set (it certainly would make sense), but I just don't know for sure that it is so on live. } ]); } @@ -292,14 +292,14 @@ export const addMissionInventoryUpdates = async ( if (gate.complete && !gate.sent) { gate.sent = true; if (gate.threshold == 0.5) { - await createMessage(inventory.accountOwnerId.toString(), [kuriaMessage50]); + await createMessage(inventory.accountOwnerId, [kuriaMessage50]); } else { - await createMessage(inventory.accountOwnerId.toString(), [kuriaMessage75]); + await createMessage(inventory.accountOwnerId, [kuriaMessage75]); } } } if (progress >= 1.0) { - await createMessage(inventory.accountOwnerId.toString(), [kuriaMessage100]); + await createMessage(inventory.accountOwnerId, [kuriaMessage100]); } } } else { @@ -338,7 +338,7 @@ export const addMissionInventoryUpdates = async ( for (const deathMark of value) { if (!inventory.DeathMarks.find(x => x == deathMark)) { // It's a new death mark; we have to say the line. - await createMessage(inventory.accountOwnerId.toString(), [ + await createMessage(inventory.accountOwnerId, [ { sub: "/Lotus/Language/G1Quests/DeathMarkTitle", sndr: "/Lotus/Language/G1Quests/DeathMarkSender", diff --git a/src/services/questService.ts b/src/services/questService.ts index 2e32ea1d..a8a20629 100644 --- a/src/services/questService.ts +++ b/src/services/questService.ts @@ -16,7 +16,7 @@ import { IQuestStage } from "@/src/types/inventoryTypes/inventoryTypes"; import { logger } from "@/src/utils/logger"; -import { HydratedDocument } from "mongoose"; +import { HydratedDocument, Types } from "mongoose"; import { ExportKeys } from "warframe-public-export-plus"; import { addFixedLevelRewards } from "./missionInventoryUpdateService"; import { IInventoryChanges } from "../types/purchaseTypes"; @@ -107,7 +107,7 @@ export const addQuestKey = ( } if (questKey.ItemType == "/Lotus/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain") { - void createMessage(inventory.accountOwnerId.toString(), [ + void createMessage(inventory.accountOwnerId, [ { sndr: "/Lotus/Language/Bosses/Loid", icon: "/Lotus/Interface/Icons/Npcs/Entrati/Loid.png", @@ -166,7 +166,7 @@ export const completeQuest = async (inventory: TInventoryDatabaseDocument, quest } if (chainStages[i].messageToSendWhenTriggered) { - await giveKeyChainMessage(inventory, inventory.accountOwnerId.toString(), { + await giveKeyChainMessage(inventory, inventory.accountOwnerId, { KeyChain: questKey, ChainStage: i }); @@ -238,7 +238,7 @@ export const giveKeyChainItem = async ( export const giveKeyChainMessage = async ( inventory: TInventoryDatabaseDocument, - accountId: string, + accountId: string | Types.ObjectId, keyChainInfo: IKeyChainRequest ): Promise => { const keyChainMessage = getKeyChainMessage(keyChainInfo);