UNPKG

umbot

Version:

Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф

76 lines (75 loc) 2.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getImageInDB = getImageInDB; exports.cardProcessing = cardProcessing; const index_1 = require("../../../index"); const API_1 = require("../API"); const utils_1 = require("../Base/utils"); const constants_1 = require("./constants"); /** * Получение токена, необходимого для отображения картинок в карточке Max * @param controller Контроллер приложения * @param path Путь до картинки */ async function getImageInDB(controller, path) { return (0, utils_1.getImageToken)(path, constants_1.T_MAX_APP, controller, async (model) => { const api = new API_1.MaxRequest(controller.appContext); const upload = await api.upload(path, 'image'); if (upload?.token || upload?.url) { model.imageToken = upload.token || upload.url; if (await model.save(true)) { return model.imageToken; } } return null; }); } /** * Получает карточку для отображения в Max. * @param cardInfo Информация о карточке * @param controller Контроллер приложения * @returns {Promise<IMaxCard[]>} Одна карточка, массив карточек или пустой массив, если нечего отобразить */ async function cardProcessing(cardInfo, controller) { if (cardInfo.images.length === 1 || cardInfo.showOne) { if (!cardInfo.images[0].imageToken) { if (cardInfo.images[0].imageDir) { // eslint-disable-next-line require-atomic-updates cardInfo.images[0].imageToken = await getImageInDB(controller, cardInfo.images[0].imageDir); } } if (cardInfo.images[0].imageToken) { return [ { type: 'image', payload: { [index_1.Text.isUrl(cardInfo.images[0].imageToken) ? 'url' : 'token']: cardInfo.images[0].imageToken, }, }, ]; } } else { const elements = []; for (let i = 0; i < cardInfo.images.length; i++) { const image = cardInfo.images[i]; if (!image.imageToken && image.imageDir) { image.imageToken = await getImageInDB(controller, image.imageDir); } if (image.imageToken) { elements.push(image.imageToken); } } if (elements.length) { return [ { type: 'image', payload: { photos: elements, }, }, ]; } } return null; }