From 36c7b6f8f8fcd774fce97a03678f5bee93c47ff8 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 27 Mar 2025 03:32:50 -0700 Subject: [PATCH] feat: handle DiscoveredMarkers in missionInventoryUpdate (#1339) Closes #679 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1339 --- src/models/inventoryModels/inventoryModel.ts | 13 +++++++++++-- src/services/missionInventoryUpdateService.ts | 11 +++++++++++ src/types/requestTypes.ts | 4 +++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index a2e9b4b7..7904a12f 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -81,7 +81,8 @@ import { IVendorPurchaseHistoryEntryClient, INemesisDatabase, INemesisClient, - IInfNode + IInfNode, + IDiscoveredMarker } from "../../types/inventoryTypes/inventoryTypes"; import { IOid } from "../../types/commonTypes"; import { @@ -377,6 +378,14 @@ droneSchema.set("toJSON", { } }); +const discoveredMarkerSchema = new Schema( + { + tag: String, + discoveryState: [Number] + }, + { _id: false } +); + const challengeProgressSchema = new Schema( { Progress: Number, @@ -1334,7 +1343,7 @@ const inventorySchema = new Schema( ActiveAvatarImageType: { type: String, default: "/Lotus/Types/StoreItems/AvatarImages/AvatarImageDefault" }, // open location store like EidolonPlainsDiscoverable or OrbVallisCaveDiscoverable - DiscoveredMarkers: [Schema.Types.Mixed], + DiscoveredMarkers: [discoveredMarkerSchema], //Open location mission like "JobId" + "StageCompletions" CompletedJobs: [Schema.Types.Mixed], diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index d8b1cc32..ef66afbf 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -359,6 +359,17 @@ export const addMissionInventoryUpdates = async ( } break; } + case "DiscoveredMarkers": { + for (const clientMarker of value) { + const dbMarker = inventory.DiscoveredMarkers.find(x => x.tag == clientMarker.tag); + if (dbMarker) { + dbMarker.discoveryState = clientMarker.discoveryState; + } else { + inventory.DiscoveredMarkers.push(clientMarker); + } + } + break; + } default: // Equipment XP updates if (equipmentKeys.includes(key as TEquipmentKey)) { diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index b61c99da..25158f20 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -16,7 +16,8 @@ import { IQuestKeyDatabase, ILoreFragmentScan, IUpgradeClient, - ICollectibleEntry + ICollectibleEntry, + IDiscoveredMarker } from "./inventoryTypes/inventoryTypes"; export interface IAffiliationChange { @@ -106,6 +107,7 @@ export type IMissionInventoryUpdateRequest = { NumExtraRewards: number; Count: number; }[]; + DiscoveredMarkers?: IDiscoveredMarker[]; } & { [K in TEquipmentKey]?: IEquipmentClient[]; };