diff --git a/src/models/inboxModel.ts b/src/models/inboxModel.ts index 85dff3fb..37a7fc5e 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[]; @@ -137,14 +138,14 @@ messageSchema.virtual("messageId").get(function (this: IMessageDatabase) { messageSchema.set("toJSON", { virtuals: true, transform(_document, returnedObject) { - delete returnedObject.ownerId; - const messageDatabase = returnedObject as IMessageDatabase; const messageClient = returnedObject as IMessageClient; delete returnedObject._id; delete returnedObject.__v; + delete returnedObject.ownerId; delete returnedObject.attVisualOnly; + delete returnedObject.expiry; messageClient.date = toMongoDate(messageDatabase.date); @@ -157,5 +158,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 c9c93e9e..5af53893 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -394,10 +394,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;