forked from OpenWF/SpaceNinjaServer
Seems to be the same format as the request, so just mirror it back. This is so the client knows we acknowledged the change as it won't resync the ship until the next login. Closes #1822 Reviewed-on: OpenWF/SpaceNinjaServer#1824 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/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 == "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)
|
|
});
|
|
}
|
|
};
|