XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

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
AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
提交于

代码差异

3 个文件 +15 -10
Modified src/controllers/api/inventoryController.ts +12 -5
@@ -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 = {
Modified src/models/inventoryModels/inventoryModel.ts +2 -4
@@ -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
Modified src/types/inventoryTypes/inventoryTypes.ts +1 -1
@@ -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[];