From 6e8b920525f4dfde87c6935a631de063316a12dc Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Mon, 7 Nov 2022 23:00:55 +0400 Subject: [PATCH] Message: Introduce Invoice Media (#2093) --- src/api/gramjs/apiBuilders/messages.ts | 51 ++++++-- src/api/gramjs/gramjsBuilders/index.ts | 2 +- src/api/gramjs/helpers.ts | 65 +++++++--- src/api/gramjs/methods/index.ts | 2 +- src/api/gramjs/methods/messages.ts | 12 ++ src/api/gramjs/updater.ts | 30 ++++- src/api/types/messages.ts | 9 ++ src/api/types/updates.ts | 20 ++- src/assets/turbulence.png | Bin 0 -> 39869 bytes src/assets/turbulence_2x.png | Bin 0 -> 27765 bytes .../common/helpers/mediaDimensions.ts | 2 +- src/components/mediaViewer/MediaViewer.tsx | 1 - .../mediaViewer/MediaViewerActions.tsx | 33 +++-- .../middle/message/ContextMenuContainer.tsx | 7 +- .../message/InvoiceMediaPreview.module.scss | 117 ++++++++++++++++++ .../middle/message/InvoiceMediaPreview.tsx | 78 ++++++++++++ src/components/middle/message/Message.tsx | 30 ++++- .../message/helpers/buildContentClassName.ts | 4 +- src/global/actions/api/messages.ts | 8 ++ src/global/actions/apiUpdaters/messages.ts | 31 +++++ src/global/helpers/messageSummary.ts | 2 +- src/global/selectors/messages.ts | 6 +- src/global/types.ts | 5 + src/hooks/useCanvasBlur.ts | 21 ++-- src/lib/gramjs/tl/AllTLObjects.js | 2 +- src/lib/gramjs/tl/api.d.ts | 43 ++++++- src/lib/gramjs/tl/apiTl.js | 8 +- src/lib/gramjs/tl/static/api.json | 1 + src/lib/gramjs/tl/static/api.tl | 11 +- 29 files changed, 528 insertions(+), 73 deletions(-) create mode 100644 src/assets/turbulence.png create mode 100644 src/assets/turbulence_2x.png create mode 100644 src/components/middle/message/InvoiceMediaPreview.module.scss create mode 100644 src/components/middle/message/InvoiceMediaPreview.tsx diff --git a/src/api/gramjs/apiBuilders/messages.ts b/src/api/gramjs/apiBuilders/messages.ts index d2ea56634..2501743be 100644 --- a/src/api/gramjs/apiBuilders/messages.ts +++ b/src/api/gramjs/apiBuilders/messages.ts @@ -1,7 +1,4 @@ import { Api as GramJs } from '../../../lib/gramjs'; -import { - ApiMessageEntityTypes, -} from '../../types'; import type { ApiMessage, ApiMessageForwardInfo, @@ -36,6 +33,10 @@ import type { PhoneCallAction, ApiWebDocument, ApiMessageEntityDefault, + ApiMessageExtendedMediaPreview, +} from '../../types'; +import { + ApiMessageEntityTypes, } from '../../types'; import { @@ -161,16 +162,21 @@ export function buildApiMessageWithChatId(chatId: string, mtpMessage: UniversalM content.action = action; } + const isInvoiceMedia = mtpMessage.media instanceof GramJs.MessageMediaInvoice + && Boolean(mtpMessage.media.extendedMedia); + const { replyToMsgId, replyToTopId, replyToPeerId } = mtpMessage.replyTo || {}; const isEdited = mtpMessage.editDate && !mtpMessage.editHide; const { inlineButtons, keyboardButtons, keyboardPlaceholder, isKeyboardSingleUse, - } = buildReplyButtons(mtpMessage) || {}; + } = buildReplyButtons(mtpMessage, isInvoiceMedia) || {}; const forwardInfo = mtpMessage.fwdFrom && buildApiMessageForwardInfo(mtpMessage.fwdFrom, isChatWithSelf); const { replies, mediaUnread: isMediaUnread, postAuthor } = mtpMessage; const groupedId = mtpMessage.groupedId && String(mtpMessage.groupedId); const isInAlbum = Boolean(groupedId) && !(content.document || content.audio || content.sticker); const shouldHideKeyboardButtons = mtpMessage.replyMarkup instanceof GramJs.ReplyKeyboardHide; + const isProtected = mtpMessage.noforwards || isInvoiceMedia; + const isForwardingAllowed = !mtpMessage.noforwards; const emojiOnlyCount = content.text && parseEmojiOnlyString(content.text.text); return { @@ -205,7 +211,8 @@ export function buildApiMessageWithChatId(chatId: string, mtpMessage: UniversalM ...(mtpMessage.viaBotId && { viaBotId: buildApiPeerId(mtpMessage.viaBotId, 'user') }), ...(replies?.comments && { threadInfo: buildThreadInfo(replies, mtpMessage.id, chatId) }), ...(postAuthor && { adminTitle: postAuthor }), - ...(mtpMessage.noforwards && { isProtected: true }), + isProtected, + isForwardingAllowed, }; } @@ -336,6 +343,10 @@ export function buildMessageMediaContent(media: GramJs.TypeMessageMedia): ApiMes return undefined; } + if ('extendedMedia' in media && media.extendedMedia instanceof GramJs.MessageExtendedMedia) { + return buildMessageMediaContent(media.extendedMedia.media); + } + const sticker = buildSticker(media); if (sticker) return { sticker }; @@ -748,9 +759,12 @@ export function buildPoll(poll: GramJs.Poll, pollResults: GramJs.PollResults): A export function buildInvoice(media: GramJs.MessageMediaInvoice): ApiInvoice { const { - description: text, title, photo, test, totalAmount, currency, receiptMsgId, + description: text, title, photo, test, totalAmount, currency, receiptMsgId, extendedMedia, } = media; + const preview = extendedMedia instanceof GramJs.MessageExtendedMediaPreview + ? buildApiMessageExtendedMediaPreview(extendedMedia) : undefined; + return { title, text, @@ -759,6 +773,7 @@ export function buildInvoice(media: GramJs.MessageMediaInvoice): ApiInvoice { amount: Number(totalAmount), currency, isTest: test, + extendedMedia: preview, }; } @@ -1007,7 +1022,7 @@ function buildAction( }; } -function buildReplyButtons(message: UniversalMessage): ApiReplyKeyboard | undefined { +function buildReplyButtons(message: UniversalMessage, shouldSkipBuyButton?: boolean): ApiReplyKeyboard | undefined { const { replyMarkup, media } = message; // TODO Move to the proper button inside preview @@ -1033,7 +1048,7 @@ function buildReplyButtons(message: UniversalMessage): ApiReplyKeyboard | undefi } const markup = replyMarkup.rows.map(({ buttons }) => { - return buttons.map((button): ApiKeyboardButton => { + return buttons.map((button): ApiKeyboardButton | undefined => { const { text } = button; if (button instanceof GramJs.KeyboardButton) { @@ -1096,6 +1111,7 @@ function buildReplyButtons(message: UniversalMessage): ApiReplyKeyboard | undefi receiptMessageId: media.receiptMsgId, }; } + if (shouldSkipBuyButton) return undefined; return { type: 'buy', text, @@ -1155,9 +1171,11 @@ function buildReplyButtons(message: UniversalMessage): ApiReplyKeyboard | undefi type: 'unsupported', text, }; - }); + }).filter(Boolean); }); + if (markup.every((row) => !row.length)) return undefined; + return { [replyMarkup instanceof GramJs.ReplyKeyboardMarkup ? 'keyboardButtons' : 'inlineButtons']: markup, ...(replyMarkup instanceof GramJs.ReplyKeyboardMarkup && { @@ -1368,6 +1386,21 @@ function buildUploadingMedia( }; } +export function buildApiMessageExtendedMediaPreview( + preview: GramJs.MessageExtendedMediaPreview, +): ApiMessageExtendedMediaPreview { + const { + w, h, thumb, videoDuration, + } = preview; + + return { + width: w, + height: h, + duration: videoDuration, + thumbnail: thumb ? buildApiThumbnailFromStripped([thumb]) : undefined, + }; +} + export function buildApiWebDocument(document?: GramJs.TypeWebDocument): ApiWebDocument | undefined { if (!document) return undefined; diff --git a/src/api/gramjs/gramjsBuilders/index.ts b/src/api/gramjs/gramjsBuilders/index.ts index 7d79421a1..22c0d7959 100644 --- a/src/api/gramjs/gramjsBuilders/index.ts +++ b/src/api/gramjs/gramjsBuilders/index.ts @@ -353,7 +353,7 @@ export function isMessageWithMedia(message: GramJs.Message | GramJs.UpdateServic media instanceof GramJs.MessageMediaGame && (media.game.document instanceof GramJs.Document || media.game.photo instanceof GramJs.Photo) ) || ( - media instanceof GramJs.MessageMediaInvoice && media.photo + media instanceof GramJs.MessageMediaInvoice && (media.photo || media.extendedMedia) ) ); } diff --git a/src/api/gramjs/helpers.ts b/src/api/gramjs/helpers.ts index 8c01d2bda..9e79fba17 100644 --- a/src/api/gramjs/helpers.ts +++ b/src/api/gramjs/helpers.ts @@ -26,37 +26,48 @@ export function resolveMessageApiChatId(mtpMessage: GramJs.TypeMessage) { export function addMessageToLocalDb(message: GramJs.Message | GramJs.MessageService) { const messageFullId = `${resolveMessageApiChatId(message)}-${message.id}`; - localDb.messages[messageFullId] = message; - if (message instanceof GramJs.Message) { - if (message.media instanceof GramJs.MessageMediaDocument - && message.media.document instanceof GramJs.Document + let mockMessage = message; + if (message instanceof GramJs.Message + && message.media instanceof GramJs.MessageMediaInvoice + && message.media.extendedMedia instanceof GramJs.MessageExtendedMedia) { + mockMessage = new GramJs.Message({ + ...message, + media: message.media.extendedMedia.media, + }); + } + + localDb.messages[messageFullId] = mockMessage; + + if (mockMessage instanceof GramJs.Message) { + if (mockMessage.media instanceof GramJs.MessageMediaDocument + && mockMessage.media.document instanceof GramJs.Document ) { - localDb.documents[String(message.media.document.id)] = message.media.document; + localDb.documents[String(mockMessage.media.document.id)] = mockMessage.media.document; } - if (message.media instanceof GramJs.MessageMediaWebPage - && message.media.webpage instanceof GramJs.WebPage - && message.media.webpage.document instanceof GramJs.Document + if (mockMessage.media instanceof GramJs.MessageMediaWebPage + && mockMessage.media.webpage instanceof GramJs.WebPage + && mockMessage.media.webpage.document instanceof GramJs.Document ) { - localDb.documents[String(message.media.webpage.document.id)] = message.media.webpage.document; + localDb.documents[String(mockMessage.media.webpage.document.id)] = mockMessage.media.webpage.document; } - if (message.media instanceof GramJs.MessageMediaGame) { - if (message.media.game.document instanceof GramJs.Document) { - localDb.documents[String(message.media.game.document.id)] = message.media.game.document; + if (mockMessage.media instanceof GramJs.MessageMediaGame) { + if (mockMessage.media.game.document instanceof GramJs.Document) { + localDb.documents[String(mockMessage.media.game.document.id)] = mockMessage.media.game.document; } - addPhotoToLocalDb(message.media.game.photo); + addPhotoToLocalDb(mockMessage.media.game.photo); } - if (message.media instanceof GramJs.MessageMediaInvoice - && message.media.photo) { - localDb.webDocuments[String(message.media.photo.url)] = message.media.photo; + if (mockMessage.media instanceof GramJs.MessageMediaInvoice + && mockMessage.media.photo) { + localDb.webDocuments[String(mockMessage.media.photo.url)] = mockMessage.media.photo; } } - if (message instanceof GramJs.MessageService && 'photo' in message.action) { - addPhotoToLocalDb(message.action.photo); + if (mockMessage instanceof GramJs.MessageService && 'photo' in mockMessage.action) { + addPhotoToLocalDb(mockMessage.action.photo); } } @@ -90,6 +101,24 @@ export function addEntitiesWithPhotosToLocalDb(entities: (GramJs.TypeUser | Gram }); } +export function swapLocalInvoiceMedia( + chatId: string, messageId: number, extendedMedia: GramJs.TypeMessageExtendedMedia, +) { + const localMessage = localDb.messages[`${chatId}-${messageId}`]; + if (!(localMessage instanceof GramJs.Message) || !localMessage.media) return; + + if (extendedMedia instanceof GramJs.MessageExtendedMediaPreview) { + if (!(localMessage.media instanceof GramJs.MessageMediaInvoice)) { + return; + } + localMessage.media.extendedMedia = extendedMedia; + } + + if (extendedMedia instanceof GramJs.MessageExtendedMedia) { + localMessage.media = extendedMedia.media; + } +} + export function serializeBytes(value: Buffer) { return String.fromCharCode(...value); } diff --git a/src/api/gramjs/methods/index.ts b/src/api/gramjs/methods/index.ts index be5429a16..2a40cfbf9 100644 --- a/src/api/gramjs/methods/index.ts +++ b/src/api/gramjs/methods/index.ts @@ -29,7 +29,7 @@ export { fetchPinnedMessages, fetchScheduledHistory, sendScheduledMessages, rescheduleMessage, deleteScheduledMessages, reportMessages, sendMessageAction, fetchSeenBy, fetchSponsoredMessages, viewSponsoredMessage, fetchSendAs, saveDefaultSendAs, fetchUnreadReactions, readAllReactions, fetchUnreadMentions, readAllMentions, transcribeAudio, - closePoll, + closePoll, fetchExtendedMedia, } from './messages'; export { diff --git a/src/api/gramjs/methods/messages.ts b/src/api/gramjs/methods/messages.ts index d2118ea93..c3cc4d935 100644 --- a/src/api/gramjs/methods/messages.ts +++ b/src/api/gramjs/methods/messages.ts @@ -1122,6 +1122,18 @@ export async function loadPollOptionResults({ }; } +export async function fetchExtendedMedia({ + chat, ids, +} : { + chat: ApiChat; + ids: number[]; +}) { + await invokeRequest(new GramJs.messages.GetExtendedMedia({ + peer: buildInputPeer(chat.id, chat.accessHash), + id: ids, + })); +} + export async function forwardMessages({ fromChat, toChat, diff --git a/src/api/gramjs/updater.ts b/src/api/gramjs/updater.ts index 423dd39ab..ad81c2ba2 100644 --- a/src/api/gramjs/updater.ts +++ b/src/api/gramjs/updater.ts @@ -1,6 +1,8 @@ import type { GroupCallConnectionData } from '../../lib/secret-sauce'; import { Api as GramJs, connection } from '../../lib/gramjs'; -import type { ApiMessage, ApiUpdateConnectionStateType, OnApiUpdate } from '../types'; +import type { + ApiMessage, ApiMessageExtendedMediaPreview, ApiUpdateConnectionStateType, OnApiUpdate, +} from '../types'; import { pick } from '../../util/iteratees'; import { @@ -14,6 +16,7 @@ import { buildApiMessageFromNotification, buildMessageDraft, buildMessageReactions, + buildApiMessageExtendedMediaPreview, } from './apiBuilders/messages'; import { buildChatMember, @@ -40,6 +43,7 @@ import { resolveMessageApiChatId, serializeBytes, log, + swapLocalInvoiceMedia, } from './helpers'; import { buildApiNotifyException, buildPrivacyKey, buildPrivacyRules } from './apiBuilders/misc'; import { buildApiPhoto } from './apiBuilders/common'; @@ -309,6 +313,30 @@ export function updater(update: Update, originRequest?: GramJs.AnyRequest) { chatId: getApiChatIdFromMtpPeer(update.peer), reactions: buildMessageReactions(update.reactions), }); + } else if (update instanceof GramJs.UpdateMessageExtendedMedia) { + let media: ApiMessage['content'] | undefined; + if (update.extendedMedia instanceof GramJs.MessageExtendedMedia) { + media = buildMessageMediaContent(update.extendedMedia.media); + } + + let preview: ApiMessageExtendedMediaPreview | undefined; + if (update.extendedMedia instanceof GramJs.MessageExtendedMediaPreview) { + preview = buildApiMessageExtendedMediaPreview(update.extendedMedia); + } + + if (!media && !preview) return; + + const chatId = getApiChatIdFromMtpPeer(update.peer); + + swapLocalInvoiceMedia(chatId, update.msgId, update.extendedMedia); + + onUpdate({ + '@type': 'updateMessageExtendedMedia', + id: update.msgId, + chatId, + media, + preview, + }); } else if (update instanceof GramJs.UpdateDeleteMessages) { onUpdate({ '@type': 'deleteMessages', diff --git a/src/api/types/messages.ts b/src/api/types/messages.ts index d030fca1a..f710133b5 100644 --- a/src/api/types/messages.ts +++ b/src/api/types/messages.ts @@ -187,10 +187,18 @@ export interface ApiInvoice { isTest?: boolean; isRecurring?: boolean; recurringTermsUrl?: string; + extendedMedia?: ApiMessageExtendedMediaPreview; maxTipAmount?: number; suggestedTipAmounts?: number[]; } +export interface ApiMessageExtendedMediaPreview { + width?: number; + height?: number; + thumbnail?: ApiThumbnail; + duration?: number; +} + export interface ApiPaymentCredentials { id: string; title: string; @@ -406,6 +414,7 @@ export interface ApiMessage { isSilent?: boolean; seenByUserIds?: string[]; isProtected?: boolean; + isForwardingAllowed?: boolean; transcriptionId?: string; isTranscriptionError?: boolean; emojiOnlyCount?: number; diff --git a/src/api/types/updates.ts b/src/api/types/updates.ts index 18f477dae..f16f870c5 100644 --- a/src/api/types/updates.ts +++ b/src/api/types/updates.ts @@ -13,7 +13,14 @@ import type { ApiChatFolder, } from './chats'; import type { - ApiFormattedText, ApiMessage, ApiPhoto, ApiPoll, ApiReactions, ApiStickerSet, ApiThreadInfo, + ApiFormattedText, + ApiMessage, + ApiMessageExtendedMediaPreview, + ApiPhoto, + ApiPoll, + ApiReactions, + ApiStickerSet, + ApiThreadInfo, } from './messages'; import type { ApiEmojiStatus, ApiUser, ApiUserFullInfo, ApiUserStatus, @@ -309,6 +316,14 @@ export type ApiUpdateMessageReactions = { reactions: ApiReactions; }; +export type ApiUpdateMessageExtendedMedia = { + '@type': 'updateMessageExtendedMedia'; + id: number; + chatId: string; + media?: ApiMessage['content']; + preview?: ApiMessageExtendedMediaPreview; +}; + export type ApiDeleteContact = { '@type': 'deleteContact'; id: string; @@ -556,7 +571,8 @@ export type ApiUpdate = ( ApiUpdateGroupCallConnectionState | ApiUpdateGroupCallLeavePresentation | ApiUpdateGroupCallChatId | ApiUpdatePendingJoinRequests | ApiUpdatePaymentVerificationNeeded | ApiUpdatePaymentStateCompleted | ApiUpdatePhoneCall | ApiUpdatePhoneCallSignalingData | ApiUpdatePhoneCallMediaState | - ApiUpdatePhoneCallConnectionState | ApiUpdateBotMenuButton | ApiUpdateTranscribedAudio | ApiUpdateUserEmojiStatus + ApiUpdatePhoneCallConnectionState | ApiUpdateBotMenuButton | ApiUpdateTranscribedAudio | ApiUpdateUserEmojiStatus | + ApiUpdateMessageExtendedMedia ); export type OnApiUpdate = (update: ApiUpdate) => void; diff --git a/src/assets/turbulence.png b/src/assets/turbulence.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a9a7b0d766f73315aaf205b0434ea0fcd39b31 GIT binary patch literal 39869 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%0AF3&rfQ+qvM`R}!pvK!iy_n7O5D0^8|QM) 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�I!%G%Nxj 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.U8* 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 xd|LiAxyB2%gMRiq9Mg7 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 = ({ onForward={handleForward} zoomLevelChange={zoomLevelChange} setZoomLevelChange={setZoomLevelChange} - isAvatar={Boolean(avatarOwner)} /> = ({ isVideo, message, fileName, - isAvatar, + isChatProtected, isDownloading, isProtected, canReport, + zoomLevelChange, + canDelete, + messageListType, onReport, onCloseMediaViewer, - zoomLevelChange, - setZoomLevelChange, - canDelete, onForward, - messageListType, + setZoomLevelChange, }) => { const [isDeleteModalOpen, openDeleteModal, closeDeleteModal] = useFlag(false); @@ -148,7 +153,7 @@ const MediaViewerActions: FC = ({ if (IS_SINGLE_COLUMN_LAYOUT) { const menuItems: MenuItemProps[] = []; - if (!isAvatar && !isProtected) { + if (!message?.isForwardingAllowed && !isChatProtected) { menuItems.push({ icon: 'forward', onClick: onForward, @@ -227,7 +232,7 @@ const MediaViewerActions: FC = ({ return (
- {!isAvatar && !isProtected && ( + {message?.isForwardingAllowed && !isChatProtected && (