forked from OpenWF/SpaceNinjaServer
The only functionally relevant change is that orbiter scenes are now saved via SkinFlavourItem (as of U39?). The rest is cleanup of the types because the ship customization stuff was duplicated all over the place. Reviewed-on: OpenWF/SpaceNinjaServer#2402 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
43 lines
1.7 KiB
TypeScript
43 lines
1.7 KiB
TypeScript
import { getAccountIdForRequest } from "@/src/services/loginService";
|
|
import { RequestHandler } from "express";
|
|
import { getPersonalRooms } from "@/src/services/personalRoomsService";
|
|
import { IOid } from "@/src/types/commonTypes";
|
|
import { Types } from "mongoose";
|
|
import { IFavouriteLoadoutDatabase, TBootLocation } from "@/src/types/personalRoomsTypes";
|
|
|
|
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 == "LISET") {
|
|
personalRooms.Ship.FavouriteLoadoutId = new Types.ObjectId(body.FavouriteLoadoutId.$oid);
|
|
} else if (body.BootLocation == "APARTMENT") {
|
|
updateTaggedDisplay(personalRooms.Apartment.FavouriteLoadouts, body);
|
|
} else if (body.BootLocation == "SHOP") {
|
|
updateTaggedDisplay(personalRooms.TailorShop.FavouriteLoadouts, body);
|
|
} else {
|
|
console.log(body);
|
|
throw new Error(`unexpected BootLocation: ${body.BootLocation}`);
|
|
}
|
|
await personalRooms.save();
|
|
res.json(body);
|
|
};
|
|
|
|
interface ISetShipFavouriteLoadoutRequest {
|
|
BootLocation: TBootLocation;
|
|
FavouriteLoadoutId: IOid;
|
|
TagName?: string;
|
|
}
|
|
|
|
const updateTaggedDisplay = (arr: IFavouriteLoadoutDatabase[], body: ISetShipFavouriteLoadoutRequest): void => {
|
|
const display = arr.find(x => x.Tag == body.TagName!);
|
|
if (display) {
|
|
display.LoadoutId = new Types.ObjectId(body.FavouriteLoadoutId.$oid);
|
|
} else {
|
|
arr.push({
|
|
Tag: body.TagName!,
|
|
LoadoutId: new Types.ObjectId(body.FavouriteLoadoutId.$oid)
|
|
});
|
|
}
|
|
};
|