Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
1.7 KiB
89 lines
1.7 KiB
5 years ago
|
import { RichTextProcessor } from "../richtextprocessor";
|
||
|
|
||
|
export type PollAnswer = {
|
||
|
_: 'pollAnswer',
|
||
|
text: string,
|
||
|
option: Uint8Array
|
||
|
};
|
||
|
|
||
|
export type PollAnswerVoters = {
|
||
|
_: 'pollAnswerVoters',
|
||
|
flags: number,
|
||
|
option: Uint8Array,
|
||
|
voters: number,
|
||
|
|
||
|
pFlags: Partial<{
|
||
|
chosen: true,
|
||
|
correct: true
|
||
|
}>
|
||
|
};
|
||
|
|
||
|
export type PollResult = {
|
||
|
_: 'pollAnswerVoters',
|
||
|
flags: number,
|
||
|
option: Uint8Array,
|
||
|
voters: number,
|
||
|
|
||
|
pFlags?: Partial<{chosen: true}>
|
||
|
};
|
||
|
|
||
|
export type PollResults = {
|
||
|
_: 'pollResults',
|
||
|
flags: number,
|
||
|
results?: Array<PollResult>,
|
||
|
total_voters?: number,
|
||
|
recent_voters?: number[],
|
||
|
solution?: string,
|
||
|
solution_entities?: any[],
|
||
|
|
||
|
pFlags: Partial<{
|
||
|
min: true
|
||
|
}>,
|
||
|
};
|
||
|
|
||
|
export type Poll = {
|
||
|
_: 'poll',
|
||
|
flags: number,
|
||
|
question: string,
|
||
|
id: string,
|
||
|
answers: Array<PollAnswer>,
|
||
|
close_period?: number,
|
||
|
close_date?: number
|
||
|
|
||
|
pFlags?: Partial<{
|
||
|
closed: true,
|
||
|
public_voters: true,
|
||
|
multiple_choice: true,
|
||
|
quiz: true
|
||
|
}>,
|
||
|
rQuestion?: string,
|
||
|
rReply?: string,
|
||
|
};
|
||
|
|
||
|
class AppPollsManager {
|
||
|
private polls: {[id: string]: Poll} = {};
|
||
|
private results: {[id: string]: PollResults} = {};
|
||
|
|
||
|
public savePoll(poll: Poll, results: PollResults) {
|
||
|
let id = poll.id;
|
||
|
if(this.polls[id]) {
|
||
|
this.results[id] = results;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
this.polls[id] = poll;
|
||
|
this.results[id] = results;
|
||
|
|
||
|
poll.rQuestion = RichTextProcessor.wrapEmojiText(poll.question);
|
||
|
poll.rReply = RichTextProcessor.wrapEmojiText('📊') + ' ' + (poll.rQuestion || 'poll');
|
||
|
}
|
||
|
|
||
|
public getPoll(pollID: string): {poll: Poll, results: PollResults} {
|
||
|
return {
|
||
|
poll: this.polls[pollID],
|
||
|
results: this.results[pollID]
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export default new AppPollsManager();
|