From 31a9fd36204330d377181ac34c02c9569197eac1 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Thu, 10 Apr 2025 00:22:52 +0200 Subject: [PATCH] feat: automatically delete death mark messages after 24 hours Possibly unfaithful but more faithful than never deleting it at all. --- src/models/inboxModel.ts | 7 +++++-- src/services/missionInventoryUpdateService.ts | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/models/inboxModel.ts b/src/models/inboxModel.ts index 85dff3fb..fa265530 100644 --- a/src/models/inboxModel.ts +++ b/src/models/inboxModel.ts @@ -5,7 +5,7 @@ import { IMongoDate, IOid } from "@/src/types/commonTypes"; import { ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes"; export interface IMessageClient - extends Omit { + extends Omit { _id?: IOid; date: IMongoDate; startDate?: IMongoDate; @@ -16,6 +16,8 @@ export interface IMessageClient export interface IMessageDatabase extends IMessage { ownerId: Types.ObjectId; date: Date; //created at + attVisualOnly?: boolean; + expiry?: Date; _id: Types.ObjectId; } @@ -30,7 +32,6 @@ export interface IMessage { endDate?: Date; att?: string[]; countedAtt?: ITypeCount[]; - attVisualOnly?: boolean; transmission?: string; arg?: Arg[]; gifts?: IGift[]; @@ -145,6 +146,7 @@ messageSchema.set("toJSON", { delete returnedObject._id; delete returnedObject.__v; delete returnedObject.attVisualOnly; + delete returnedObject.expiry; messageClient.date = toMongoDate(messageDatabase.date); @@ -157,5 +159,6 @@ messageSchema.set("toJSON", { }); messageSchema.index({ ownerId: 1 }); +messageSchema.index({ expiry: 1 }, { expireAfterSeconds: 0 }); export const Inbox = model("Inbox", messageSchema, "inbox"); diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index ab5bdcdb..b389106c 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -372,10 +372,10 @@ export const addMissionInventoryUpdates = async ( sndr: "/Lotus/Language/G1Quests/DeathMarkSender", msg: "/Lotus/Language/G1Quests/DeathMarkMessage", icon: "/Lotus/Interface/Icons/Npcs/Stalker_d.png", - highPriority: true + highPriority: true, + expiry: new Date(Date.now() + 86400_000) // TOVERIFY: This type of inbox message seems to automatically delete itself. We'll just delete it after 24 hours, but it's clear if this is correct. } ]); - // TODO: This type of inbox message seems to automatically delete itself. Figure out under which conditions. } } inventory.DeathMarks = value;