implement MarkUserUpdatedBackgroundTask
This commit is contained in:
parent
e587e376e5
commit
693f8d52ee
7 changed files with 47 additions and 18 deletions
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
import { Inject, Injectable } from '@nestjs/common';
|
||||
import * as Bull from 'bullmq';
|
||||
import { BackgroundTaskJobData, CheckHibernationBackgroundTask, PostDeliverBackgroundTask, PostInboxBackgroundTask, PostNoteBackgroundTask, UpdateFeaturedBackgroundTask, UpdateInstanceBackgroundTask, UpdateUserTagsBackgroundTask, UpdateUserBackgroundTask, UpdateNoteTagsBackgroundTask, DeleteFileBackgroundTask, UpdateLatestNoteBackgroundTask, PostSuspendBackgroundTask, PostUnsuspendBackgroundTask, DeleteApLogsBackgroundTask } from '@/queue/types.js';
|
||||
import { BackgroundTaskJobData, CheckHibernationBackgroundTask, PostDeliverBackgroundTask, PostInboxBackgroundTask, PostNoteBackgroundTask, UpdateFeaturedBackgroundTask, UpdateInstanceBackgroundTask, UpdateUserTagsBackgroundTask, UpdateUserBackgroundTask, UpdateNoteTagsBackgroundTask, DeleteFileBackgroundTask, UpdateLatestNoteBackgroundTask, PostSuspendBackgroundTask, PostUnsuspendBackgroundTask, DeleteApLogsBackgroundTask, MarkUserUpdatedBackgroundTask } from '@/queue/types.js';
|
||||
import { ApPersonService } from '@/core/activitypub/models/ApPersonService.js';
|
||||
import { QueueLoggerService } from '@/queue/QueueLoggerService.js';
|
||||
import Logger from '@/logger.js';
|
||||
|
|
@ -19,7 +19,7 @@ import ApRequestChart from '@/core/chart/charts/ap-request.js';
|
|||
import FederationChart from '@/core/chart/charts/federation.js';
|
||||
import { UpdateInstanceQueue } from '@/core/UpdateInstanceQueue.js';
|
||||
import { NoteCreateService } from '@/core/NoteCreateService.js';
|
||||
import type { DriveFilesRepository, NoteEditsRepository, NotesRepository } from '@/models/_.js';
|
||||
import type { DriveFilesRepository, NoteEditsRepository, NotesRepository, UsersRepository } from '@/models/_.js';
|
||||
import { MiUser } from '@/models/_.js';
|
||||
import { NoteEditService } from '@/core/NoteEditService.js';
|
||||
import { HashtagService } from '@/core/HashtagService.js';
|
||||
|
|
@ -28,6 +28,7 @@ import { LatestNoteService } from '@/core/LatestNoteService.js';
|
|||
import { trackTask } from '@/misc/promise-tracker.js';
|
||||
import { UserSuspendService } from '@/core/UserSuspendService.js';
|
||||
import { ApLogService } from '@/core/ApLogService.js';
|
||||
import { InternalEventService } from '@/core/InternalEventService.js';
|
||||
|
||||
@Injectable()
|
||||
export class BackgroundTaskProcessorService {
|
||||
|
|
@ -46,6 +47,9 @@ export class BackgroundTaskProcessorService {
|
|||
@Inject(DI.noteEditsRepository)
|
||||
private readonly noteEditsRepository: NoteEditsRepository,
|
||||
|
||||
@Inject(DI.usersRepository)
|
||||
private readonly usersRepository: UsersRepository,
|
||||
|
||||
private readonly apPersonService: ApPersonService,
|
||||
private readonly cacheService: CacheService,
|
||||
private readonly federatedInstanceService: FederatedInstanceService,
|
||||
|
|
@ -61,6 +65,7 @@ export class BackgroundTaskProcessorService {
|
|||
private readonly latestNoteService: LatestNoteService,
|
||||
private readonly userSuspendService: UserSuspendService,
|
||||
private readonly apLogService: ApLogService,
|
||||
private readonly internalEventService: InternalEventService,
|
||||
|
||||
queueLoggerService: QueueLoggerService,
|
||||
) {
|
||||
|
|
@ -94,9 +99,11 @@ export class BackgroundTaskProcessorService {
|
|||
return await this.processPostSuspend(job.data);
|
||||
} else if (job.data.type === 'post-unsuspend') {
|
||||
return await this.processPostUnsuspend(job.data);
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
} else if (job.data.type === 'delete-ap-logs') {
|
||||
return await this.processDeleteApLogs(job.data);
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
} else if (job.data.type === 'mark-user-updated') {
|
||||
return await this.processMarkUserUpdated(job.data);
|
||||
} else {
|
||||
this.logger.warn(`Can't process unknown job type "${job.data}"; this is likely a bug. Full job data:`, job.data);
|
||||
throw new Error(`Unknown job type ${job.data}, see system logs for details`);
|
||||
|
|
@ -338,4 +345,19 @@ export class BackgroundTaskProcessorService {
|
|||
|
||||
return 'ok';
|
||||
}
|
||||
|
||||
private async processMarkUserUpdated(task: MarkUserUpdatedBackgroundTask): Promise<string> {
|
||||
const user = await this.cacheService.findOptionalUserById(task.userId);
|
||||
if (!user || user.isDeleted) return `Skipping post-unsuspend task: user ${task.userId} has been deleted`;
|
||||
|
||||
await this.usersRepository.update({ id: user.id }, { updatedAt: new Date() });
|
||||
|
||||
if (user.host == null) {
|
||||
await this.internalEventService.emit('localUserUpdated', { id: user.id });
|
||||
} else {
|
||||
await this.internalEventService.emit('remoteUserUpdated', { id: user.id });
|
||||
}
|
||||
|
||||
return 'ok';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue