From 6fa23fe95b6256e0c9ae7d3d83b818c64ae0ec0a Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Mon, 14 Apr 2025 04:22:04 +0200 Subject: [PATCH] feat: change loadout display in liset --- src/controllers/api/getShipController.ts | 5 +++- .../api/setShipFavouriteLoadoutController.ts | 28 +++++++++++-------- src/models/personalRoomsModel.ts | 3 ++ src/types/personalRoomsTypes.ts | 3 ++ src/types/shipTypes.ts | 5 +++- 5 files changed, 30 insertions(+), 14 deletions(-) diff --git a/src/controllers/api/getShipController.ts b/src/controllers/api/getShipController.ts index 10f6e25f..ac1ebadf 100644 --- a/src/controllers/api/getShipController.ts +++ b/src/controllers/api/getShipController.ts @@ -26,7 +26,10 @@ export const getShipController: RequestHandler = async (req, res) => { Colors: personalRooms.ShipInteriorColors, ShipAttachments: ship.ShipAttachments, SkinFlavourItem: ship.SkinFlavourItem - } + }, + FavouriteLoadoutId: personalRooms.Ship.FavouriteLoadoutId + ? toOid(personalRooms.Ship.FavouriteLoadoutId) + : undefined }, Apartment: personalRooms.Apartment, TailorShop: personalRooms.TailorShop diff --git a/src/controllers/api/setShipFavouriteLoadoutController.ts b/src/controllers/api/setShipFavouriteLoadoutController.ts index d798e0ed..d6f209b7 100644 --- a/src/controllers/api/setShipFavouriteLoadoutController.ts +++ b/src/controllers/api/setShipFavouriteLoadoutController.ts @@ -3,29 +3,33 @@ import { RequestHandler } from "express"; import { getPersonalRooms } from "@/src/services/personalRoomsService"; import { IOid } from "@/src/types/commonTypes"; import { Types } from "mongoose"; +import { TBootLocation } from "@/src/types/shipTypes"; export const setShipFavouriteLoadoutController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const personalRooms = await getPersonalRooms(accountId); const body = JSON.parse(String(req.body)) as ISetShipFavouriteLoadoutRequest; - if (body.BootLocation != "SHOP") { - throw new Error(`unexpected BootLocation: ${body.BootLocation}`); - } - const display = personalRooms.TailorShop.FavouriteLoadouts.find(x => x.Tag == body.TagName); - if (display) { - display.LoadoutId = new Types.ObjectId(body.FavouriteLoadoutId.$oid); + if (body.BootLocation == "LISET") { + personalRooms.Ship.FavouriteLoadoutId = new Types.ObjectId(body.FavouriteLoadoutId.$oid); + } else if (body.BootLocation == "SHOP") { + const display = personalRooms.TailorShop.FavouriteLoadouts.find(x => x.Tag == body.TagName!); + if (display) { + display.LoadoutId = new Types.ObjectId(body.FavouriteLoadoutId.$oid); + } else { + personalRooms.TailorShop.FavouriteLoadouts.push({ + Tag: body.TagName!, + LoadoutId: new Types.ObjectId(body.FavouriteLoadoutId.$oid) + }); + } } else { - personalRooms.TailorShop.FavouriteLoadouts.push({ - Tag: body.TagName, - LoadoutId: new Types.ObjectId(body.FavouriteLoadoutId.$oid) - }); + throw new Error(`unexpected BootLocation: ${body.BootLocation}`); } await personalRooms.save(); res.json({}); }; interface ISetShipFavouriteLoadoutRequest { - BootLocation: string; + BootLocation: TBootLocation; FavouriteLoadoutId: IOid; - TagName: string; + TagName?: string; // given request for SHOP, but not for LISET } diff --git a/src/models/personalRoomsModel.ts b/src/models/personalRoomsModel.ts index 1c6a7c6d..390fcc63 100644 --- a/src/models/personalRoomsModel.ts +++ b/src/models/personalRoomsModel.ts @@ -90,6 +90,9 @@ const orbiterSchema = new Schema( { Features: [String], Rooms: [roomSchema], + VignetteFish: { type: [String], default: undefined }, + FavouriteLoadoutId: Schema.Types.ObjectId, + Vignette: String, ContentUrlSignature: { type: String, required: false }, BootLocation: String }, diff --git a/src/types/personalRoomsTypes.ts b/src/types/personalRoomsTypes.ts index fb672955..c32c0498 100644 --- a/src/types/personalRoomsTypes.ts +++ b/src/types/personalRoomsTypes.ts @@ -12,6 +12,9 @@ import { Document, Model, Types } from "mongoose"; export interface IOrbiter { Features: string[]; Rooms: IRoom[]; + VignetteFish?: string[]; + FavouriteLoadoutId?: Types.ObjectId; + Vignette?: string; ContentUrlSignature?: string; BootLocation?: TBootLocation; } diff --git a/src/types/shipTypes.ts b/src/types/shipTypes.ts index 23c46c48..5f8626d1 100644 --- a/src/types/shipTypes.ts +++ b/src/types/shipTypes.ts @@ -28,8 +28,11 @@ export interface IShip { ShipId: IOid; ShipInterior: IShipInterior; Rooms: IRoom[]; - ContentUrlSignature?: string; + VignetteFish?: string[]; + FavouriteLoadoutId?: IOid; + Vignette?: string; BootLocation?: TBootLocation; + ContentUrlSignature?: string; } export interface IShipDatabase {