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 { addStoryToLocalDb, serializeBytes } from '../helpers';
|
||||
import {
|
||||
buildApiFormattedText,
|
||||
buildApiMessageEntity,
|
||||
buildApiPhoto,
|
||||
buildApiPhotoSize,
|
||||
@ -609,7 +610,7 @@ export function buildMessageStoryData(media: GramJs.TypeMessageMedia): ApiMessag
|
||||
export function buildPoll(poll: GramJs.Poll, pollResults: GramJs.PollResults): ApiPoll {
|
||||
const { id, answers: rawAnswers } = poll;
|
||||
const answers = rawAnswers.map((answer) => ({
|
||||
text: answer.text,
|
||||
text: buildApiFormattedText(answer.text),
|
||||
option: serializeBytes(answer.option),
|
||||
}));
|
||||
|
||||
@ -617,11 +618,11 @@ export function buildPoll(poll: GramJs.Poll, pollResults: GramJs.PollResults): A
|
||||
id: String(id),
|
||||
summary: {
|
||||
isPublic: poll.publicVoters,
|
||||
question: buildApiFormattedText(poll.question),
|
||||
...pick(poll, [
|
||||
'closed',
|
||||
'multipleChoice',
|
||||
'quiz',
|
||||
'question',
|
||||
'closePeriod',
|
||||
'closeDate',
|
||||
]),
|
||||
|
||||
@ -169,9 +169,12 @@ export function buildInputPoll(pollParams: ApiNewPoll, randomId: BigInt.BigInteg
|
||||
const poll = new GramJs.Poll({
|
||||
id: randomId,
|
||||
publicVoters: summary.isPublic,
|
||||
question: summary.question,
|
||||
question: buildInputTextWithEntities(summary.question),
|
||||
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,
|
||||
multipleChoice: summary.multipleChoice,
|
||||
@ -200,9 +203,12 @@ export function buildInputPollFromExisting(poll: ApiPoll, shouldClose = false) {
|
||||
poll: new GramJs.Poll({
|
||||
id: BigInt(poll.id),
|
||||
publicVoters: poll.summary.isPublic,
|
||||
question: poll.summary.question,
|
||||
question: buildInputTextWithEntities(poll.summary.question),
|
||||
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,
|
||||
multipleChoice: poll.summary.multipleChoice,
|
||||
|
||||
@ -139,7 +139,7 @@ export interface ApiContact {
|
||||
}
|
||||
|
||||
export interface ApiPollAnswer {
|
||||
text: string;
|
||||
text: ApiFormattedText;
|
||||
option: string;
|
||||
}
|
||||
|
||||
@ -157,7 +157,7 @@ export interface ApiPoll {
|
||||
isPublic?: true;
|
||||
multipleChoice?: true;
|
||||
quiz?: true;
|
||||
question: string;
|
||||
question: ApiFormattedText;
|
||||
answers: ApiPollAnswer[];
|
||||
closePeriod?: number;
|
||||
closeDate?: number;
|
||||
|
||||
@ -7,11 +7,14 @@ import { ApiMessageEntityTypes } from '../../api/types';
|
||||
|
||||
import {
|
||||
extractMessageText,
|
||||
getMessagePoll,
|
||||
} from '../../global/helpers';
|
||||
import {
|
||||
getMessageSummaryDescription,
|
||||
getMessageSummaryEmoji,
|
||||
getMessageSummaryText,
|
||||
TRUNCATED_SUMMARY_LENGTH,
|
||||
} from '../../global/helpers';
|
||||
} from '../../global/helpers/messageSummary';
|
||||
import trimText from '../../util/trimText';
|
||||
import renderText from './helpers/renderText';
|
||||
|
||||
@ -47,8 +50,9 @@ function MessageSummary({
|
||||
const { text, entities } = extractMessageText(message, inChatList) || {};
|
||||
const hasSpoilers = entities?.some((e) => e.type === ApiMessageEntityTypes.Spoiler);
|
||||
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 trimmedText = trimText(summaryText, truncateLength);
|
||||
|
||||
|
||||
@ -11,7 +11,6 @@ import type { IconName } from '../../../types/icons';
|
||||
|
||||
import { CONTENT_NOT_SUPPORTED } from '../../../config';
|
||||
import {
|
||||
getMediaContentTypeDescription,
|
||||
getMessageIsSpoiler,
|
||||
getMessageMediaHash,
|
||||
getMessageRoundVideo,
|
||||
@ -22,6 +21,7 @@ import {
|
||||
isMessageTranslatable,
|
||||
isUserId,
|
||||
} from '../../../global/helpers';
|
||||
import { getMediaContentTypeDescription } from '../../../global/helpers/messageSummary';
|
||||
import buildClassName from '../../../util/buildClassName';
|
||||
import freezeWhenClosed from '../../../util/hoc/freezeWhenClosed';
|
||||
import { getPictogramDimensions } from '../helpers/mediaDimensions';
|
||||
|
||||
@ -10,10 +10,10 @@ import type { TextPart } from '../../../types';
|
||||
import {
|
||||
getChatTitle,
|
||||
getExpiredMessageDescription,
|
||||
getMessageSummaryText,
|
||||
getUserFullName,
|
||||
isExpiredMessage,
|
||||
} from '../../../global/helpers';
|
||||
import { getMessageSummaryText } from '../../../global/helpers/messageSummary';
|
||||
import { formatCurrency } from '../../../util/formatCurrency';
|
||||
import trimText from '../../../util/trimText';
|
||||
import renderText from './renderText';
|
||||
|
||||
@ -3,13 +3,15 @@ import type { LangFn } from '../../../hooks/useLang';
|
||||
import type { TextPart } from '../../../types';
|
||||
import { ApiMessageEntityTypes } from '../../../api/types';
|
||||
|
||||
import {
|
||||
getMessageText,
|
||||
} from '../../../global/helpers';
|
||||
import {
|
||||
getMessageSummaryDescription,
|
||||
getMessageSummaryEmoji,
|
||||
getMessageSummaryText,
|
||||
getMessageText,
|
||||
TRUNCATED_SUMMARY_LENGTH,
|
||||
} from '../../../global/helpers';
|
||||
} from '../../../global/helpers/messageSummary';
|
||||
import { getMessageKey } from '../../../util/messageKey';
|
||||
import trimText from '../../../util/trimText';
|
||||
import renderText from './renderText';
|
||||
|
||||
@ -125,7 +125,7 @@ const SettingsDoNotTranslate: FC<OwnProps & StateProps> = ({
|
||||
}
|
||||
|
||||
return displayedOptions.filter((option) => (
|
||||
option.label.toLowerCase().includes(search.toLowerCase())
|
||||
option.label.toString().toLowerCase().includes(search.toLowerCase())
|
||||
|| option.subLabel?.toLowerCase().includes(search.toLowerCase())
|
||||
|| option.value.toLowerCase().includes(search.toLowerCase())
|
||||
));
|
||||
|
||||
@ -111,7 +111,9 @@ const PollModal: FC<OwnProps> = ({
|
||||
if (!text) return undefined;
|
||||
|
||||
return {
|
||||
text,
|
||||
text: {
|
||||
text,
|
||||
},
|
||||
option: String(index),
|
||||
...(index === correctOption && { correct: true }),
|
||||
};
|
||||
@ -141,7 +143,9 @@ const PollModal: FC<OwnProps> = ({
|
||||
|
||||
const payload: ApiNewPoll = {
|
||||
summary: {
|
||||
question: questionTrimmed,
|
||||
question: {
|
||||
text: questionTrimmed,
|
||||
},
|
||||
answers,
|
||||
...(!isAnonymous && { isPublic: true }),
|
||||
...(isMultipleAnswers && { multipleChoice: true }),
|
||||
|
||||
@ -12,11 +12,11 @@ import { getActions, getGlobal, withGlobal } from '../../../global';
|
||||
import type {
|
||||
ApiMessage, ApiPeer, ApiPoll, ApiPollAnswer,
|
||||
} from '../../../api/types';
|
||||
import type { ObserveFn } from '../../../hooks/useIntersectionObserver';
|
||||
import type { LangFn } from '../../../hooks/useLang';
|
||||
|
||||
import { formatMediaDuration } from '../../../util/date/dateFormat';
|
||||
import { getServerTime } from '../../../util/serverTime';
|
||||
import renderText from '../../common/helpers/renderText';
|
||||
import { renderTextWithEntities } from '../../common/helpers/renderTextWithEntities';
|
||||
|
||||
import useLang from '../../../hooks/useLang';
|
||||
@ -34,6 +34,8 @@ import './Poll.scss';
|
||||
type OwnProps = {
|
||||
message: ApiMessage;
|
||||
poll: ApiPoll;
|
||||
observeIntersectionForLoading?: ObserveFn;
|
||||
observeIntersectionForPlaying?: ObserveFn;
|
||||
onSendVote: (options: string[]) => void;
|
||||
};
|
||||
|
||||
@ -52,6 +54,8 @@ const Poll: FC<OwnProps & StateProps> = ({
|
||||
message,
|
||||
poll,
|
||||
recentVoterIds,
|
||||
observeIntersectionForLoading,
|
||||
observeIntersectionForPlaying,
|
||||
onSendVote,
|
||||
}) => {
|
||||
const { loadMessage, openPollResults, requestConfetti } = getActions();
|
||||
@ -81,10 +85,18 @@ const Poll: FC<OwnProps & StateProps> = ({
|
||||
return voteResults?.filter((r) => r.isCorrect).map((r) => r.option) || [];
|
||||
}, [voteResults]);
|
||||
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,
|
||||
hidden: Boolean(summary.quiz && summary.closePeriod && closePeriod <= 0),
|
||||
})), [closePeriod, summary]);
|
||||
})), [
|
||||
closePeriod, observeIntersectionForLoading, observeIntersectionForPlaying,
|
||||
summary.answers, summary.closePeriod, summary.quiz,
|
||||
]);
|
||||
|
||||
useEffect(() => {
|
||||
const chosen = poll.results.results?.find((result) => result.isChosen);
|
||||
@ -238,7 +250,14 @@ const Poll: FC<OwnProps & StateProps> = ({
|
||||
return (
|
||||
<div className="Poll" dir={lang.isRtl ? 'auto' : 'ltr'}>
|
||||
{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">
|
||||
{lang(getPollTypeString(summary))}
|
||||
{renderRecentVoters()}
|
||||
|
||||
@ -7,7 +7,7 @@ import React, {
|
||||
import type { ApiPollAnswer, ApiPollResult } from '../../../api/types';
|
||||
|
||||
import buildClassName from '../../../util/buildClassName';
|
||||
import renderText from '../../common/helpers/renderText';
|
||||
import { renderTextWithEntities } from '../../common/helpers/renderTextWithEntities';
|
||||
|
||||
import './PollOption.scss';
|
||||
|
||||
@ -65,7 +65,10 @@ const PollOption: FC<OwnProps> = ({
|
||||
</div>
|
||||
<div className="poll-option-right">
|
||||
<div className="poll-option-text" dir="auto">
|
||||
{renderText(answer.text)}
|
||||
{renderTextWithEntities({
|
||||
text: answer.text.text,
|
||||
entities: answer.text.entities,
|
||||
})}
|
||||
</div>
|
||||
<div className={buildClassName('poll-option-answer', showIcon && !correctAnswer && 'wrong')}>
|
||||
{shouldAnimate && (
|
||||
|
||||
@ -8,11 +8,11 @@ import {
|
||||
getMessageMediaHash,
|
||||
getMessagePhoto,
|
||||
getMessageText,
|
||||
getMessageTextWithSpoilers,
|
||||
getMessageWebPagePhoto,
|
||||
getMessageWebPageVideo,
|
||||
hasMessageLocalBlobUrl,
|
||||
} from '../../../../global/helpers';
|
||||
import { getMessageTextWithSpoilers } from '../../../../global/helpers/messageSummary';
|
||||
import {
|
||||
CLIPBOARD_ITEM_SUPPORTED,
|
||||
copyHtmlToClipboard,
|
||||
|
||||
@ -14,6 +14,7 @@ import type {
|
||||
|
||||
import { isUserId } from '../../global/helpers';
|
||||
import { selectTabState } from '../../global/selectors';
|
||||
import { renderTextWithEntities } from '../common/helpers/renderTextWithEntities';
|
||||
|
||||
import useLang from '../../hooks/useLang';
|
||||
import usePrevious from '../../hooks/usePrevious';
|
||||
@ -133,7 +134,12 @@ const PollAnswerResults: FC<OwnProps & StateProps> = ({
|
||||
{voters && renderViewMoreButton()}
|
||||
</div>
|
||||
<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}>
|
||||
{getPercentage(answerVote.votersCount, totalVoters)}%
|
||||
</span>
|
||||
|
||||
@ -7,7 +7,7 @@ import type { ApiChat, ApiMessage } from '../../api/types';
|
||||
import { getMessagePoll } from '../../global/helpers';
|
||||
import { selectChat, selectChatMessage, selectTabState } from '../../global/selectors';
|
||||
import { buildCollectionByKey } from '../../util/iteratees';
|
||||
import renderText from '../common/helpers/renderText';
|
||||
import { renderTextWithEntities } from '../common/helpers/renderTextWithEntities';
|
||||
|
||||
import useHistoryBack from '../../hooks/useHistoryBack';
|
||||
import useLang from '../../hooks/useLang';
|
||||
@ -53,7 +53,12 @@ const PollResults: FC<OwnProps & StateProps> = ({
|
||||
|
||||
return (
|
||||
<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">
|
||||
{summary.answers.map((answer) => (
|
||||
<PollAnswerResults
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
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 Checkbox from './Checkbox';
|
||||
|
||||
export type IRadioOption = {
|
||||
label: string;
|
||||
label: TeactNode;
|
||||
subLabel?: string;
|
||||
disabled?: boolean;
|
||||
value: string;
|
||||
|
||||
@ -22,8 +22,9 @@ import { getServerTime } from '../../../util/serverTime';
|
||||
import { IS_TOUCH_ENV } from '../../../util/windowEnvironment';
|
||||
import versionNotification from '../../../versionNotification.txt';
|
||||
import {
|
||||
getIsSavedDialog, getMessageSummaryText, getSenderTitle, isChatChannel, isJoinedChannelMessage,
|
||||
getIsSavedDialog, getSenderTitle, isChatChannel, isJoinedChannelMessage,
|
||||
} from '../../helpers';
|
||||
import { getMessageSummaryText } from '../../helpers/messageSummary';
|
||||
import { renderMessageSummaryHtml } from '../../helpers/renderMessageSummaryHtml';
|
||||
import { addActionHandler, getGlobal, setGlobal } from '../../index';
|
||||
import {
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
export * from './users';
|
||||
export * from './chats';
|
||||
export * from './messages';
|
||||
export * from './messageSummary';
|
||||
export * from './messageMedia';
|
||||
export * from './localSearch';
|
||||
export * from './reactions';
|
||||
|
||||
@ -6,6 +6,7 @@ import { ApiMessageEntityTypes } from '../../api/types';
|
||||
|
||||
import { CONTENT_NOT_SUPPORTED } from '../../config';
|
||||
import trimText from '../../util/trimText';
|
||||
import { renderTextWithEntities } from '../../components/common/helpers/renderTextWithEntities';
|
||||
import { getGlobal } from '../index';
|
||||
import {
|
||||
getExpiredMessageContentDescription, getMessageText, getMessageTranscription, isExpiredMessageContent,
|
||||
@ -179,7 +180,10 @@ function getSummaryDescription(
|
||||
}
|
||||
|
||||
if (poll) {
|
||||
summary = poll.summary.question;
|
||||
summary = renderTextWithEntities({
|
||||
text: poll.summary.question.text,
|
||||
entities: poll.summary.question.entities,
|
||||
});
|
||||
}
|
||||
|
||||
if (invoice) {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
const api = require('./api');
|
||||
|
||||
const LAYER = 178;
|
||||
const LAYER = 179;
|
||||
const tlobjects = {};
|
||||
|
||||
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.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.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.messageEditData#26b5dde6 flags:# caption:flags.0?true = messages.MessageEditData;
|
||||
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.userInfoEmpty#f3ae2eed = help.UserInfo;
|
||||
help.userInfo#1eb3758 message:string entities:Vector<MessageEntity> author:string date:int = help.UserInfo;
|
||||
pollAnswer#6ca9c2e9 text:string 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;
|
||||
pollAnswer#ff16e2ca text:TextWithEntities option:bytes = PollAnswer;
|
||||
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;
|
||||
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;
|
||||
@ -1139,6 +1141,8 @@ requestPeerTypeBroadcast#339bef6c flags:# creator:flags.0?true has_username:flag
|
||||
emojiListNotModified#481eadfa = EmojiList;
|
||||
emojiList#7a1e11d1 hash:long document_id:Vector<long> = EmojiList;
|
||||
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.emojiGroups#881fb94b hash:int groups:Vector<EmojiGroup> = messages.EmojiGroups;
|
||||
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.sponsoredMessageReportResultAdsHidden#3e3bcf2f = 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;
|
||||
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;
|
||||
@ -1288,6 +1292,7 @@ stats.broadcastRevenueTransactions#87158466 count:int transactions:Vector<Broadc
|
||||
reactionNotificationsFromContacts#bac3a61a = 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;
|
||||
broadcastRevenueBalances#8438f1c6 current_balance:long available_balance:long overall_revenue:long = BroadcastRevenueBalances;
|
||||
---functions---
|
||||
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;
|
||||
|
||||
@ -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.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.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;
|
||||
|
||||
@ -1149,9 +1151,9 @@ help.supportName#8c05f1c9 name:string = help.SupportName;
|
||||
help.userInfoEmpty#f3ae2eed = 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;
|
||||
|
||||
@ -1517,6 +1519,8 @@ emojiListNotModified#481eadfa = EmojiList;
|
||||
emojiList#7a1e11d1 hash:long document_id:Vector<long> = EmojiList;
|
||||
|
||||
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.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.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;
|
||||
|
||||
@ -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;
|
||||
|
||||
broadcastRevenueBalances#8438f1c6 current_balance:long available_balance:long overall_revenue:long = BroadcastRevenueBalances;
|
||||
|
||||
---functions---
|
||||
|
||||
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.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.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.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.toggleDialogFilterTags#fd2dda49 enabled:Bool = Bool;
|
||||
messages.getMyStickers#d0b5e1fc offset_id:long limit:int = messages.MyStickers;
|
||||
messages.getEmojiStickerGroups#1dd840f5 hash:int = messages.EmojiGroups;
|
||||
|
||||
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;
|
||||
|
||||
@ -13,7 +13,6 @@ import {
|
||||
getMessageAction,
|
||||
getMessageRecentReaction,
|
||||
getMessageSenderName,
|
||||
getMessageSummaryText,
|
||||
getPrivateChatUserId,
|
||||
getUserFullName,
|
||||
isActionMessage,
|
||||
@ -21,6 +20,7 @@ import {
|
||||
selectIsChatMuted,
|
||||
selectShouldShowMessagePreview,
|
||||
} from '../global/helpers';
|
||||
import { getMessageSummaryText } from '../global/helpers/messageSummary';
|
||||
import { getMessageReplyInfo } from '../global/helpers/replies';
|
||||
import { addNotifyExceptions, replaceSettings } from '../global/reducers';
|
||||
import {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user