feat: setHubNpcCustomizations (#1762)
Closes #1757 Reviewed-on: #1762 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
parent
72b28f1d75
commit
ec6729db4d
21
src/controllers/api/setHubNpcCustomizationsController.ts
Normal file
21
src/controllers/api/setHubNpcCustomizationsController.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
||||
import { getInventory } from "@/src/services/inventoryService";
|
||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||
import { IHubNpcCustomization } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||
import { RequestHandler } from "express";
|
||||
|
||||
export const setHubNpcCustomizationsController: RequestHandler = async (req, res) => {
|
||||
const accountId = await getAccountIdForRequest(req);
|
||||
const inventory = await getInventory(accountId, "HubNpcCustomizations");
|
||||
const upload = getJSONfromString<IHubNpcCustomization>(String(req.body));
|
||||
inventory.HubNpcCustomizations ??= [];
|
||||
const cust = inventory.HubNpcCustomizations.find(x => x.Tag == upload.Tag);
|
||||
if (cust) {
|
||||
cust.Colors = upload.Colors;
|
||||
cust.Pattern = upload.Pattern;
|
||||
} else {
|
||||
inventory.HubNpcCustomizations.push(upload);
|
||||
}
|
||||
await inventory.save();
|
||||
res.end();
|
||||
};
|
@ -95,7 +95,8 @@ import {
|
||||
ISortieRewardAttenuation,
|
||||
IInvasionProgressDatabase,
|
||||
IInvasionProgressClient,
|
||||
IAccolades
|
||||
IAccolades,
|
||||
IHubNpcCustomization
|
||||
} from "../../types/inventoryTypes/inventoryTypes";
|
||||
import { IOid } from "../../types/commonTypes";
|
||||
import {
|
||||
@ -1327,6 +1328,15 @@ const lockedWeaponGroupSchema = new Schema<ILockedWeaponGroupDatabase>(
|
||||
{ _id: false }
|
||||
);
|
||||
|
||||
const hubNpcCustomizationSchema = new Schema<IHubNpcCustomization>(
|
||||
{
|
||||
Colors: colorSchema,
|
||||
Pattern: String,
|
||||
Tag: String
|
||||
},
|
||||
{ _id: false }
|
||||
);
|
||||
|
||||
const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
||||
{
|
||||
accountOwnerId: Schema.Types.ObjectId,
|
||||
@ -1680,7 +1690,9 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
||||
|
||||
// G3 + Zanuka
|
||||
BrandedSuits: { type: [Schema.Types.ObjectId], default: undefined },
|
||||
LockedWeaponGroup: { type: lockedWeaponGroupSchema, default: undefined }
|
||||
LockedWeaponGroup: { type: lockedWeaponGroupSchema, default: undefined },
|
||||
|
||||
HubNpcCustomizations: { type: [hubNpcCustomizationSchema], default: undefined }
|
||||
},
|
||||
{ timestamps: { createdAt: "Created", updatedAt: false } }
|
||||
);
|
||||
|
@ -117,6 +117,7 @@ import { setDojoComponentMessageController } from "@/src/controllers/api/setDojo
|
||||
import { setDojoComponentSettingsController } from "@/src/controllers/api/setDojoComponentSettingsController";
|
||||
import { setEquippedInstrumentController } from "@/src/controllers/api/setEquippedInstrumentController";
|
||||
import { setGuildMotdController } from "@/src/controllers/api/setGuildMotdController";
|
||||
import { setHubNpcCustomizationsController } from "@/src/controllers/api/setHubNpcCustomizationsController";
|
||||
import { setPlacedDecoInfoController } from "@/src/controllers/api/setPlacedDecoInfoController";
|
||||
import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController";
|
||||
import { setShipFavouriteLoadoutController } from "@/src/controllers/api/setShipFavouriteLoadoutController";
|
||||
@ -285,6 +286,7 @@ apiRouter.post("/setDojoComponentMessage.php", setDojoComponentMessageController
|
||||
apiRouter.post("/setDojoComponentSettings.php", setDojoComponentSettingsController);
|
||||
apiRouter.post("/setEquippedInstrument.php", setEquippedInstrumentController);
|
||||
apiRouter.post("/setGuildMotd.php", setGuildMotdController);
|
||||
apiRouter.post("/setHubNpcCustomizations.php", setHubNpcCustomizationsController);
|
||||
apiRouter.post("/setPlacedDecoInfo.php", setPlacedDecoInfoController);
|
||||
apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController);
|
||||
apiRouter.post("/setShipFavouriteLoadout.php", setShipFavouriteLoadoutController);
|
||||
|
@ -368,6 +368,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu
|
||||
EchoesHexConquestActiveStickers?: string[];
|
||||
BrandedSuits?: IOid[];
|
||||
LockedWeaponGroup?: ILockedWeaponGroupClient;
|
||||
HubNpcCustomizations?: IHubNpcCustomization[];
|
||||
}
|
||||
|
||||
export interface IAffiliation {
|
||||
@ -1228,3 +1229,9 @@ export interface ILockedWeaponGroupDatabase {
|
||||
}
|
||||
|
||||
export type TPartialStartingGear = Pick<IInventoryClient, "LongGuns" | "Suits" | "Pistols" | "Melee">;
|
||||
|
||||
export interface IHubNpcCustomization {
|
||||
Colors?: IColor;
|
||||
Pattern: string;
|
||||
Tag: string;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user