返回提交历史
Modified
src/services/inventoryService.ts
+10
-1
Modified
src/services/itemDataService.ts
+17
-2
Modified
src/services/questService.ts
+1
-14
XFEstudio/SpaceNinjaServer
feat: handle acquisition of EmailItems (#1064)
Fixes #1063 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1064 Co-authored-by: Sainan <sainan@calamity.inc> Co-committed-by: Sainan <sainan@calamity.inc>
91582090
代码差异
3 个文件
+28
-17
@@ -35,7 +35,7 @@ import {
35
35
IUpdateChallengeProgressRequest
36
36
} from "../types/requestTypes";
37
37
import { logger } from "@/src/utils/logger";
38
import { getExalted, getKeyChainItems } from "@/src/services/itemDataService";
38
import { convertInboxMessage, getExalted, getKeyChainItems } from "@/src/services/itemDataService";
39
39
import {
40
40
EquipmentFeatures,
41
41
IEquipmentClient,
@@ -47,6 +47,7 @@ import {
47
47
ExportBundles,
48
48
ExportCustoms,
49
49
ExportDrones,
50
ExportEmailItems,
50
51
ExportEnemies,
51
52
ExportFlavour,
52
53
ExportFusionBundles,
@@ -71,6 +72,7 @@ import { addQuestKey, completeQuest } from "@/src/services/questService";
71
72
import { handleBundleAcqusition } from "./purchaseService";
72
73
import libraryDailyTasks from "@/static/fixed_responses/libraryDailyTasks.json";
73
74
import { getRandomElement, getRandomInt } from "./rngService";
75
import { createMessage } from "./inboxService";
74
76
75
77
export const createInventory = async (
76
78
accountOwnerId: Types.ObjectId,
@@ -425,6 +427,13 @@ export const addItem = async (
425
427
InventoryChanges: inventoryChanges
426
428
};
427
429
}
430
if (typeName in ExportEmailItems) {
431
const emailItem = ExportEmailItems[typeName];
432
await createMessage(inventory.accountOwnerId.toString(), [convertInboxMessage(emailItem.message)]);
433
return {
434
InventoryChanges: {}
435
};
436
}
428
437
429
438
// Path-based duck typing
430
439
switch (typeName.substr(1).split("/")[1]) {
@@ -36,6 +36,7 @@ import {
36
36
TReward
37
37
} from "warframe-public-export-plus";
38
38
import questCompletionItems from "@/static/fixed_responses/questCompletionRewards.json";
39
import { IMessage } from "../models/inboxModel";
39
40
40
41
export type WeaponTypeInternal =
41
42
| "LongGuns"
@@ -207,7 +208,7 @@ export const getQuestCompletionItems = (questKey: string): ITypeCount[] | undefi
207
208
return items;
208
209
};
209
210
210
export const getKeyChainMessage = ({ KeyChain, ChainStage }: IKeyChainRequest): IInboxMessage => {
211
export const getKeyChainMessage = ({ KeyChain, ChainStage }: IKeyChainRequest): IMessage => {
211
212
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
212
213
const chainStages = ExportKeys[KeyChain]?.chainStages;
213
214
if (!chainStages) {
@@ -227,5 +228,19 @@ export const getKeyChainMessage = ({ KeyChain, ChainStage }: IKeyChainRequest):
227
228
`client requested key chain message in keychain ${KeyChain} at stage ${ChainStage} but they did not exist`
228
229
);
229
230
}
230
return chainStageMessage;
231
return convertInboxMessage(chainStageMessage);
232
};
233
234
export const convertInboxMessage = (message: IInboxMessage): IMessage => {
235
return {
236
sndr: message.sender,
237
msg: message.body,
238
sub: message.title,
239
att: message.attachments.length > 0 ? message.attachments : undefined,
240
countedAtt: message.countedAttachments.length > 0 ? message.countedAttachments : undefined,
241
icon: message.icon ?? "",
242
transmission: message.transmission ?? "",
243
highPriority: message.highPriority ?? false,
244
r: false
245
} satisfies IMessage;
231
246
};
@@ -1,6 +1,5 @@
1
1
import { IKeyChainRequest } from "@/src/controllers/api/giveKeyChainTriggeredItemsController";
2
2
import { isEmptyObject } from "@/src/helpers/general";
3
import { IMessage } from "@/src/models/inboxModel";
4
3
import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
5
4
import { createMessage } from "@/src/services/inboxService";
6
5
import { addItem, addKeyChainItems } from "@/src/services/inventoryService";
@@ -198,19 +197,7 @@ export const giveKeyChainMessage = async (
198
197
): Promise<void> => {
199
198
const keyChainMessage = getKeyChainMessage(keyChainInfo);
200
199
201
const message = {
202
sndr: keyChainMessage.sender,
203
msg: keyChainMessage.body,
204
sub: keyChainMessage.title,
205
att: keyChainMessage.attachments.length > 0 ? keyChainMessage.attachments : undefined,
206
countedAtt: keyChainMessage.countedAttachments.length > 0 ? keyChainMessage.countedAttachments : undefined,
207
icon: keyChainMessage.icon ?? "",
208
transmission: keyChainMessage.transmission ?? "",
209
highPriority: keyChainMessage.highPriority ?? false,
210
r: false
211
} satisfies IMessage;
212
213
await createMessage(accountId, [message]);
200
await createMessage(accountId, [keyChainMessage]);
214
201
215
202
updateQuestStage(inventory, keyChainInfo, { m: true });
216
203
};