From 2a09f6a1d1c906e3e3453a27a72ecad12249053d Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Thu, 3 Apr 2025 16:33:04 +0200 Subject: [PATCH] handle dojo decos in setPlacedDecoInfo --- src/models/guildModel.ts | 4 +++- src/models/personalRoomsModel.ts | 2 +- src/services/guildService.ts | 3 ++- src/services/shipCustomizationsService.ts | 14 ++++++++++++++ src/types/guildTypes.ts | 2 ++ src/types/shipTypes.ts | 4 +++- 6 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/models/guildModel.ts b/src/models/guildModel.ts index 70f94256..b2453aab 100644 --- a/src/models/guildModel.ts +++ b/src/models/guildModel.ts @@ -17,6 +17,7 @@ import { } from "@/src/types/guildTypes"; import { Document, Model, model, Schema, Types } from "mongoose"; import { fusionTreasuresSchema, typeCountSchema } from "./inventoryModels/inventoryModel"; +import { pictureFrameInfoSchema } from "./personalRoomsModel"; const dojoDecoSchema = new Schema({ Type: String, @@ -26,7 +27,8 @@ const dojoDecoSchema = new Schema({ RegularCredits: Number, MiscItems: { type: [typeCountSchema], default: undefined }, CompletionTime: Date, - RushPlatinum: Number + RushPlatinum: Number, + PictureFrameInfo: pictureFrameInfoSchema }); const dojoLeaderboardEntrySchema = new Schema( diff --git a/src/models/personalRoomsModel.ts b/src/models/personalRoomsModel.ts index b8049d6f..1c6a7c6d 100644 --- a/src/models/personalRoomsModel.ts +++ b/src/models/personalRoomsModel.ts @@ -12,7 +12,7 @@ import { } from "@/src/types/shipTypes"; import { Schema, model } from "mongoose"; -const pictureFrameInfoSchema = new Schema( +export const pictureFrameInfoSchema = new Schema( { Image: String, Filter: String, diff --git a/src/services/guildService.ts b/src/services/guildService.ts index b622987e..54c5b5bf 100644 --- a/src/services/guildService.ts +++ b/src/services/guildService.ts @@ -202,7 +202,8 @@ export const getDojoClient = async ( Type: deco.Type, Pos: deco.Pos, Rot: deco.Rot, - Name: deco.Name + Name: deco.Name, + PictureFrameInfo: deco.PictureFrameInfo }; if (deco.CompletionTime) { clientDeco.CompletionTime = toMongoDate(deco.CompletionTime); diff --git a/src/services/shipCustomizationsService.ts b/src/services/shipCustomizationsService.ts index 20c3d4ca..47764917 100644 --- a/src/services/shipCustomizationsService.ts +++ b/src/services/shipCustomizationsService.ts @@ -10,6 +10,9 @@ import { logger } from "@/src/utils/logger"; import { Types } from "mongoose"; import { addShipDecorations, getInventory } from "./inventoryService"; import { config } from "./configService"; +import { Guild } from "../models/guildModel"; +import { hasGuildPermission } from "./guildService"; +import { GuildPermission } from "../types/guildTypes"; export const setShipCustomizations = async ( accountId: string, @@ -154,6 +157,17 @@ export const handleSetShipDecorations = async ( }; export const handleSetPlacedDecoInfo = async (accountId: string, req: ISetPlacedDecoInfoRequest): Promise => { + if (req.GuildId && req.ComponentId) { + const guild = (await Guild.findById(req.GuildId))!; + if (await hasGuildPermission(guild, accountId, GuildPermission.Decorator)) { + const component = guild.DojoComponents.id(req.ComponentId)!; + const deco = component.Decos!.find(x => x._id.equals(req.DecoId))!; + deco.PictureFrameInfo = req.PictureFrameInfo; + await guild.save(); + } + return; + } + const personalRooms = await getPersonalRooms(accountId); const room = personalRooms.Ship.Rooms.find(room => room.Name === req.Room); diff --git a/src/types/guildTypes.ts b/src/types/guildTypes.ts index 9361df80..6438956e 100644 --- a/src/types/guildTypes.ts +++ b/src/types/guildTypes.ts @@ -1,6 +1,7 @@ import { Types } from "mongoose"; import { IOid, IMongoDate } from "@/src/types/commonTypes"; import { IFusionTreasure, IMiscItem, ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; +import { IPictureFrameInfo } from "./shipTypes"; export interface IGuildClient { _id: IOid; @@ -194,6 +195,7 @@ export interface IDojoDecoClient { MiscItems?: IMiscItem[]; CompletionTime?: IMongoDate; RushPlatinum?: number; + PictureFrameInfo?: IPictureFrameInfo; } export interface IDojoDecoDatabase extends Omit { diff --git a/src/types/shipTypes.ts b/src/types/shipTypes.ts index 936a5cc6..23c46c48 100644 --- a/src/types/shipTypes.ts +++ b/src/types/shipTypes.ts @@ -127,7 +127,9 @@ export interface ISetPlacedDecoInfoRequest { DecoId: string; Room: string; PictureFrameInfo: IPictureFrameInfo; - BootLocation: string; + BootLocation?: string; + ComponentId?: string; + GuildId?: string; } export interface IPictureFrameInfo {