返回提交历史
Added
src/controllers/api/setDojoComponentSettingsController.ts
+25
-0
Modified
src/models/guildModel.ts
+1
-0
Modified
src/routes/api.ts
+2
-0
Modified
src/services/guildService.ts
+2
-1
Modified
src/types/guildTypes.ts
+1
-0
XFEstudio/SpaceNinjaServer
feat: dojo component settings (#1509)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1509 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
7f696671
代码差异
5 个文件
+31
-1
@@ -0,0 +1,25 @@
1
import { getJSONfromString } from "@/src/helpers/stringHelpers";
2
import { getDojoClient, getGuildForRequestEx, hasAccessToDojo, hasGuildPermission } from "@/src/services/guildService";
3
import { getInventory } from "@/src/services/inventoryService";
4
import { getAccountIdForRequest } from "@/src/services/loginService";
5
import { GuildPermission } from "@/src/types/guildTypes";
6
import { RequestHandler } from "express";
7
8
export const setDojoComponentSettingsController: RequestHandler = async (req, res) => {
9
const accountId = await getAccountIdForRequest(req);
10
const inventory = await getInventory(accountId, "GuildId LevelKeys");
11
const guild = await getGuildForRequestEx(req, inventory);
12
if (!hasAccessToDojo(inventory) || !(await hasGuildPermission(guild, accountId, GuildPermission.Decorator))) {
13
res.json({ DojoRequestStatus: -1 });
14
return;
15
}
16
const component = guild.DojoComponents.id(req.query.componentId)!;
17
const data = getJSONfromString<ISetDojoComponentSettingsRequest>(String(req.body));
18
component.Settings = data.Settings;
19
await guild.save();
20
res.json(await getDojoClient(guild, 0, component._id));
21
};
22
23
interface ISetDojoComponentSettingsRequest {
24
Settings: string;
25
}
@@ -63,6 +63,7 @@ const dojoComponentSchema = new Schema<IDojoComponentDatabase>({
63
63
Colors: { type: [Number], default: undefined },
64
64
PendingLights: { type: [Number], default: undefined },
65
65
Lights: { type: [Number], default: undefined },
66
Settings: String,
66
67
Leaderboard: { type: [dojoLeaderboardEntrySchema], default: undefined }
67
68
});
68
69
@@ -107,6 +107,7 @@ import { setAllianceGuildPermissionsController } from "@/src/controllers/api/set
107
107
import { setBootLocationController } from "@/src/controllers/api/setBootLocationController";
108
108
import { setDojoComponentColorsController } from "@/src/controllers/api/setDojoComponentColorsController";
109
109
import { setDojoComponentMessageController } from "@/src/controllers/api/setDojoComponentMessageController";
110
import { setDojoComponentSettingsController } from "@/src/controllers/api/setDojoComponentSettingsController";
110
111
import { setEquippedInstrumentController } from "@/src/controllers/api/setEquippedInstrumentController";
111
112
import { setGuildMotdController } from "@/src/controllers/api/setGuildMotdController";
112
113
import { setPlacedDecoInfoController } from "@/src/controllers/api/setPlacedDecoInfoController";
@@ -264,6 +265,7 @@ apiRouter.post("/saveVaultAutoContribute.php", saveVaultAutoContributeController
264
265
apiRouter.post("/sell.php", sellController);
265
266
apiRouter.post("/setDojoComponentColors.php", setDojoComponentColorsController);
266
267
apiRouter.post("/setDojoComponentMessage.php", setDojoComponentMessageController);
268
apiRouter.post("/setDojoComponentSettings.php", setDojoComponentSettingsController);
267
269
apiRouter.post("/setEquippedInstrument.php", setEquippedInstrumentController);
268
270
apiRouter.post("/setGuildMotd.php", setGuildMotdController);
269
271
apiRouter.post("/setPlacedDecoInfo.php", setPlacedDecoInfoController);
@@ -151,7 +151,8 @@ export const getDojoClient = async (
151
151
ppf: dojoComponent.ppf,
152
152
Name: dojoComponent.Name,
153
153
Message: dojoComponent.Message,
154
DecoCapacity: dojoComponent.DecoCapacity ?? 600
154
DecoCapacity: dojoComponent.DecoCapacity ?? 600,
155
Settings: dojoComponent.Settings
155
156
};
156
157
if (dojoComponent.pi) {
157
158
clientComponent.pi = toOid(dojoComponent.pi);
@@ -181,6 +181,7 @@ export interface IDojoComponentClient {
181
181
Colors?: number[];
182
182
PendingLights?: number[];
183
183
Lights?: number[];
184
Settings?: string;
184
185
}
185
186
186
187
export interface IDojoComponentDatabase