diff options
| author | dakkar <dakkar@thenautilus.net> | 2025-03-02 18:28:15 +0000 |
|---|---|---|
| committer | dakkar <dakkar@thenautilus.net> | 2025-03-02 18:28:15 +0000 |
| commit | 92bac81a7fd8177afa3910e4b74c642e761425f1 (patch) | |
| tree | fce6054f23eefe6ecae88895825d5750f4e2aed0 /packages/backend/src/queue/processors/DeleteAccountProcessorService.ts | |
| parent | merge: Add "reject quotes" settings (!901) (diff) | |
| parent | don't move scheduled notes to new account when migrating (diff) | |
| download | sharkey-92bac81a7fd8177afa3910e4b74c642e761425f1.tar.gz sharkey-92bac81a7fd8177afa3910e4b74c642e761425f1.tar.bz2 sharkey-92bac81a7fd8177afa3910e4b74c642e761425f1.zip | |
merge: handle scheduled notes when deleting and migrating accounts - fixes #931 #936 (!920)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/920
Closes #931 and #936
Approved-by: Marie <github@yuugi.dev>
Approved-by: Julia <julia@insertdomain.name>
Diffstat (limited to 'packages/backend/src/queue/processors/DeleteAccountProcessorService.ts')
| -rw-r--r-- | packages/backend/src/queue/processors/DeleteAccountProcessorService.ts | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/packages/backend/src/queue/processors/DeleteAccountProcessorService.ts b/packages/backend/src/queue/processors/DeleteAccountProcessorService.ts index 66bed72f18..0c70829132 100644 --- a/packages/backend/src/queue/processors/DeleteAccountProcessorService.ts +++ b/packages/backend/src/queue/processors/DeleteAccountProcessorService.ts @@ -6,7 +6,7 @@ import { Inject, Injectable } from '@nestjs/common'; import { MoreThan } from 'typeorm'; import { DI } from '@/di-symbols.js'; -import type { DriveFilesRepository, NoteReactionsRepository, NotesRepository, UserProfilesRepository, UsersRepository } from '@/models/_.js'; +import type { DriveFilesRepository, NoteReactionsRepository, NotesRepository, UserProfilesRepository, UsersRepository, NoteScheduleRepository, MiNoteSchedule } from '@/models/_.js'; import type Logger from '@/logger.js'; import { DriveService } from '@/core/DriveService.js'; import type { MiDriveFile } from '@/models/DriveFile.js'; @@ -20,6 +20,7 @@ import { ReactionService } from '@/core/ReactionService.js'; import { QueueLoggerService } from '../QueueLoggerService.js'; import type * as Bull from 'bullmq'; import type { DbUserDeleteJobData } from '../types.js'; +import { QueueService } from '@/core/QueueService.js'; @Injectable() export class DeleteAccountProcessorService { @@ -41,6 +42,10 @@ export class DeleteAccountProcessorService { @Inject(DI.noteReactionsRepository) private noteReactionsRepository: NoteReactionsRepository, + @Inject(DI.noteScheduleRepository) + private noteScheduleRepository: NoteScheduleRepository, + + private queueService: QueueService, private driveService: DriveService, private emailService: EmailService, private queueLoggerService: QueueLoggerService, @@ -60,6 +65,22 @@ export class DeleteAccountProcessorService { return; } + { // Delete scheduled notes + const scheduledNotes = await this.noteScheduleRepository.findBy({ + userId: user.id, + }) as MiNoteSchedule[]; + + for (const note of scheduledNotes) { + await this.queueService.ScheduleNotePostQueue.remove(`schedNote:${note.id}`); + } + + await this.noteScheduleRepository.delete({ + userId: user.id, + }); + + this.logger.succ('All scheduled notes deleted'); + } + { // Delete notes let cursor: MiNote['id'] | null = null; |