循環参照エラーを解消

This commit is contained in:
tamaina 2025-07-24 12:19:42 +09:00
parent 6af0c44712
commit ea87e2318a
3 changed files with 39 additions and 4 deletions

View File

@ -16,7 +16,7 @@ import { bindThis } from '@/decorators.js';
import type { PrivateKeyWithPem } from '@misskey-dev/node-http-message-signatures';
@Injectable()
export class AccountUpdateService {
export class AccountUpdateService implements OnModuleInit {
private apDeliverManagerService: ApDeliverManagerService;
constructor(
private moduleRef: ModuleRef,
@ -30,6 +30,10 @@ export class AccountUpdateService {
) {
}
async onModuleInit() {
this.apDeliverManagerService = this.moduleRef.get(ApDeliverManagerService.name);
}
private async createUpdatePersonActivity(user: MiLocalUser) {
return this.apRendererService.addContext(
this.apRendererService.renderUpdate(

View File

@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
import { Inject, Injectable } from '@nestjs/common';
import { Inject, Injectable, OnModuleInit } from '@nestjs/common';
import { IsNull, Not } from 'typeorm';
import { DI } from '@/di-symbols.js';
import type { FollowingsRepository } from '@/models/_.js';
@ -17,6 +17,7 @@ import type Logger from '@/logger.js';
import { UserKeypairService } from '../UserKeypairService.js';
import { ApLoggerService } from './ApLoggerService.js';
import type { PrivateKeyWithPem } from '@misskey-dev/node-http-message-signatures';
import { ModuleRef } from '@nestjs/core';
interface IRecipe {
type: string;
@ -212,21 +213,27 @@ class DeliverManager {
}
@Injectable()
export class ApDeliverManagerService {
export class ApDeliverManagerService implements OnModuleInit {
private logger: Logger;
private accountUpdateService: AccountUpdateService;
constructor(
private moduleRef: ModuleRef,
@Inject(DI.followingsRepository)
private followingsRepository: FollowingsRepository,
private userKeypairService: UserKeypairService,
private queueService: QueueService,
private accountUpdateService: AccountUpdateService,
private apLoggerService: ApLoggerService,
) {
this.logger = this.apLoggerService.logger.createSubLogger('deliver-manager');
}
async onModuleInit() {
this.accountUpdateService = this.moduleRef.get(AccountUpdateService.name);
}
/**
* Deliver activity to followers
* @param actor

View File

@ -31,6 +31,7 @@ import { ApDeliverManagerService } from '@/core/activitypub/ApDeliverManagerServ
import { RelayService } from '@/core/RelayService.js';
import { ApLoggerService } from '@/core/activitypub/ApLoggerService.js';
import { MiRemoteUser } from '@/models/User.js';
import { UserKeypairService } from '@/core/UserKeypairService.js';
function genHost() {
return randomString() + '.example.com';
@ -47,6 +48,9 @@ describe('UserSuspendService', () => {
let globalEventService: jest.Mocked<GlobalEventService>;
let apRendererService: jest.Mocked<ApRendererService>;
let moderationLogService: jest.Mocked<ModerationLogService>;
let userKeypairService: jest.Mocked<UserKeypairService>;
let accountUpdateService: AccountUpdateService;
let apDeliverManagerService: ApDeliverManagerService;
async function createUser(data: Partial<MiUser> = {}): Promise<MiUser> {
const user = {
@ -92,6 +96,14 @@ describe('UserSuspendService', () => {
UserSuspendService,
AccountUpdateService,
ApDeliverManagerService,
{
provide: AccountUpdateService.name,
useExisting: AccountUpdateService,
},
{
provide: ApDeliverManagerService.name,
useExisting: ApDeliverManagerService,
},
{
provide: UserEntityService,
useFactory: () => ({
@ -145,6 +157,12 @@ describe('UserSuspendService', () => {
},
}),
},
{
provide: UserKeypairService,
useFactory: () => ({
refreshAndPrepareEd25519KeyPair: jest.fn(),
}),
}
],
}).compile();
@ -159,6 +177,12 @@ describe('UserSuspendService', () => {
globalEventService = app.get<GlobalEventService>(GlobalEventService) as jest.Mocked<GlobalEventService>;
apRendererService = app.get<ApRendererService>(ApRendererService) as jest.Mocked<ApRendererService>;
moderationLogService = app.get<ModerationLogService>(ModerationLogService) as jest.Mocked<ModerationLogService>;
userKeypairService = app.get<UserKeypairService>(UserKeypairService) as jest.Mocked<UserKeypairService>;
apDeliverManagerService = app.get<ApDeliverManagerService>(ApDeliverManagerService);
await apDeliverManagerService.onModuleInit();
accountUpdateService = app.get<AccountUpdateService>(AccountUpdateService.name);
await accountUpdateService.onModuleInit();
});
beforeEach(() => {