Update NoteDraftService.ts

This commit is contained in:
syuilo 2025-09-24 10:26:01 +09:00
parent 8783334d42
commit ee5b9ba1a9
1 changed files with 28 additions and 3 deletions

View File

@ -98,7 +98,11 @@ export class NoteDraftService {
appliedDraft.id = this.idService.gen(); appliedDraft.id = this.idService.gen();
appliedDraft.userId = me.id; appliedDraft.userId = me.id;
const draft = this.noteDraftsRepository.insertOne(appliedDraft); const draft = await this.noteDraftsRepository.insertOne(appliedDraft);
if (draft.scheduledAt) {
this.schedule(draft);
}
return draft; return draft;
} }
@ -128,6 +132,12 @@ export class NoteDraftService {
await this.noteDraftsRepository.update(draftId, appliedDraft); await this.noteDraftsRepository.update(draftId, appliedDraft);
this.clearSchedule(draft).then(() => {
if (appliedDraft.scheduledAt) {
this.schedule(draft);
}
});
return { return {
...draft, ...draft,
...appliedDraft, ...appliedDraft,
@ -146,6 +156,8 @@ export class NoteDraftService {
} }
await this.noteDraftsRepository.delete(draft.id); await this.noteDraftsRepository.delete(draft.id);
this.clearSchedule(draft);
} }
@bindThis @bindThis
@ -322,8 +334,11 @@ export class NoteDraftService {
} }
@bindThis @bindThis
public async schedule(draft: MiNoteDraft, scheduledAt: Date): Promise<void> { public async schedule(draft: MiNoteDraft): Promise<void> {
const delay = scheduledAt.getTime() - Date.now(); if (draft.scheduledAt == null) return;
if (draft.scheduledAt.getTime() <= Date.now()) return;
const delay = draft.scheduledAt.getTime() - Date.now();
this.queueService.postScheduledNoteQueue.add(draft.id, { this.queueService.postScheduledNoteQueue.add(draft.id, {
noteDraftId: draft.id, noteDraftId: draft.id,
}, { }, {
@ -338,4 +353,14 @@ export class NoteDraftService {
}, },
}); });
} }
@bindThis
public async clearSchedule(draft: MiNoteDraft): Promise<void> {
const jobs = await this.queueService.postScheduledNoteQueue.getJobs(['delayed', 'waiting', 'active']);
for (const job of jobs) {
if (job.data.noteDraftId === draft.id) {
await job.remove();
}
}
}
} }