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.`);
}
}