mirror of
https://github.com/hexastack/hexabot
synced 2025-05-09 07:09:42 +00:00
fix: make plugin settings translatable
This commit is contained in:
parent
76b155f373
commit
96f6ab55f7
@ -12,6 +12,7 @@ import { OnEvent } from '@nestjs/event-emitter';
|
|||||||
import { I18nService } from '@/i18n/services/i18n.service';
|
import { I18nService } from '@/i18n/services/i18n.service';
|
||||||
import { PluginService } from '@/plugins/plugins.service';
|
import { PluginService } from '@/plugins/plugins.service';
|
||||||
import { PluginType } from '@/plugins/types';
|
import { PluginType } from '@/plugins/types';
|
||||||
|
import { SettingType } from '@/setting/schemas/types';
|
||||||
import { SettingService } from '@/setting/services/setting.service';
|
import { SettingService } from '@/setting/services/setting.service';
|
||||||
import { BaseService } from '@/utils/generics/base-service';
|
import { BaseService } from '@/utils/generics/base-service';
|
||||||
|
|
||||||
@ -57,21 +58,33 @@ export class TranslationService extends BaseService<Translation> {
|
|||||||
PluginType.block,
|
PluginType.block,
|
||||||
block.message.plugin,
|
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
|
for (const [key, value] of Object.entries(block.message.args)) {
|
||||||
Object.entries(block.message.args).forEach(([l, arg]) => {
|
switch (settingTypeMap.get(key)) {
|
||||||
const setting = defaultSettings?.find(({ label }) => label === l);
|
case SettingType.multiple_text:
|
||||||
if (setting?.translatable) {
|
strings = strings.concat(value);
|
||||||
if (Array.isArray(arg)) {
|
break;
|
||||||
// array of text
|
case SettingType.text:
|
||||||
strings = strings.concat(arg);
|
case SettingType.textarea:
|
||||||
} else if (typeof arg === 'string') {
|
strings.push(value);
|
||||||
// text
|
break;
|
||||||
strings.push(arg);
|
default:
|
||||||
}
|
break;
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
} else if ('text' in block.message && Array.isArray(block.message.text)) {
|
} else if ('text' in block.message && Array.isArray(block.message.text)) {
|
||||||
// array of text
|
// array of text
|
||||||
strings = strings.concat(block.message.text);
|
strings = strings.concat(block.message.text);
|
||||||
|
Loading…
Reference in New Issue
Block a user