mirror of
https://github.com/hexastack/hexabot
synced 2025-05-05 05:15:02 +00:00
Merge pull request #910 from Hexastack/863-bug---make-translatable-plugin-settings
Fix: Make translatable plugin settings
This commit is contained in:
commit
16c12b705c
@ -12,6 +12,7 @@ import { OnEvent } from '@nestjs/event-emitter';
|
||||
import { I18nService } from '@/i18n/services/i18n.service';
|
||||
import { PluginService } from '@/plugins/plugins.service';
|
||||
import { PluginType } from '@/plugins/types';
|
||||
import { SettingType } from '@/setting/schemas/types';
|
||||
import { SettingService } from '@/setting/services/setting.service';
|
||||
import { BaseService } from '@/utils/generics/base-service';
|
||||
|
||||
@ -57,21 +58,35 @@ export class TranslationService extends BaseService<Translation> {
|
||||
PluginType.block,
|
||||
block.message.plugin,
|
||||
);
|
||||
const defaultSettings = await plugin?.getDefaultSettings();
|
||||
const defaultSettings = (await plugin?.getDefaultSettings()) || [];
|
||||
const filteredSettings = defaultSettings.filter(
|
||||
({ translatable, type }) =>
|
||||
[
|
||||
SettingType.text,
|
||||
SettingType.textarea,
|
||||
SettingType.multiple_text,
|
||||
].includes(type) &&
|
||||
(translatable === undefined || translatable === true),
|
||||
);
|
||||
const settingTypeMap = new Map(
|
||||
filteredSettings.map((setting) => [setting.label, setting.type]),
|
||||
);
|
||||
|
||||
// plugin
|
||||
Object.entries(block.message.args).forEach(([l, arg]) => {
|
||||
const setting = defaultSettings?.find(({ label }) => label === l);
|
||||
if (setting?.translatable) {
|
||||
if (Array.isArray(arg)) {
|
||||
// array of text
|
||||
strings = strings.concat(arg);
|
||||
} else if (typeof arg === 'string') {
|
||||
// text
|
||||
strings.push(arg);
|
||||
}
|
||||
for (const [key, value] of Object.entries(block.message.args)) {
|
||||
const settingType = settingTypeMap.get(key);
|
||||
|
||||
switch (settingType) {
|
||||
case SettingType.multiple_text:
|
||||
strings = strings.concat(value);
|
||||
break;
|
||||
case SettingType.text:
|
||||
case SettingType.textarea:
|
||||
strings.push(value);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
} else if ('text' in block.message && Array.isArray(block.message.text)) {
|
||||
// array of text
|
||||
strings = strings.concat(block.message.text);
|
||||
|
Loading…
Reference in New Issue
Block a user