From ee5b9ba1a9001cedb7a4f767b7f2214b4b131cdd Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Wed, 24 Sep 2025 10:26:01 +0900 Subject: [PATCH] Update NoteDraftService.ts --- packages/backend/src/core/NoteDraftService.ts | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/packages/backend/src/core/NoteDraftService.ts b/packages/backend/src/core/NoteDraftService.ts index 165fac05f5..2925aa9ea1 100644 --- a/packages/backend/src/core/NoteDraftService.ts +++ b/packages/backend/src/core/NoteDraftService.ts @@ -98,7 +98,11 @@ export class NoteDraftService { appliedDraft.id = this.idService.gen(); 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; } @@ -128,6 +132,12 @@ export class NoteDraftService { await this.noteDraftsRepository.update(draftId, appliedDraft); + this.clearSchedule(draft).then(() => { + if (appliedDraft.scheduledAt) { + this.schedule(draft); + } + }); + return { ...draft, ...appliedDraft, @@ -146,6 +156,8 @@ export class NoteDraftService { } await this.noteDraftsRepository.delete(draft.id); + + this.clearSchedule(draft); } @bindThis @@ -322,8 +334,11 @@ export class NoteDraftService { } @bindThis - public async schedule(draft: MiNoteDraft, scheduledAt: Date): Promise { - const delay = scheduledAt.getTime() - Date.now(); + public async schedule(draft: MiNoteDraft): Promise { + 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, { noteDraftId: draft.id, }, { @@ -338,4 +353,14 @@ export class NoteDraftService { }, }); } + + @bindThis + public async clearSchedule(draft: MiNoteDraft): Promise { + const jobs = await this.queueService.postScheduledNoteQueue.getJobs(['delayed', 'waiting', 'active']); + for (const job of jobs) { + if (job.data.noteDraftId === draft.id) { + await job.remove(); + } + } + } }