/
TelegramCard.ts
57 lines (55 loc) · 1.99 KB
/
TelegramCard.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import {TemplateCardTypes} from './TemplateCardTypes';
import {TelegramRequest} from '../../../api/TelegramRequest';
import {mmApp} from '../../../mmApp';
import {ImageTokens} from '../../../models/ImageTokens';
import {TTelegramChatId} from '../../../api';
export interface ITelegramCard {
/**
* Опрос
*/
question: string;
/**
* Варианты ответа
*/
options: string[];
}
/**
* Класс отвечающий за отображение карточки в Телеграме.
* @class TelegramCard
*/
export class TelegramCard extends TemplateCardTypes {
/**
* Получение карточки для отображения пользователю.
*
* todo подумать над корректным отображением.
* @param {boolean} isOne True, если нужно отобразить только 1 элемент. Не используется.
* @return {Promise<ITelegramCard>}
* @api
*/
public async getCard(isOne: boolean): Promise<ITelegramCard | null> {
let object: ITelegramCard | null = null;
const options: string[] = [];
for (let i = 0; i < this.images.length; i++) {
const image = this.images[i];
if (!image.imageToken) {
if (image.imageDir) {
const mImage = new ImageTokens();
mImage.type = ImageTokens.T_TELEGRAM;
mImage.caption = image.desc;
mImage.path = image.imageDir;
image.imageToken = await mImage.getToken();
}
} else {
await (new TelegramRequest()).sendPhoto(mmApp.params.user_id as TTelegramChatId, image.imageToken, image.desc);
}
options.push(image.title);
}
if (options.length > 1) {
object = {
question: this.title || '',
options: options
};
}
return object;
}
}