umbot
Version:
Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф
90 lines (89 loc) • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.initButton = initButton;
exports.getImage = getImage;
const button_1 = require("../button");
const utils_1 = require("../../utils");
/**
* Инициализация кнопки.
* @param button
* @param buttonInst
*/
function initButton(button, buttonInst) {
if (typeof button === 'string') {
buttonInst.addBtn(button);
}
else {
const title = button.title || button.text || null;
const url = button.url || null;
const payload = button.payload || null;
buttonInst.addBtn(title, url, payload);
}
}
/**
* Инициализация изображения.
* Устанавливает основные параметры изображения и проверяет их корректность.
*
* Процесс работы:
* 1. Проверяет тип изображения (токен или путь):
* - Если isToken=true, использует image как токен
* - Иначе проверяет валидность URL или файла
* 2. Устанавливает заголовок и описание:
* - Если заголовок пустой, возвращает false
* - Если описание пустое, устанавливает пробел
* 3. Добавляет кнопки, если они есть:
* - Поддерживает строковые кнопки
* - Поддерживает объекты кнопок
*
* @param {AppContext} [appContext] - Контекст приложения
* @param {string | null} image - Путь к изображению или токен
* @param {string} title - Заголовок изображения
* @param {string} [desc=' '] - Описание изображения
* @param {TButton | null} [button=null] - Кнопки для изображения
* @param {boolean} isToken - Флаг, говорящий о том, что явно передается токен
* @returns {IImageType | null} объект если инициализация успешна, null в противном случае
*
* @example
* ```ts
* // Инициализация с URL
* getImage(
* 'http://localhost/image.jpg',
* 'Заголовок',
* 'Описание',
* { title: 'Кнопка', url: 'http://localhost' },
* appContext
* );
*
* // Инициализация с простой кнопкой
* getImage(
* 'http://localhost/image.jpg',
* 'Заголовок',
* 'Описание',
* 'Текст кнопки',
* appContext
* );
* ```
*/
function getImage(appContext, image, title, desc = ' ', button = null, isToken = false) {
const res = {
imageToken: image,
imageDir: null,
title: '',
desc: '',
params: {},
};
if (!isToken && image && (utils_1.Text.isUrl(image) || (0, utils_1.isFileSync)(image))) {
res.imageDir = image;
res.imageToken = null;
}
if (image || title) {
res.title = title || '';
res.desc = desc || '';
if (button) {
res.button = new button_1.Buttons(appContext);
initButton(button, res.button);
}
return res;
}
return null;
}