Bind TypedEventEmitter to DI container and update usage

Added TypedEventEmitter to the dependency injection container and exposed it in ServiceBase. Updated OlPushService to use the injected event emitter instead of directly importing appEvent. Also performed minor code style improvements for consistency.
This commit is contained in:
手瓜一十雪 2025-11-15 10:48:59 +08:00
parent 31bb1e5dee
commit 8e71dec63a
3 changed files with 14 additions and 9 deletions

View File

@ -33,6 +33,7 @@ import { NTQQPacketApi } from './apis/packet';
import { NativePacketHandler } from './packet/handler/client';
import { container, ReceiverServiceRegistry } from './packet/handler/serviceRegister';
import { appEvent } from './packet/handler/eventList';
import { TypedEventEmitter } from './packet/handler/typeEvent';
export * from './wrapper';
export * from './types/index';
export * from './services/index';
@ -122,6 +123,7 @@ export class NapCatCore {
GroupApi: new NTQQGroupApi(this.context, this),
};
container.bind(NapCatCore).toConstantValue(this);
container.bind(TypedEventEmitter).toConstantValue(this.event);
ReceiverServiceRegistry.forEach((ServiceClass, serviceName) => {
container.bind(ServiceClass).toSelf();
console.log(`Registering service handler for: ${serviceName}`);

View File

@ -1,6 +1,7 @@
import "reflect-metadata";
import { Container, injectable } from "inversify";
import { NapCatCore } from "../..";
import { TypedEventEmitter } from "./typeEvent";
export const container = new Container();
@ -10,6 +11,9 @@ export abstract class ServiceBase {
get core(): NapCatCore {
return container.get(NapCatCore);
}
get event() {
return container.get(TypedEventEmitter);
}
abstract handler(seq: number, hex_data: string): Promise<void> | void;
}

View File

@ -1,5 +1,4 @@
import { NapProtoMsg } from "napcat-protobuf";
import { appEvent } from "../packet/handler/eventList";
import { ReceiveService, ServiceBase } from "../packet/handler/serviceRegister";
import { GroupReactNotify, PushMsg } from "../packet/transformer/proto";
@ -23,7 +22,7 @@ export class OlPushService extends ServiceBase {
const code = notify.groupReactionData?.data?.data?.groupReactionDataContent?.code ?? '';
const count = notify.groupReactionData?.data?.data?.groupReactionDataContent?.count ?? 0;
const senderUin = await this.core.apis.UserApi.getUinByUidV2(operatorUid);
appEvent.emit('event:emoji_like', {
this.event.emit('event:emoji_like', {
groupId: groupCode,
senderUin: senderUin,
emojiId: code,