feat: automatically delete death mark messages after 24 hours #1535

Merged
Sainan merged 2 commits from deathmark-expiry into main 2025-04-10 07:16:30 -07:00
2 changed files with 8 additions and 6 deletions

View File

@ -5,7 +5,7 @@ import { IMongoDate, IOid } from "@/src/types/commonTypes";
import { ITypeCount } from "@/src/types/inventoryTypes/inventoryTypes";
export interface IMessageClient
extends Omit<IMessageDatabase, "_id" | "date" | "startDate" | "endDate" | "ownerId" | "attVisualOnly"> {
extends Omit<IMessageDatabase, "_id" | "date" | "startDate" | "endDate" | "ownerId" | "attVisualOnly" | "expiry"> {
_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<IMessageDatabase>("Inbox", messageSchema, "inbox");

View File

@ -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;