From ff8431604cf49599668d3ab934d6a9fcc481ff2e Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Mon, 21 Jul 2025 17:50:02 +0200 Subject: [PATCH] feat: vista suite backdrop and soundscape customisation --- src/controllers/api/apartmentController.ts | 22 ++++++++++++++++++++++ src/models/personalRoomsModel.ts | 4 +++- src/routes/api.ts | 2 ++ src/types/personalRoomsTypes.ts | 4 ++++ 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/controllers/api/apartmentController.ts diff --git a/src/controllers/api/apartmentController.ts b/src/controllers/api/apartmentController.ts new file mode 100644 index 00000000..638dd6ca --- /dev/null +++ b/src/controllers/api/apartmentController.ts @@ -0,0 +1,22 @@ +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getPersonalRooms } from "@/src/services/personalRoomsService"; +import { RequestHandler } from "express"; + +export const apartmentController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const personalRooms = await getPersonalRooms(accountId, "Apartment"); + const response: IApartmentResponse = {}; + if (req.query.backdrop !== undefined) { + response.NewBackdropItem = personalRooms.Apartment.VideoWallBackdrop = req.query.backdrop as string; + } + if (req.query.soundscape !== undefined) { + response.NewSoundscapeItem = personalRooms.Apartment.Soundscape = req.query.soundscape as string; + } + await personalRooms.save(); + res.json(response); +}; + +interface IApartmentResponse { + NewBackdropItem?: string; + NewSoundscapeItem?: string; +} diff --git a/src/models/personalRoomsModel.ts b/src/models/personalRoomsModel.ts index 965fa1dd..dfe316e2 100644 --- a/src/models/personalRoomsModel.ts +++ b/src/models/personalRoomsModel.ts @@ -122,7 +122,9 @@ const apartmentSchema = new Schema( { Rooms: [roomSchema], FavouriteLoadouts: [favouriteLoadoutSchema], - Gardening: gardeningSchema + Gardening: gardeningSchema, + VideoWallBackdrop: String, + Soundscape: String }, { _id: false } ); diff --git a/src/routes/api.ts b/src/routes/api.ts index 1ce15825..031f63cb 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -10,6 +10,7 @@ import { addPendingFriendController } from "@/src/controllers/api/addPendingFrie import { addToAllianceController } from "@/src/controllers/api/addToAllianceController"; import { addToGuildController } from "@/src/controllers/api/addToGuildController"; import { adoptPetController } from "@/src/controllers/api/adoptPetController"; +import { apartmentController } from "@/src/controllers/api/apartmentController"; import { arcaneCommonController } from "@/src/controllers/api/arcaneCommonController"; import { archonFusionController } from "@/src/controllers/api/archonFusionController"; import { artifactsController } from "@/src/controllers/api/artifactsController"; @@ -168,6 +169,7 @@ const apiRouter = express.Router(); // get apiRouter.get("/abandonLibraryDailyTask.php", abandonLibraryDailyTaskController); apiRouter.get("/abortDojoComponentDestruction.php", abortDojoComponentDestructionController); +apiRouter.get("/apartment.php", apartmentController); apiRouter.get("/cancelGuildAdvertisement.php", cancelGuildAdvertisementController); apiRouter.get("/changeDojoRoot.php", changeDojoRootController); apiRouter.get("/changeGuildRank.php", changeGuildRankController); diff --git a/src/types/personalRoomsTypes.ts b/src/types/personalRoomsTypes.ts index 8a73fe29..2c5403f8 100644 --- a/src/types/personalRoomsTypes.ts +++ b/src/types/personalRoomsTypes.ts @@ -91,12 +91,16 @@ export interface IApartmentClient { Gardening: IGardeningClient; Rooms: IRoom[]; FavouriteLoadouts: IFavouriteLoadout[]; + VideoWallBackdrop?: string; + Soundscape?: string; } export interface IApartmentDatabase { Gardening: IGardeningDatabase; Rooms: IRoom[]; FavouriteLoadouts: IFavouriteLoadoutDatabase[]; + VideoWallBackdrop?: string; + Soundscape?: string; } export interface IPlacedDecosDatabase { -- 2.47.2