Commit c3799f8c authored by nanahira's avatar nanahira

small fix of service inject

parent 02a7d509
...@@ -217,19 +217,18 @@ export class KoishiMetascanService { ...@@ -217,19 +217,18 @@ export class KoishiMetascanService {
ctx: Context, ctx: Context,
instance: any, instance: any,
property: string, property: string,
name: string, name: keyof Context.Services,
) { ) {
const preObject = ctx[name]; Object.defineProperty(instance, property, {
if (preObject) { enumerable: true,
instance[property] = preObject; configurable: true,
} get() {
ctx.on( return ctx[name];
<EventName>`service/${name}`,
() => {
instance[property] = ctx[name];
}, },
true, set(val: any) {
); ctx[name] = val;
},
});
} }
private scanInstanceForProvidingContextService(ctx: Context, instance: any) { private scanInstanceForProvidingContextService(ctx: Context, instance: any) {
...@@ -252,7 +251,7 @@ export class KoishiMetascanService { ...@@ -252,7 +251,7 @@ export class KoishiMetascanService {
return; return;
} }
for (const property of properties) { for (const property of properties) {
const serviceName = Reflect.getMetadata( const serviceName: keyof Context.Services = Reflect.getMetadata(
KoishiServiceWireProperty, KoishiServiceWireProperty,
instanceClass, instanceClass,
property, property,
...@@ -281,7 +280,6 @@ export class KoishiMetascanService { ...@@ -281,7 +280,6 @@ export class KoishiMetascanService {
instance.constructor, instance.constructor,
); );
this.scanInstanceForWireContextService(providerCtx, instance); this.scanInstanceForWireContextService(providerCtx, instance);
this.scanInstanceForProvidingContextService(providerCtx, instance);
} }
} }
} }
...@@ -300,6 +298,7 @@ export class KoishiMetascanService { ...@@ -300,6 +298,7 @@ export class KoishiMetascanService {
moduleCtx, moduleCtx,
instance.constructor, instance.constructor,
); );
this.scanInstanceForProvidingContextService(providerCtx, instance);
return this.metadataScanner.scanFromPrototype( return this.metadataScanner.scanFromPrototype(
instance, instance,
prototype, prototype,
......
...@@ -54,7 +54,7 @@ export const InjectContextUser = (...values: string[]) => ...@@ -54,7 +54,7 @@ export const InjectContextUser = (...values: string[]) =>
export function TransformMetadata< export function TransformMetadata<
K extends MetadataKey, K extends MetadataKey,
VM extends Partial<MetadataGenericMap> = MetadataGenericMap, VM extends Partial<MetadataGenericMap> = MetadataGenericMap
>( >(
metadataKey: K, metadataKey: K,
metadataValueFun: (oldValue: VM[K]) => VM[K], metadataValueFun: (oldValue: VM[K]) => VM[K],
...@@ -253,7 +253,9 @@ export const PutBot = () => PutSession('bot'); ...@@ -253,7 +253,9 @@ export const PutBot = () => PutSession('bot');
// Service // Service
export function WireContextService(name?: string): PropertyDecorator { export function WireContextService(
name?: keyof Context.Services,
): PropertyDecorator {
return (obj, key) => { return (obj, key) => {
const objClass = obj.constructor; const objClass = obj.constructor;
const properties: string[] = const properties: string[] =
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment