Схема настроек (GenerateConfig)

Вызывайте GenerateConfig([...]) при загрузке аддона, чтобы объявить поля настроек. Схемы хранятся в конфиге приложения; значения — в addonsParams[id]. Значения по умолчанию подмешиваются при регистрации и при открытии страницы настроек.

Структура поля

У каждого поля есть:

Свойство Описание
key Ключ хранения в объекте params
type text, color, number, boolean, array, object, select, button
default Начальное значение
editor Если задан — поле показывается в UI настроек с подписью, валидацией и т.д.
options Для select: { value, label? }[]
items Для array: 'text' или 'number'
fields Для object: вложенные поля
event Для button: имя события при клике (обрабатывается через events.On)

Поля без editor сохраняются (внутренние счётчики, токены), но не показываются в UI.

Поля в одной строке

Оберните несколько полей во вложенный массив, чтобы отобразить их в одной строке настроек:

GenerateConfig([
  fieldA,
  [fieldB, fieldC],
  fieldD,
]);

Поддерживаемые типы

Пример

GenerateConfig([
  {
    key: 'api_server',
    type: 'text',
    default: 'https://example.com:2083',
    editor: {
      label: { en: 'API server', ru: 'API сервер', uk: 'API сервер' },
    },
  },
  {
    key: 'theme',
    type: 'select',
    default: 'dark',
    options: [
      { value: 'dark', label: { en: 'Dark', ru: 'Тёмная', uk: 'Темна' } },
      { value: 'light', label: { en: 'Light', ru: 'Светлая', uk: 'Світла' } },
    ],
    editor: { label: { en: 'Theme', ru: 'Тема', uk: 'Тема' } },
  },
  { key: 'last_sync', type: 'number', default: 0 },
  {
    key: 'reconnect',
    type: 'button',
    event: 'onReconnect',
    editor: { label: { en: 'Reconnect', ru: 'Переподключиться', uk: 'Перепідключитися' } },
  },
]);

events.On('onReconnect', async () => {
  // пользователь нажал «Переподключиться» в настройках
});

Чтение params

const params = await api.config.getParams();
await api.config.updateParams({ last_sync: Date.now() });

Лимит размера: 10 000 байт JSON на аддон, если не выдано INCREASE_CONFIG_SIZE (1 000 000 байт).