Poll: Support custom emoji (#4626)
This commit is contained in:
parent
8182987d48
commit
f45a5ff023
@ -29,6 +29,7 @@ import { SUPPORTED_IMAGE_CONTENT_TYPES, SUPPORTED_VIDEO_CONTENT_TYPES, VIDEO_WEB
|
|||||||
import { pick } from '../../../util/iteratees';
|
import { pick } from '../../../util/iteratees';
|
||||||
import { addStoryToLocalDb, serializeBytes } from '../helpers';
|
import { addStoryToLocalDb, serializeBytes } from '../helpers';
|
||||||
import {
|
import {
|
||||||
|
buildApiFormattedText,
|
||||||
buildApiMessageEntity,
|
buildApiMessageEntity,
|
||||||
buildApiPhoto,
|
buildApiPhoto,
|
||||||
buildApiPhotoSize,
|
buildApiPhotoSize,
|
||||||
@ -609,7 +610,7 @@ export function buildMessageStoryData(media: GramJs.TypeMessageMedia): ApiMessag
|
|||||||
export function buildPoll(poll: GramJs.Poll, pollResults: GramJs.PollResults): ApiPoll {
|
export function buildPoll(poll: GramJs.Poll, pollResults: GramJs.PollResults): ApiPoll {
|
||||||
const { id, answers: rawAnswers } = poll;
|
const { id, answers: rawAnswers } = poll;
|
||||||
const answers = rawAnswers.map((answer) => ({
|
const answers = rawAnswers.map((answer) => ({
|
||||||
text: answer.text,
|
text: buildApiFormattedText(answer.text),
|
||||||
option: serializeBytes(answer.option),
|
option: serializeBytes(answer.option),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -617,11 +618,11 @@ export function buildPoll(poll: GramJs.Poll, pollResults: GramJs.PollResults): A
|
|||||||
id: String(id),
|
id: String(id),
|
||||||
summary: {
|
summary: {
|
||||||
isPublic: poll.publicVoters,
|
isPublic: poll.publicVoters,
|
||||||
|
question: buildApiFormattedText(poll.question),
|
||||||
...pick(poll, [
|
...pick(poll, [
|
||||||
'closed',
|
'closed',
|
||||||
'multipleChoice',
|
'multipleChoice',
|
||||||
'quiz',
|
'quiz',
|
||||||
'question',
|
|
||||||
'closePeriod',
|
'closePeriod',
|
||||||
'closeDate',
|
'closeDate',
|
||||||
]),
|
]),
|
||||||
|
|||||||
@ -169,9 +169,12 @@ export function buildInputPoll(pollParams: ApiNewPoll, randomId: BigInt.BigInteg
|
|||||||
const poll = new GramJs.Poll({
|
const poll = new GramJs.Poll({
|
||||||
id: randomId,
|
id: randomId,
|
||||||
publicVoters: summary.isPublic,
|
publicVoters: summary.isPublic,
|
||||||
question: summary.question,
|
question: buildInputTextWithEntities(summary.question),
|
||||||
answers: summary.answers.map(({ text, option }) => {
|
answers: summary.answers.map(({ text, option }) => {
|
||||||
return new GramJs.PollAnswer({ text, option: deserializeBytes(option) });
|
return new GramJs.PollAnswer({
|
||||||
|
text: buildInputTextWithEntities(text),
|
||||||
|
option: deserializeBytes(option),
|
||||||
|
});
|
||||||
}),
|
}),
|
||||||
quiz: summary.quiz,
|
quiz: summary.quiz,
|
||||||
multipleChoice: summary.multipleChoice,
|
multipleChoice: summary.multipleChoice,
|
||||||
@ -200,9 +203,12 @@ export function buildInputPollFromExisting(poll: ApiPoll, shouldClose = false) {
|
|||||||
poll: new GramJs.Poll({
|
poll: new GramJs.Poll({
|
||||||
id: BigInt(poll.id),
|
id: BigInt(poll.id),
|
||||||
publicVoters: poll.summary.isPublic,
|
publicVoters: poll.summary.isPublic,
|
||||||
question: poll.summary.question,
|
question: buildInputTextWithEntities(poll.summary.question),
|
||||||
answers: poll.summary.answers.map(({ text, option }) => {
|
answers: poll.summary.answers.map(({ text, option }) => {
|
||||||
return new GramJs.PollAnswer({ text, option: deserializeBytes(option) });
|
return new GramJs.PollAnswer({
|
||||||
|
text: buildInputTextWithEntities(text),
|
||||||
|
option: deserializeBytes(option),
|
||||||
|
});
|
||||||
}),
|
}),
|
||||||
quiz: poll.summary.quiz,
|
quiz: poll.summary.quiz,
|
||||||
multipleChoice: poll.summary.multipleChoice,
|
multipleChoice: poll.summary.multipleChoice,
|
||||||
|
|||||||
@ -139,7 +139,7 @@ export interface ApiContact {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface ApiPollAnswer {
|
export interface ApiPollAnswer {
|
||||||
text: string;
|
text: ApiFormattedText;
|
||||||
option: string;
|
option: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ export interface ApiPoll {
|
|||||||
isPublic?: true;
|
isPublic?: true;
|
||||||
multipleChoice?: true;
|
multipleChoice?: true;
|
||||||
quiz?: true;
|
quiz?: true;
|
||||||
question: string;
|
question: ApiFormattedText;
|
||||||
answers: ApiPollAnswer[];
|
answers: ApiPollAnswer[];
|
||||||
closePeriod?: number;
|
closePeriod?: number;
|
||||||
closeDate?: number;
|
closeDate?: number;
|
||||||
|
|||||||
@ -7,11 +7,14 @@ import { ApiMessageEntityTypes } from '../../api/types';
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
extractMessageText,
|
extractMessageText,
|
||||||
|
getMessagePoll,
|
||||||
|
} from '../../global/helpers';
|
||||||
|
import {
|
||||||
getMessageSummaryDescription,
|
getMessageSummaryDescription,
|
||||||
getMessageSummaryEmoji,
|
getMessageSummaryEmoji,
|
||||||
getMessageSummaryText,
|
getMessageSummaryText,
|
||||||
TRUNCATED_SUMMARY_LENGTH,
|
TRUNCATED_SUMMARY_LENGTH,
|
||||||
} from '../../global/helpers';
|
} from '../../global/helpers/messageSummary';
|
||||||
import trimText from '../../util/trimText';
|
import trimText from '../../util/trimText';
|
||||||
import renderText from './helpers/renderText';
|
import renderText from './helpers/renderText';
|
||||||
|
|
||||||
@ -47,8 +50,9 @@ function MessageSummary({
|
|||||||
const { text, entities } = extractMessageText(message, inChatList) || {};
|
const { text, entities } = extractMessageText(message, inChatList) || {};
|
||||||
const hasSpoilers = entities?.some((e) => e.type === ApiMessageEntityTypes.Spoiler);
|
const hasSpoilers = entities?.some((e) => e.type === ApiMessageEntityTypes.Spoiler);
|
||||||
const hasCustomEmoji = entities?.some((e) => e.type === ApiMessageEntityTypes.CustomEmoji);
|
const hasCustomEmoji = entities?.some((e) => e.type === ApiMessageEntityTypes.CustomEmoji);
|
||||||
|
const hasPoll = Boolean(getMessagePoll(message));
|
||||||
|
|
||||||
if (!text || (!hasSpoilers && !hasCustomEmoji)) {
|
if ((!text || (!hasSpoilers && !hasCustomEmoji)) && !hasPoll) {
|
||||||
const summaryText = translatedText?.text || getMessageSummaryText(lang, message, noEmoji);
|
const summaryText = translatedText?.text || getMessageSummaryText(lang, message, noEmoji);
|
||||||
const trimmedText = trimText(summaryText, truncateLength);
|
const trimmedText = trimText(summaryText, truncateLength);
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,6 @@ import type { IconName } from '../../../types/icons';
|
|||||||
|
|
||||||
import { CONTENT_NOT_SUPPORTED } from '../../../config';
|
import { CONTENT_NOT_SUPPORTED } from '../../../config';
|
||||||
import {
|
import {
|
||||||
getMediaContentTypeDescription,
|
|
||||||
getMessageIsSpoiler,
|
getMessageIsSpoiler,
|
||||||
getMessageMediaHash,
|
getMessageMediaHash,
|
||||||
getMessageRoundVideo,
|
getMessageRoundVideo,
|
||||||
@ -22,6 +21,7 @@ import {
|
|||||||
isMessageTranslatable,
|
isMessageTranslatable,
|
||||||
isUserId,
|
isUserId,
|
||||||
} from '../../../global/helpers';
|
} from '../../../global/helpers';
|
||||||
|
import { getMediaContentTypeDescription } from '../../../global/helpers/messageSummary';
|
||||||
import buildClassName from '../../../util/buildClassName';
|
import buildClassName from '../../../util/buildClassName';
|
||||||
import freezeWhenClosed from '../../../util/hoc/freezeWhenClosed';
|
import freezeWhenClosed from '../../../util/hoc/freezeWhenClosed';
|
||||||
import { getPictogramDimensions } from '../helpers/mediaDimensions';
|
import { getPictogramDimensions } from '../helpers/mediaDimensions';
|
||||||
|
|||||||
@ -10,10 +10,10 @@ import type { TextPart } from '../../../types';
|
|||||||
import {
|
import {
|
||||||
getChatTitle,
|
getChatTitle,
|
||||||
getExpiredMessageDescription,
|
getExpiredMessageDescription,
|
||||||
getMessageSummaryText,
|
|
||||||
getUserFullName,
|
getUserFullName,
|
||||||
isExpiredMessage,
|
isExpiredMessage,
|
||||||
} from '../../../global/helpers';
|
} from '../../../global/helpers';
|
||||||
|
import { getMessageSummaryText } from '../../../global/helpers/messageSummary';
|
||||||
import { formatCurrency } from '../../../util/formatCurrency';
|
import { formatCurrency } from '../../../util/formatCurrency';
|
||||||
import trimText from '../../../util/trimText';
|
import trimText from '../../../util/trimText';
|
||||||
import renderText from './renderText';
|
import renderText from './renderText';
|
||||||
|
|||||||
@ -3,13 +3,15 @@ import type { LangFn } from '../../../hooks/useLang';
|
|||||||
import type { TextPart } from '../../../types';
|
import type { TextPart } from '../../../types';
|
||||||
import { ApiMessageEntityTypes } from '../../../api/types';
|
import { ApiMessageEntityTypes } from '../../../api/types';
|
||||||
|
|
||||||
|
import {
|
||||||
|
getMessageText,
|
||||||
|
} from '../../../global/helpers';
|
||||||
import {
|
import {
|
||||||
getMessageSummaryDescription,
|
getMessageSummaryDescription,
|
||||||
getMessageSummaryEmoji,
|
getMessageSummaryEmoji,
|
||||||
getMessageSummaryText,
|
getMessageSummaryText,
|
||||||
getMessageText,
|
|
||||||
TRUNCATED_SUMMARY_LENGTH,
|
TRUNCATED_SUMMARY_LENGTH,
|
||||||
} from '../../../global/helpers';
|
} from '../../../global/helpers/messageSummary';
|
||||||
import { getMessageKey } from '../../../util/messageKey';
|
import { getMessageKey } from '../../../util/messageKey';
|
||||||
import trimText from '../../../util/trimText';
|
import trimText from '../../../util/trimText';
|
||||||
import renderText from './renderText';
|
import renderText from './renderText';
|
||||||
|
|||||||
@ -125,7 +125,7 @@ const SettingsDoNotTranslate: FC<OwnProps & StateProps> = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return displayedOptions.filter((option) => (
|
return displayedOptions.filter((option) => (
|
||||||
option.label.toLowerCase().includes(search.toLowerCase())
|
option.label.toString().toLowerCase().includes(search.toLowerCase())
|
||||||
|| option.subLabel?.toLowerCase().includes(search.toLowerCase())
|
|| option.subLabel?.toLowerCase().includes(search.toLowerCase())
|
||||||
|| option.value.toLowerCase().includes(search.toLowerCase())
|
|| option.value.toLowerCase().includes(search.toLowerCase())
|
||||||
));
|
));
|
||||||
|
|||||||
@ -111,7 +111,9 @@ const PollModal: FC<OwnProps> = ({
|
|||||||
if (!text) return undefined;
|
if (!text) return undefined;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
text,
|
text: {
|
||||||
|
text,
|
||||||
|
},
|
||||||
option: String(index),
|
option: String(index),
|
||||||
...(index === correctOption && { correct: true }),
|
...(index === correctOption && { correct: true }),
|
||||||
};
|
};
|
||||||
@ -141,7 +143,9 @@ const PollModal: FC<OwnProps> = ({
|
|||||||
|
|
||||||
const payload: ApiNewPoll = {
|
const payload: ApiNewPoll = {
|
||||||
summary: {
|
summary: {
|
||||||
question: questionTrimmed,
|
question: {
|
||||||
|
text: questionTrimmed,
|
||||||
|
},
|
||||||
answers,
|
answers,
|
||||||
...(!isAnonymous && { isPublic: true }),
|
...(!isAnonymous && { isPublic: true }),
|
||||||
...(isMultipleAnswers && { multipleChoice: true }),
|
...(isMultipleAnswers && { multipleChoice: true }),
|
||||||
|
|||||||
@ -12,11 +12,11 @@ import { getActions, getGlobal, withGlobal } from '../../../global';
|
|||||||
import type {
|
import type {
|
||||||
ApiMessage, ApiPeer, ApiPoll, ApiPollAnswer,
|
ApiMessage, ApiPeer, ApiPoll, ApiPollAnswer,
|
||||||
} from '../../../api/types';
|
} from '../../../api/types';
|
||||||
|
import type { ObserveFn } from '../../../hooks/useIntersectionObserver';
|
||||||
import type { LangFn } from '../../../hooks/useLang';
|
import type { LangFn } from '../../../hooks/useLang';
|
||||||
|
|
||||||
import { formatMediaDuration } from '../../../util/date/dateFormat';
|
import { formatMediaDuration } from '../../../util/date/dateFormat';
|
||||||
import { getServerTime } from '../../../util/serverTime';
|
import { getServerTime } from '../../../util/serverTime';
|
||||||
import renderText from '../../common/helpers/renderText';
|
|
||||||
import { renderTextWithEntities } from '../../common/helpers/renderTextWithEntities';
|
import { renderTextWithEntities } from '../../common/helpers/renderTextWithEntities';
|
||||||
|
|
||||||
import useLang from '../../../hooks/useLang';
|
import useLang from '../../../hooks/useLang';
|
||||||
@ -34,6 +34,8 @@ import './Poll.scss';
|
|||||||
type OwnProps = {
|
type OwnProps = {
|
||||||
message: ApiMessage;
|
message: ApiMessage;
|
||||||
poll: ApiPoll;
|
poll: ApiPoll;
|
||||||
|
observeIntersectionForLoading?: ObserveFn;
|
||||||
|
observeIntersectionForPlaying?: ObserveFn;
|
||||||
onSendVote: (options: string[]) => void;
|
onSendVote: (options: string[]) => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -52,6 +54,8 @@ const Poll: FC<OwnProps & StateProps> = ({
|
|||||||
message,
|
message,
|
||||||
poll,
|
poll,
|
||||||
recentVoterIds,
|
recentVoterIds,
|
||||||
|
observeIntersectionForLoading,
|
||||||
|
observeIntersectionForPlaying,
|
||||||
onSendVote,
|
onSendVote,
|
||||||
}) => {
|
}) => {
|
||||||
const { loadMessage, openPollResults, requestConfetti } = getActions();
|
const { loadMessage, openPollResults, requestConfetti } = getActions();
|
||||||
@ -81,10 +85,18 @@ const Poll: FC<OwnProps & StateProps> = ({
|
|||||||
return voteResults?.filter((r) => r.isCorrect).map((r) => r.option) || [];
|
return voteResults?.filter((r) => r.isCorrect).map((r) => r.option) || [];
|
||||||
}, [voteResults]);
|
}, [voteResults]);
|
||||||
const answers = useMemo(() => summary.answers.map((a) => ({
|
const answers = useMemo(() => summary.answers.map((a) => ({
|
||||||
label: a.text,
|
label: renderTextWithEntities({
|
||||||
|
text: a.text.text,
|
||||||
|
entities: a.text.entities,
|
||||||
|
observeIntersectionForLoading,
|
||||||
|
observeIntersectionForPlaying,
|
||||||
|
}),
|
||||||
value: a.option,
|
value: a.option,
|
||||||
hidden: Boolean(summary.quiz && summary.closePeriod && closePeriod <= 0),
|
hidden: Boolean(summary.quiz && summary.closePeriod && closePeriod <= 0),
|
||||||
})), [closePeriod, summary]);
|
})), [
|
||||||
|
closePeriod, observeIntersectionForLoading, observeIntersectionForPlaying,
|
||||||
|
summary.answers, summary.closePeriod, summary.quiz,
|
||||||
|
]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const chosen = poll.results.results?.find((result) => result.isChosen);
|
const chosen = poll.results.results?.find((result) => result.isChosen);
|
||||||
@ -238,7 +250,14 @@ const Poll: FC<OwnProps & StateProps> = ({
|
|||||||
return (
|
return (
|
||||||
<div className="Poll" dir={lang.isRtl ? 'auto' : 'ltr'}>
|
<div className="Poll" dir={lang.isRtl ? 'auto' : 'ltr'}>
|
||||||
{renderSolution()}
|
{renderSolution()}
|
||||||
<div className="poll-question">{renderText(summary.question, ['emoji', 'br'])}</div>
|
<div className="poll-question">
|
||||||
|
{renderTextWithEntities({
|
||||||
|
text: summary.question.text,
|
||||||
|
entities: summary.question.entities,
|
||||||
|
observeIntersectionForLoading,
|
||||||
|
observeIntersectionForPlaying,
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
<div className="poll-type">
|
<div className="poll-type">
|
||||||
{lang(getPollTypeString(summary))}
|
{lang(getPollTypeString(summary))}
|
||||||
{renderRecentVoters()}
|
{renderRecentVoters()}
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import React, {
|
|||||||
import type { ApiPollAnswer, ApiPollResult } from '../../../api/types';
|
import type { ApiPollAnswer, ApiPollResult } from '../../../api/types';
|
||||||
|
|
||||||
import buildClassName from '../../../util/buildClassName';
|
import buildClassName from '../../../util/buildClassName';
|
||||||
import renderText from '../../common/helpers/renderText';
|
import { renderTextWithEntities } from '../../common/helpers/renderTextWithEntities';
|
||||||
|
|
||||||
import './PollOption.scss';
|
import './PollOption.scss';
|
||||||
|
|
||||||
@ -65,7 +65,10 @@ const PollOption: FC<OwnProps> = ({
|
|||||||
</div>
|
</div>
|
||||||
<div className="poll-option-right">
|
<div className="poll-option-right">
|
||||||
<div className="poll-option-text" dir="auto">
|
<div className="poll-option-text" dir="auto">
|
||||||
{renderText(answer.text)}
|
{renderTextWithEntities({
|
||||||
|
text: answer.text.text,
|
||||||
|
entities: answer.text.entities,
|
||||||
|
})}
|
||||||
</div>
|
</div>
|
||||||
<div className={buildClassName('poll-option-answer', showIcon && !correctAnswer && 'wrong')}>
|
<div className={buildClassName('poll-option-answer', showIcon && !correctAnswer && 'wrong')}>
|
||||||
{shouldAnimate && (
|
{shouldAnimate && (
|
||||||
|
|||||||
@ -8,11 +8,11 @@ import {
|
|||||||
getMessageMediaHash,
|
getMessageMediaHash,
|
||||||
getMessagePhoto,
|
getMessagePhoto,
|
||||||
getMessageText,
|
getMessageText,
|
||||||
getMessageTextWithSpoilers,
|
|
||||||
getMessageWebPagePhoto,
|
getMessageWebPagePhoto,
|
||||||
getMessageWebPageVideo,
|
getMessageWebPageVideo,
|
||||||
hasMessageLocalBlobUrl,
|
hasMessageLocalBlobUrl,
|
||||||
} from '../../../../global/helpers';
|
} from '../../../../global/helpers';
|
||||||
|
import { getMessageTextWithSpoilers } from '../../../../global/helpers/messageSummary';
|
||||||
import {
|
import {
|
||||||
CLIPBOARD_ITEM_SUPPORTED,
|
CLIPBOARD_ITEM_SUPPORTED,
|
||||||
copyHtmlToClipboard,
|
copyHtmlToClipboard,
|
||||||
|
|||||||
@ -14,6 +14,7 @@ import type {
|
|||||||
|
|
||||||
import { isUserId } from '../../global/helpers';
|
import { isUserId } from '../../global/helpers';
|
||||||
import { selectTabState } from '../../global/selectors';
|
import { selectTabState } from '../../global/selectors';
|
||||||
|
import { renderTextWithEntities } from '../common/helpers/renderTextWithEntities';
|
||||||
|
|
||||||
import useLang from '../../hooks/useLang';
|
import useLang from '../../hooks/useLang';
|
||||||
import usePrevious from '../../hooks/usePrevious';
|
import usePrevious from '../../hooks/usePrevious';
|
||||||
@ -133,7 +134,12 @@ const PollAnswerResults: FC<OwnProps & StateProps> = ({
|
|||||||
{voters && renderViewMoreButton()}
|
{voters && renderViewMoreButton()}
|
||||||
</div>
|
</div>
|
||||||
<div className="answer-head" dir={lang.isRtl ? 'rtl' : undefined}>
|
<div className="answer-head" dir={lang.isRtl ? 'rtl' : undefined}>
|
||||||
<span className="answer-title" dir="auto">{text}</span>
|
<span className="answer-title" dir="auto">
|
||||||
|
{renderTextWithEntities({
|
||||||
|
text: text.text,
|
||||||
|
entities: text.entities,
|
||||||
|
})}
|
||||||
|
</span>
|
||||||
<span className="answer-percent" dir={lang.isRtl ? 'auto' : undefined}>
|
<span className="answer-percent" dir={lang.isRtl ? 'auto' : undefined}>
|
||||||
{getPercentage(answerVote.votersCount, totalVoters)}%
|
{getPercentage(answerVote.votersCount, totalVoters)}%
|
||||||
</span>
|
</span>
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import type { ApiChat, ApiMessage } from '../../api/types';
|
|||||||
import { getMessagePoll } from '../../global/helpers';
|
import { getMessagePoll } from '../../global/helpers';
|
||||||
import { selectChat, selectChatMessage, selectTabState } from '../../global/selectors';
|
import { selectChat, selectChatMessage, selectTabState } from '../../global/selectors';
|
||||||
import { buildCollectionByKey } from '../../util/iteratees';
|
import { buildCollectionByKey } from '../../util/iteratees';
|
||||||
import renderText from '../common/helpers/renderText';
|
import { renderTextWithEntities } from '../common/helpers/renderTextWithEntities';
|
||||||
|
|
||||||
import useHistoryBack from '../../hooks/useHistoryBack';
|
import useHistoryBack from '../../hooks/useHistoryBack';
|
||||||
import useLang from '../../hooks/useLang';
|
import useLang from '../../hooks/useLang';
|
||||||
@ -53,7 +53,12 @@ const PollResults: FC<OwnProps & StateProps> = ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="PollResults" dir={lang.isRtl ? 'rtl' : undefined}>
|
<div className="PollResults" dir={lang.isRtl ? 'rtl' : undefined}>
|
||||||
<h3 className="poll-question" dir="auto">{renderText(summary.question, ['emoji', 'br'])}</h3>
|
<h3 className="poll-question" dir="auto">
|
||||||
|
{renderTextWithEntities({
|
||||||
|
text: summary.question.text,
|
||||||
|
entities: summary.question.entities,
|
||||||
|
})}
|
||||||
|
</h3>
|
||||||
<div className="poll-results-list custom-scroll">
|
<div className="poll-results-list custom-scroll">
|
||||||
{summary.answers.map((answer) => (
|
{summary.answers.map((answer) => (
|
||||||
<PollAnswerResults
|
<PollAnswerResults
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
import type { ChangeEvent } from 'react';
|
import type { ChangeEvent } from 'react';
|
||||||
import type { FC } from '../../lib/teact/teact';
|
import type { FC, TeactNode } from '../../lib/teact/teact';
|
||||||
import React, { memo, useCallback, useState } from '../../lib/teact/teact';
|
import React, { memo, useCallback, useState } from '../../lib/teact/teact';
|
||||||
|
|
||||||
import Checkbox from './Checkbox';
|
import Checkbox from './Checkbox';
|
||||||
|
|
||||||
export type IRadioOption = {
|
export type IRadioOption = {
|
||||||
label: string;
|
label: TeactNode;
|
||||||
subLabel?: string;
|
subLabel?: string;
|
||||||
disabled?: boolean;
|
disabled?: boolean;
|
||||||
value: string;
|
value: string;
|
||||||
|
|||||||
@ -22,8 +22,9 @@ import { getServerTime } from '../../../util/serverTime';
|
|||||||
import { IS_TOUCH_ENV } from '../../../util/windowEnvironment';
|
import { IS_TOUCH_ENV } from '../../../util/windowEnvironment';
|
||||||
import versionNotification from '../../../versionNotification.txt';
|
import versionNotification from '../../../versionNotification.txt';
|
||||||
import {
|
import {
|
||||||
getIsSavedDialog, getMessageSummaryText, getSenderTitle, isChatChannel, isJoinedChannelMessage,
|
getIsSavedDialog, getSenderTitle, isChatChannel, isJoinedChannelMessage,
|
||||||
} from '../../helpers';
|
} from '../../helpers';
|
||||||
|
import { getMessageSummaryText } from '../../helpers/messageSummary';
|
||||||
import { renderMessageSummaryHtml } from '../../helpers/renderMessageSummaryHtml';
|
import { renderMessageSummaryHtml } from '../../helpers/renderMessageSummaryHtml';
|
||||||
import { addActionHandler, getGlobal, setGlobal } from '../../index';
|
import { addActionHandler, getGlobal, setGlobal } from '../../index';
|
||||||
import {
|
import {
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
export * from './users';
|
export * from './users';
|
||||||
export * from './chats';
|
export * from './chats';
|
||||||
export * from './messages';
|
export * from './messages';
|
||||||
export * from './messageSummary';
|
|
||||||
export * from './messageMedia';
|
export * from './messageMedia';
|
||||||
export * from './localSearch';
|
export * from './localSearch';
|
||||||
export * from './reactions';
|
export * from './reactions';
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import { ApiMessageEntityTypes } from '../../api/types';
|
|||||||
|
|
||||||
import { CONTENT_NOT_SUPPORTED } from '../../config';
|
import { CONTENT_NOT_SUPPORTED } from '../../config';
|
||||||
import trimText from '../../util/trimText';
|
import trimText from '../../util/trimText';
|
||||||
|
import { renderTextWithEntities } from '../../components/common/helpers/renderTextWithEntities';
|
||||||
import { getGlobal } from '../index';
|
import { getGlobal } from '../index';
|
||||||
import {
|
import {
|
||||||
getExpiredMessageContentDescription, getMessageText, getMessageTranscription, isExpiredMessageContent,
|
getExpiredMessageContentDescription, getMessageText, getMessageTranscription, isExpiredMessageContent,
|
||||||
@ -179,7 +180,10 @@ function getSummaryDescription(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (poll) {
|
if (poll) {
|
||||||
summary = poll.summary.question;
|
summary = renderTextWithEntities({
|
||||||
|
text: poll.summary.question.text,
|
||||||
|
entities: poll.summary.question.entities,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (invoice) {
|
if (invoice) {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
const api = require('./api');
|
const api = require('./api');
|
||||||
|
|
||||||
const LAYER = 178;
|
const LAYER = 179;
|
||||||
const tlobjects = {};
|
const tlobjects = {};
|
||||||
|
|
||||||
for (const tl of Object.values(api)) {
|
for (const tl of Object.values(api)) {
|
||||||
|
|||||||
78
src/lib/gramjs/tl/api.d.ts
vendored
78
src/lib/gramjs/tl/api.d.ts
vendored
File diff suppressed because one or more lines are too long
@ -631,6 +631,8 @@ auth.sentCodeTypeEmailCode#f450f59b flags:# apple_signin_allowed:flags.0?true go
|
|||||||
auth.sentCodeTypeSetUpEmailRequired#a5491dea flags:# apple_signin_allowed:flags.0?true google_signin_allowed:flags.1?true = auth.SentCodeType;
|
auth.sentCodeTypeSetUpEmailRequired#a5491dea flags:# apple_signin_allowed:flags.0?true google_signin_allowed:flags.1?true = auth.SentCodeType;
|
||||||
auth.sentCodeTypeFragmentSms#d9565c39 url:string length:int = auth.SentCodeType;
|
auth.sentCodeTypeFragmentSms#d9565c39 url:string length:int = auth.SentCodeType;
|
||||||
auth.sentCodeTypeFirebaseSms#e57b1432 flags:# nonce:flags.0?bytes receipt:flags.1?string push_timeout:flags.1?int length:int = auth.SentCodeType;
|
auth.sentCodeTypeFirebaseSms#e57b1432 flags:# nonce:flags.0?bytes receipt:flags.1?string push_timeout:flags.1?int length:int = auth.SentCodeType;
|
||||||
|
auth.sentCodeTypeSmsWord#a416ac81 flags:# beginning:flags.0?string = auth.SentCodeType;
|
||||||
|
auth.sentCodeTypeSmsPhrase#b37794af flags:# beginning:flags.0?string = auth.SentCodeType;
|
||||||
messages.botCallbackAnswer#36585ea4 flags:# alert:flags.1?true has_url:flags.3?true native_ui:flags.4?true message:flags.0?string url:flags.2?string cache_time:int = messages.BotCallbackAnswer;
|
messages.botCallbackAnswer#36585ea4 flags:# alert:flags.1?true has_url:flags.3?true native_ui:flags.4?true message:flags.0?string url:flags.2?string cache_time:int = messages.BotCallbackAnswer;
|
||||||
messages.messageEditData#26b5dde6 flags:# caption:flags.0?true = messages.MessageEditData;
|
messages.messageEditData#26b5dde6 flags:# caption:flags.0?true = messages.MessageEditData;
|
||||||
inputBotInlineMessageID#890c3d89 dc_id:int id:long access_hash:long = InputBotInlineMessageID;
|
inputBotInlineMessageID#890c3d89 dc_id:int id:long access_hash:long = InputBotInlineMessageID;
|
||||||
@ -915,8 +917,8 @@ page#98657f0d flags:# part:flags.0?true rtl:flags.1?true v2:flags.2?true url:str
|
|||||||
help.supportName#8c05f1c9 name:string = help.SupportName;
|
help.supportName#8c05f1c9 name:string = help.SupportName;
|
||||||
help.userInfoEmpty#f3ae2eed = help.UserInfo;
|
help.userInfoEmpty#f3ae2eed = help.UserInfo;
|
||||||
help.userInfo#1eb3758 message:string entities:Vector<MessageEntity> author:string date:int = help.UserInfo;
|
help.userInfo#1eb3758 message:string entities:Vector<MessageEntity> author:string date:int = help.UserInfo;
|
||||||
pollAnswer#6ca9c2e9 text:string option:bytes = PollAnswer;
|
pollAnswer#ff16e2ca text:TextWithEntities option:bytes = PollAnswer;
|
||||||
poll#86e18161 id:long flags:# closed:flags.0?true public_voters:flags.1?true multiple_choice:flags.2?true quiz:flags.3?true question:string answers:Vector<PollAnswer> close_period:flags.4?int close_date:flags.5?int = Poll;
|
poll#58747131 id:long flags:# closed:flags.0?true public_voters:flags.1?true multiple_choice:flags.2?true quiz:flags.3?true question:TextWithEntities answers:Vector<PollAnswer> close_period:flags.4?int close_date:flags.5?int = Poll;
|
||||||
pollAnswerVoters#3b6ddad2 flags:# chosen:flags.0?true correct:flags.1?true option:bytes voters:int = PollAnswerVoters;
|
pollAnswerVoters#3b6ddad2 flags:# chosen:flags.0?true correct:flags.1?true option:bytes voters:int = PollAnswerVoters;
|
||||||
pollResults#7adf2420 flags:# min:flags.0?true results:flags.1?Vector<PollAnswerVoters> total_voters:flags.2?int recent_voters:flags.3?Vector<Peer> solution:flags.4?string solution_entities:flags.4?Vector<MessageEntity> = PollResults;
|
pollResults#7adf2420 flags:# min:flags.0?true results:flags.1?Vector<PollAnswerVoters> total_voters:flags.2?int recent_voters:flags.3?Vector<Peer> solution:flags.4?string solution_entities:flags.4?Vector<MessageEntity> = PollResults;
|
||||||
chatOnlines#f041e250 onlines:int = ChatOnlines;
|
chatOnlines#f041e250 onlines:int = ChatOnlines;
|
||||||
@ -1139,6 +1141,8 @@ requestPeerTypeBroadcast#339bef6c flags:# creator:flags.0?true has_username:flag
|
|||||||
emojiListNotModified#481eadfa = EmojiList;
|
emojiListNotModified#481eadfa = EmojiList;
|
||||||
emojiList#7a1e11d1 hash:long document_id:Vector<long> = EmojiList;
|
emojiList#7a1e11d1 hash:long document_id:Vector<long> = EmojiList;
|
||||||
emojiGroup#7a9abda9 title:string icon_emoji_id:long emoticons:Vector<string> = EmojiGroup;
|
emojiGroup#7a9abda9 title:string icon_emoji_id:long emoticons:Vector<string> = EmojiGroup;
|
||||||
|
emojiGroupGreeting#80d26cc7 title:string icon_emoji_id:long emoticons:Vector<string> = EmojiGroup;
|
||||||
|
emojiGroupPremium#93bcf34 title:string icon_emoji_id:long = EmojiGroup;
|
||||||
messages.emojiGroupsNotModified#6fb4ad87 = messages.EmojiGroups;
|
messages.emojiGroupsNotModified#6fb4ad87 = messages.EmojiGroups;
|
||||||
messages.emojiGroups#881fb94b hash:int groups:Vector<EmojiGroup> = messages.EmojiGroups;
|
messages.emojiGroups#881fb94b hash:int groups:Vector<EmojiGroup> = messages.EmojiGroups;
|
||||||
textWithEntities#751f3146 text:string entities:Vector<MessageEntity> = TextWithEntities;
|
textWithEntities#751f3146 text:string entities:Vector<MessageEntity> = TextWithEntities;
|
||||||
@ -1279,7 +1283,7 @@ sponsoredMessageReportOption#430d3150 text:string option:bytes = SponsoredMessag
|
|||||||
channels.sponsoredMessageReportResultChooseOption#846f9e42 title:string options:Vector<SponsoredMessageReportOption> = channels.SponsoredMessageReportResult;
|
channels.sponsoredMessageReportResultChooseOption#846f9e42 title:string options:Vector<SponsoredMessageReportOption> = channels.SponsoredMessageReportResult;
|
||||||
channels.sponsoredMessageReportResultAdsHidden#3e3bcf2f = channels.SponsoredMessageReportResult;
|
channels.sponsoredMessageReportResultAdsHidden#3e3bcf2f = channels.SponsoredMessageReportResult;
|
||||||
channels.sponsoredMessageReportResultReported#ad798849 = channels.SponsoredMessageReportResult;
|
channels.sponsoredMessageReportResultReported#ad798849 = channels.SponsoredMessageReportResult;
|
||||||
stats.broadcastRevenueStats#d07b4bad top_hours_graph:StatsGraph revenue_graph:StatsGraph current_balance:long available_balance:long overall_revenue:long usd_rate:double = stats.BroadcastRevenueStats;
|
stats.broadcastRevenueStats#5407e297 top_hours_graph:StatsGraph revenue_graph:StatsGraph balances:BroadcastRevenueBalances usd_rate:double = stats.BroadcastRevenueStats;
|
||||||
stats.broadcastRevenueWithdrawalUrl#ec659737 url:string = stats.BroadcastRevenueWithdrawalUrl;
|
stats.broadcastRevenueWithdrawalUrl#ec659737 url:string = stats.BroadcastRevenueWithdrawalUrl;
|
||||||
broadcastRevenueTransactionProceeds#557e2cc4 amount:long from_date:int to_date:int = BroadcastRevenueTransaction;
|
broadcastRevenueTransactionProceeds#557e2cc4 amount:long from_date:int to_date:int = BroadcastRevenueTransaction;
|
||||||
broadcastRevenueTransactionWithdrawal#5a590978 flags:# pending:flags.0?true failed:flags.2?true amount:long date:int provider:string transaction_date:flags.1?int transaction_url:flags.1?string = BroadcastRevenueTransaction;
|
broadcastRevenueTransactionWithdrawal#5a590978 flags:# pending:flags.0?true failed:flags.2?true amount:long date:int provider:string transaction_date:flags.1?int transaction_url:flags.1?string = BroadcastRevenueTransaction;
|
||||||
@ -1288,6 +1292,7 @@ stats.broadcastRevenueTransactions#87158466 count:int transactions:Vector<Broadc
|
|||||||
reactionNotificationsFromContacts#bac3a61a = ReactionNotificationsFrom;
|
reactionNotificationsFromContacts#bac3a61a = ReactionNotificationsFrom;
|
||||||
reactionNotificationsFromAll#4b9e22a0 = ReactionNotificationsFrom;
|
reactionNotificationsFromAll#4b9e22a0 = ReactionNotificationsFrom;
|
||||||
reactionsNotifySettings#56e34970 flags:# messages_notify_from:flags.0?ReactionNotificationsFrom stories_notify_from:flags.1?ReactionNotificationsFrom sound:NotificationSound show_previews:Bool = ReactionsNotifySettings;
|
reactionsNotifySettings#56e34970 flags:# messages_notify_from:flags.0?ReactionNotificationsFrom stories_notify_from:flags.1?ReactionNotificationsFrom sound:NotificationSound show_previews:Bool = ReactionsNotifySettings;
|
||||||
|
broadcastRevenueBalances#8438f1c6 current_balance:long available_balance:long overall_revenue:long = BroadcastRevenueBalances;
|
||||||
---functions---
|
---functions---
|
||||||
invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X;
|
invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X;
|
||||||
initConnection#c1cd5ea9 {X:Type} flags:# api_id:int device_model:string system_version:string app_version:string system_lang_code:string lang_pack:string lang_code:string proxy:flags.0?InputClientProxy params:flags.1?JSONValue query:!X = X;
|
initConnection#c1cd5ea9 {X:Type} flags:# api_id:int device_model:string system_version:string app_version:string system_lang_code:string lang_pack:string lang_code:string proxy:flags.0?InputClientProxy params:flags.1?JSONValue query:!X = X;
|
||||||
|
|||||||
@ -758,6 +758,8 @@ auth.sentCodeTypeEmailCode#f450f59b flags:# apple_signin_allowed:flags.0?true go
|
|||||||
auth.sentCodeTypeSetUpEmailRequired#a5491dea flags:# apple_signin_allowed:flags.0?true google_signin_allowed:flags.1?true = auth.SentCodeType;
|
auth.sentCodeTypeSetUpEmailRequired#a5491dea flags:# apple_signin_allowed:flags.0?true google_signin_allowed:flags.1?true = auth.SentCodeType;
|
||||||
auth.sentCodeTypeFragmentSms#d9565c39 url:string length:int = auth.SentCodeType;
|
auth.sentCodeTypeFragmentSms#d9565c39 url:string length:int = auth.SentCodeType;
|
||||||
auth.sentCodeTypeFirebaseSms#e57b1432 flags:# nonce:flags.0?bytes receipt:flags.1?string push_timeout:flags.1?int length:int = auth.SentCodeType;
|
auth.sentCodeTypeFirebaseSms#e57b1432 flags:# nonce:flags.0?bytes receipt:flags.1?string push_timeout:flags.1?int length:int = auth.SentCodeType;
|
||||||
|
auth.sentCodeTypeSmsWord#a416ac81 flags:# beginning:flags.0?string = auth.SentCodeType;
|
||||||
|
auth.sentCodeTypeSmsPhrase#b37794af flags:# beginning:flags.0?string = auth.SentCodeType;
|
||||||
|
|
||||||
messages.botCallbackAnswer#36585ea4 flags:# alert:flags.1?true has_url:flags.3?true native_ui:flags.4?true message:flags.0?string url:flags.2?string cache_time:int = messages.BotCallbackAnswer;
|
messages.botCallbackAnswer#36585ea4 flags:# alert:flags.1?true has_url:flags.3?true native_ui:flags.4?true message:flags.0?string url:flags.2?string cache_time:int = messages.BotCallbackAnswer;
|
||||||
|
|
||||||
@ -1149,9 +1151,9 @@ help.supportName#8c05f1c9 name:string = help.SupportName;
|
|||||||
help.userInfoEmpty#f3ae2eed = help.UserInfo;
|
help.userInfoEmpty#f3ae2eed = help.UserInfo;
|
||||||
help.userInfo#1eb3758 message:string entities:Vector<MessageEntity> author:string date:int = help.UserInfo;
|
help.userInfo#1eb3758 message:string entities:Vector<MessageEntity> author:string date:int = help.UserInfo;
|
||||||
|
|
||||||
pollAnswer#6ca9c2e9 text:string option:bytes = PollAnswer;
|
pollAnswer#ff16e2ca text:TextWithEntities option:bytes = PollAnswer;
|
||||||
|
|
||||||
poll#86e18161 id:long flags:# closed:flags.0?true public_voters:flags.1?true multiple_choice:flags.2?true quiz:flags.3?true question:string answers:Vector<PollAnswer> close_period:flags.4?int close_date:flags.5?int = Poll;
|
poll#58747131 id:long flags:# closed:flags.0?true public_voters:flags.1?true multiple_choice:flags.2?true quiz:flags.3?true question:TextWithEntities answers:Vector<PollAnswer> close_period:flags.4?int close_date:flags.5?int = Poll;
|
||||||
|
|
||||||
pollAnswerVoters#3b6ddad2 flags:# chosen:flags.0?true correct:flags.1?true option:bytes voters:int = PollAnswerVoters;
|
pollAnswerVoters#3b6ddad2 flags:# chosen:flags.0?true correct:flags.1?true option:bytes voters:int = PollAnswerVoters;
|
||||||
|
|
||||||
@ -1517,6 +1519,8 @@ emojiListNotModified#481eadfa = EmojiList;
|
|||||||
emojiList#7a1e11d1 hash:long document_id:Vector<long> = EmojiList;
|
emojiList#7a1e11d1 hash:long document_id:Vector<long> = EmojiList;
|
||||||
|
|
||||||
emojiGroup#7a9abda9 title:string icon_emoji_id:long emoticons:Vector<string> = EmojiGroup;
|
emojiGroup#7a9abda9 title:string icon_emoji_id:long emoticons:Vector<string> = EmojiGroup;
|
||||||
|
emojiGroupGreeting#80d26cc7 title:string icon_emoji_id:long emoticons:Vector<string> = EmojiGroup;
|
||||||
|
emojiGroupPremium#93bcf34 title:string icon_emoji_id:long = EmojiGroup;
|
||||||
|
|
||||||
messages.emojiGroupsNotModified#6fb4ad87 = messages.EmojiGroups;
|
messages.emojiGroupsNotModified#6fb4ad87 = messages.EmojiGroups;
|
||||||
messages.emojiGroups#881fb94b hash:int groups:Vector<EmojiGroup> = messages.EmojiGroups;
|
messages.emojiGroups#881fb94b hash:int groups:Vector<EmojiGroup> = messages.EmojiGroups;
|
||||||
@ -1760,7 +1764,7 @@ channels.sponsoredMessageReportResultChooseOption#846f9e42 title:string options:
|
|||||||
channels.sponsoredMessageReportResultAdsHidden#3e3bcf2f = channels.SponsoredMessageReportResult;
|
channels.sponsoredMessageReportResultAdsHidden#3e3bcf2f = channels.SponsoredMessageReportResult;
|
||||||
channels.sponsoredMessageReportResultReported#ad798849 = channels.SponsoredMessageReportResult;
|
channels.sponsoredMessageReportResultReported#ad798849 = channels.SponsoredMessageReportResult;
|
||||||
|
|
||||||
stats.broadcastRevenueStats#d07b4bad top_hours_graph:StatsGraph revenue_graph:StatsGraph current_balance:long available_balance:long overall_revenue:long usd_rate:double = stats.BroadcastRevenueStats;
|
stats.broadcastRevenueStats#5407e297 top_hours_graph:StatsGraph revenue_graph:StatsGraph balances:BroadcastRevenueBalances usd_rate:double = stats.BroadcastRevenueStats;
|
||||||
|
|
||||||
stats.broadcastRevenueWithdrawalUrl#ec659737 url:string = stats.BroadcastRevenueWithdrawalUrl;
|
stats.broadcastRevenueWithdrawalUrl#ec659737 url:string = stats.BroadcastRevenueWithdrawalUrl;
|
||||||
|
|
||||||
@ -1775,6 +1779,8 @@ reactionNotificationsFromAll#4b9e22a0 = ReactionNotificationsFrom;
|
|||||||
|
|
||||||
reactionsNotifySettings#56e34970 flags:# messages_notify_from:flags.0?ReactionNotificationsFrom stories_notify_from:flags.1?ReactionNotificationsFrom sound:NotificationSound show_previews:Bool = ReactionsNotifySettings;
|
reactionsNotifySettings#56e34970 flags:# messages_notify_from:flags.0?ReactionNotificationsFrom stories_notify_from:flags.1?ReactionNotificationsFrom sound:NotificationSound show_previews:Bool = ReactionsNotifySettings;
|
||||||
|
|
||||||
|
broadcastRevenueBalances#8438f1c6 current_balance:long available_balance:long overall_revenue:long = BroadcastRevenueBalances;
|
||||||
|
|
||||||
---functions---
|
---functions---
|
||||||
|
|
||||||
invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X;
|
invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X;
|
||||||
@ -1808,6 +1814,7 @@ auth.checkRecoveryPassword#d36bf79 code:string = Bool;
|
|||||||
auth.importWebTokenAuthorization#2db873a9 api_id:int api_hash:string web_auth_token:string = auth.Authorization;
|
auth.importWebTokenAuthorization#2db873a9 api_id:int api_hash:string web_auth_token:string = auth.Authorization;
|
||||||
auth.requestFirebaseSms#89464b50 flags:# phone_number:string phone_code_hash:string safety_net_token:flags.0?string ios_push_secret:flags.1?string = Bool;
|
auth.requestFirebaseSms#89464b50 flags:# phone_number:string phone_code_hash:string safety_net_token:flags.0?string ios_push_secret:flags.1?string = Bool;
|
||||||
auth.resetLoginEmail#7e960193 phone_number:string phone_code_hash:string = auth.SentCode;
|
auth.resetLoginEmail#7e960193 phone_number:string phone_code_hash:string = auth.SentCode;
|
||||||
|
auth.reportMissingCode#cb9deff6 phone_number:string phone_code_hash:string mnc:string = Bool;
|
||||||
|
|
||||||
account.registerDevice#ec86017a flags:# no_muted:flags.0?true token_type:int token:string app_sandbox:Bool secret:bytes other_uids:Vector<long> = Bool;
|
account.registerDevice#ec86017a flags:# no_muted:flags.0?true token_type:int token:string app_sandbox:Bool secret:bytes other_uids:Vector<long> = Bool;
|
||||||
account.unregisterDevice#6a0d3206 token_type:int token:string other_uids:Vector<long> = Bool;
|
account.unregisterDevice#6a0d3206 token_type:int token:string other_uids:Vector<long> = Bool;
|
||||||
@ -2162,6 +2169,7 @@ messages.sendQuickReplyMessages#6c750de1 peer:InputPeer shortcut_id:int id:Vecto
|
|||||||
messages.deleteQuickReplyMessages#e105e910 shortcut_id:int id:Vector<int> = Updates;
|
messages.deleteQuickReplyMessages#e105e910 shortcut_id:int id:Vector<int> = Updates;
|
||||||
messages.toggleDialogFilterTags#fd2dda49 enabled:Bool = Bool;
|
messages.toggleDialogFilterTags#fd2dda49 enabled:Bool = Bool;
|
||||||
messages.getMyStickers#d0b5e1fc offset_id:long limit:int = messages.MyStickers;
|
messages.getMyStickers#d0b5e1fc offset_id:long limit:int = messages.MyStickers;
|
||||||
|
messages.getEmojiStickerGroups#1dd840f5 hash:int = messages.EmojiGroups;
|
||||||
|
|
||||||
updates.getState#edd4882a = updates.State;
|
updates.getState#edd4882a = updates.State;
|
||||||
updates.getDifference#19c2f763 flags:# pts:int pts_limit:flags.1?int pts_total_limit:flags.0?int date:int qts:int qts_limit:flags.2?int = updates.Difference;
|
updates.getDifference#19c2f763 flags:# pts:int pts_limit:flags.1?int pts_total_limit:flags.0?int date:int qts:int qts_limit:flags.2?int = updates.Difference;
|
||||||
|
|||||||
@ -13,7 +13,6 @@ import {
|
|||||||
getMessageAction,
|
getMessageAction,
|
||||||
getMessageRecentReaction,
|
getMessageRecentReaction,
|
||||||
getMessageSenderName,
|
getMessageSenderName,
|
||||||
getMessageSummaryText,
|
|
||||||
getPrivateChatUserId,
|
getPrivateChatUserId,
|
||||||
getUserFullName,
|
getUserFullName,
|
||||||
isActionMessage,
|
isActionMessage,
|
||||||
@ -21,6 +20,7 @@ import {
|
|||||||
selectIsChatMuted,
|
selectIsChatMuted,
|
||||||
selectShouldShowMessagePreview,
|
selectShouldShowMessagePreview,
|
||||||
} from '../global/helpers';
|
} from '../global/helpers';
|
||||||
|
import { getMessageSummaryText } from '../global/helpers/messageSummary';
|
||||||
import { getMessageReplyInfo } from '../global/helpers/replies';
|
import { getMessageReplyInfo } from '../global/helpers/replies';
|
||||||
import { addNotifyExceptions, replaceSettings } from '../global/reducers';
|
import { addNotifyExceptions, replaceSettings } from '../global/reducers';
|
||||||
import {
|
import {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user