feat: add plugins settings i18n + typing

This commit is contained in:
Mohamed Marrouchi
2024-10-19 13:56:09 +01:00
parent 8d846186cc
commit 92bb4978c3
20 changed files with 107 additions and 67 deletions

View File

@@ -22,17 +22,22 @@ import {
} from './types';
@Injectable()
export abstract class BaseBlockPlugin extends BasePlugin {
export abstract class BaseBlockPlugin<
T extends PluginSetting[],
> extends BasePlugin {
public readonly type: PluginType = PluginType.block;
constructor(id: string, pluginService: PluginService<BasePlugin>) {
public readonly settings: T;
constructor(
id: string,
settings: T,
pluginService: PluginService<BasePlugin>,
) {
super(id, pluginService);
this.settings = settings;
}
title: string;
settings: PluginSetting[];
template: PluginBlockTemplate;
effects?: PluginEffects;
@@ -42,4 +47,11 @@ export abstract class BaseBlockPlugin extends BasePlugin {
context: Context,
convId?: string,
): Promise<StdOutgoingEnvelope>;
protected getArguments(block: Block) {
if ('args' in block.message) {
return block.message.args as SettingObject<T>;
}
throw new Error(`Block "${block.name}" does not have any arguments.`);
}
}

View File

@@ -20,7 +20,7 @@ import { ContentModel } from '@/cms/schemas/content.schema';
import { PluginService } from './plugins.service';
@InjectDynamicProviders('dist/**/*.plugin.js')
@InjectDynamicProviders('dist/extensions/**/*.plugin.js')
@Global()
@Module({
imports: [

View File

@@ -8,8 +8,8 @@
import { Test } from '@nestjs/testing';
import { DummyPlugin } from '@/extensions/plugins/dummy.plugin';
import { LoggerModule } from '@/logger/logger.module';
import { DummyPlugin } from '@/utils/test/dummy/dummy.plugin';
import { BaseBlockPlugin } from './base-block-plugin';
import { PluginService } from './plugins.service';

View File

@@ -22,7 +22,7 @@ export interface CustomBlocks {}
type ChannelEvent = any;
type BlockAttrs = Partial<BlockCreateDto> & { name: string };
export type PluginSetting = SettingCreateDto;
export type PluginSetting = Omit<SettingCreateDto, 'weight'>;
export type PluginBlockTemplate = Omit<
BlockAttrs,