UNPKG

airship-server

Version:

Airship is a framework for Node.JS & TypeScript that helps you to write big, scalable and maintainable API servers.

80 lines 3.3 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); class WidgetsService { constructor(vkApi, groupService) { this._vkApi = vkApi; this._groupService = groupService; } updateWidget(groupId, event) { return __awaiter(this, void 0, void 0, function* () { let token = yield this._groupService.getGroupToken(groupId); if (!token) return; const appUrl = `https://vk.com/app6091922_-${groupId}`; let rows = []; let now = new Date(); let currentYear = now.getFullYear(); for (let day of event.days) { for (let item of day.items) { if (rows.length === 6) continue; let months = [ 'Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря' ]; let date = new Date(day.date); let month = months[date.getUTCMonth()]; if (date.getFullYear() !== currentYear) { return `${date.getUTCDate()} ${month} (${date.getFullYear()})`; } rows.push({ title: item.name.slice(0, 100), title_url: appUrl, time: `${date.getUTCDate()} ${month}, ${this.renderHumanTimeNum(item.timeHours)}:${this.renderHumanTimeNum(item.timeMinutes)}`, }); } } console.log(rows); let code = JSON.stringify({ title: "Расписание", rows, more: 'Посмотреть все мероприятия', more_url: appUrl }); try { let resp = yield this._vkApi.callWithRetry('appWidgets.update', token, { code: 'return ' + code + ';' }); console.log(resp); } catch (e) { console.log(e); } }); } renderHumanTimeNum(num) { if (num < 10) return `0${num}`; return '' + num; } } exports.default = WidgetsService; //# sourceMappingURL=WidgetsService.js.map