返回提交历史
Modified
src/controllers/api/inventoryController.ts
+12
-5
Modified
src/models/inventoryModels/inventoryModel.ts
+2
-4
Modified
src/types/inventoryTypes/inventoryTypes.ts
+1
-1
XFEstudio/XFESpaceNinjaServer
chore: save inventory only if it was modified (#3821)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3821 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
b94ab584
代码差异
3 个文件
+15
-10
@@ -309,9 +309,10 @@ export const inventoryController: RequestHandler = async (request, response) =>
309
309
++i;
310
310
}
311
311
312
if (inventory.LastInventorySync) {
313
const lastSyncDuviriMood = Math.trunc(inventory.LastInventorySync.getTimestamp().getTime() / 7200000);
314
const currentDuviriMood = Math.trunc(Date.now() / 7200000);
312
{
313
const now = Date.now();
314
const lastSyncDuviriMood = Math.trunc((inventory.duviriSeedRefresh?.getTime() ?? 0) / 7200000);
315
const currentDuviriMood = Math.trunc(now / 7200000);
315
316
if (lastSyncDuviriMood != currentDuviriMood) {
316
317
logger.debug(`refreshing duviri seed`);
317
318
if (!inventory.DuviriInfo) {
@@ -319,18 +320,22 @@ export const inventoryController: RequestHandler = async (request, response) =>
319
320
Seed: generateRewardSeed(),
320
321
NumCompletions: 0
321
322
};
323
inventory.duviriSeedRefresh = new Date(now);
322
324
} else {
323
325
inventory.DuviriInfo.Seed = generateRewardSeed();
326
inventory.duviriSeedRefresh = new Date(now);
324
327
}
325
328
}
326
329
}
327
inventory.LastInventorySync = new Types.ObjectId();
328
330
329
331
if (inventory.QuestKeys.some(x => x.ItemType.endsWith("KubrowQuestKeyChain") && x.Completed)) {
330
332
inventory.KubrowPets.forEach(item => item.Details && (item.Details.HasCollar = true));
331
333
}
332
334
await handleTauMemories(inventory);
333
await inventory.save();
335
336
if (inventory.isModified()) {
337
await inventory.save();
338
}
334
339
335
340
response.json(
336
341
await getInventoryResponse(
@@ -365,6 +370,8 @@ export const getInventoryResponse = async (
365
370
}
366
371
}
367
372
373
inventoryResponse.LastInventorySync = toOid(new Types.ObjectId());
374
368
375
// In case mission inventory update added an inbox message, we need to send the Mailbox part so the client knows to refresh it.
369
376
if (latestMessage) {
370
377
inventoryResponse.Mailbox = {
@@ -1944,7 +1944,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
1944
1944
1945
1945
//Unknown and system
1946
1946
DuviriInfo: DuviriInfoSchema,
1947
LastInventorySync: Schema.Types.ObjectId,
1947
duviriSeedRefresh: { type: Date, default: undefined }, // SNS specific field
1948
1948
//Mailbox: MailboxSchema,
1949
1949
HandlerPoints: Number,
1950
1950
ChallengesFixVersion: Number,
@@ -2030,6 +2030,7 @@ inventorySchema.set("toJSON", {
2030
2030
delete returnedObject.HarvesterPoints;
2031
2031
delete returnedObject.DeathSquadPoints;
2032
2032
delete returnedObject.NemesisTaxedCredits;
2033
delete returnedObject.duviriSeedRefresh;
2033
2034
2034
2035
const inventoryDatabase = returnedObject as Partial<IInventoryDatabase>;
2035
2036
const inventoryResponse = returnedObject as IInventoryClient;
@@ -2070,9 +2071,6 @@ inventorySchema.set("toJSON", {
2070
2071
sn: inventoryDatabase.LockedWeaponGroup.sn ? toOid(inventoryDatabase.LockedWeaponGroup.sn) : undefined
2071
2072
};
2072
2073
}
2073
if (inventoryDatabase.LastInventorySync) {
2074
inventoryResponse.LastInventorySync = toOid(inventoryDatabase.LastInventorySync);
2075
}
2076
2074
}
2077
2075
});
2078
2076
@@ -163,6 +163,7 @@ export interface IInventoryDatabase
163
163
HarvesterPoints?: number;
164
164
DeathSquadPoints?: number;
165
165
NemesisTaxedCredits?: number;
166
duviriSeedRefresh?: Date;
166
167
167
168
Created: Date;
168
169
CurrentLoadOutIds: Types.ObjectId[];
@@ -200,7 +201,6 @@ export interface IInventoryDatabase
200
201
LastLiteSortieReward?: ILastSortieRewardDatabase[];
201
202
CrewMembers: ICrewMemberDatabase[];
202
203
QualifyingInvasions: IInvasionProgressDatabase[];
203
LastInventorySync?: Types.ObjectId;
204
204
EndlessXP?: IEndlessXpProgressDatabase[];
205
205
DescentRewards?: IDescentCategoryRewardDatabase[];
206
206
PersonalGoalProgress?: IGoalProgressDatabase[];