From 23375d317588a778c389c8b089ecd8a4a06f4ca3 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Sat, 2 Nov 2024 21:11:06 +0400 Subject: [PATCH] Composer: Add media for editing text messages (#5092) --- src/global/helpers/messageMedia.ts | 3 ++- src/global/helpers/messages.ts | 6 +++--- src/lib/gramjs/tl/AllTLObjects.js | 2 +- src/lib/gramjs/tl/api.d.ts | 12 ++++++++++++ src/lib/gramjs/tl/apiTl.js | 8 ++++---- src/lib/gramjs/tl/static/api.tl | 10 +++++----- 6 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/global/helpers/messageMedia.ts b/src/global/helpers/messageMedia.ts index 2856a998f..5589b8ae7 100644 --- a/src/global/helpers/messageMedia.ts +++ b/src/global/helpers/messageMedia.ts @@ -26,7 +26,7 @@ import { MAX_BUFFER_SIZE, } from '../../util/windowEnvironment'; import { getDocumentHasPreview } from '../../components/common/helpers/documentInfo'; -import { getAttachmentMediaType, matchLinkInMessageText } from './messages'; +import { getAttachmentMediaType, getMessageText, matchLinkInMessageText } from './messages'; export type MediaWithThumbs = ApiPhoto | ApiVideo | ApiDocument | ApiSticker | ApiMediaExtendedPreview; export type DownloadableMedia = ApiPhoto | ApiVideo | ApiDocument | ApiSticker | ApiAudio | ApiVoice | ApiWebDocument; @@ -65,6 +65,7 @@ export function hasReplaceableMedia(message: MediaContainer) { || getMessageDocument(message) || getMessageSticker(message) || getMessageAudio(message) + || getMessageText(message) )); } diff --git a/src/global/helpers/messages.ts b/src/global/helpers/messages.ts index 657995027..b80ffe5ba 100644 --- a/src/global/helpers/messages.ts +++ b/src/global/helpers/messages.ts @@ -3,7 +3,7 @@ import type { ApiMessage, ApiMessageEntityTextUrl, ApiPeer, ApiSponsoredMessage, - ApiStory, + ApiStory, MediaContainer, } from '../../api/types'; import type { MediaContent } from '../../api/types/messages'; import type { LangFn } from '../../hooks/useOldLang'; @@ -53,7 +53,7 @@ export function getMessageTranscription(message: ApiMessage) { return transcriptionId && global.transcriptions[transcriptionId]?.text; } -export function hasMessageText(message: ApiMessage | ApiStory | ApiSponsoredMessage) { +export function hasMessageText(message: ApiMessage | ApiStory | ApiSponsoredMessage | MediaContainer) { const { text, sticker, photo, video, audio, voice, document, poll, webPage, contact, invoice, location, game, action, storyData, giveaway, giveawayResults, isExpiredVoice, paidMedia, @@ -65,7 +65,7 @@ export function hasMessageText(message: ApiMessage | ApiStory | ApiSponsoredMess ); } -export function getMessageText(message: ApiMessage | ApiStory | ApiSponsoredMessage) { +export function getMessageText(message: ApiMessage | ApiStory | ApiSponsoredMessage | MediaContainer) { return hasMessageText(message) ? message.content.text?.text || CONTENT_NOT_SUPPORTED : undefined; } diff --git a/src/lib/gramjs/tl/AllTLObjects.js b/src/lib/gramjs/tl/AllTLObjects.js index ec926b893..7d20e86eb 100644 --- a/src/lib/gramjs/tl/AllTLObjects.js +++ b/src/lib/gramjs/tl/AllTLObjects.js @@ -1,6 +1,6 @@ const api = require('./api'); -const LAYER = 189; +const LAYER = 191; const tlobjects = {}; for (const tl of Object.values(api)) { diff --git a/src/lib/gramjs/tl/api.d.ts b/src/lib/gramjs/tl/api.d.ts index 8eb00831b..8dbaa226d 100644 --- a/src/lib/gramjs/tl/api.d.ts +++ b/src/lib/gramjs/tl/api.d.ts @@ -2173,6 +2173,7 @@ namespace Api { months: int; cryptoCurrency?: string; cryptoAmount?: long; + message?: Api.TypeTextWithEntities; }> { // flags: undefined; currency: string; @@ -2180,6 +2181,7 @@ namespace Api { months: int; cryptoCurrency?: string; cryptoAmount?: long; + message?: Api.TypeTextWithEntities; }; export class MessageActionTopicCreate extends VirtualClass<{ // flags: undefined; @@ -2239,6 +2241,7 @@ namespace Api { amount?: long; cryptoCurrency?: string; cryptoAmount?: long; + message?: Api.TypeTextWithEntities; }> { // flags: undefined; viaGiveaway?: true; @@ -2250,6 +2253,7 @@ namespace Api { amount?: long; cryptoCurrency?: string; cryptoAmount?: long; + message?: Api.TypeTextWithEntities; }; export class MessageActionGiveawayLaunch extends VirtualClass<{ // flags: undefined; @@ -8884,12 +8888,14 @@ namespace Api { boostPeer?: Api.TypeInputPeer; currency: string; amount: long; + message?: Api.TypeTextWithEntities; }> { // flags: undefined; users: Api.TypeInputUser[]; boostPeer?: Api.TypeInputPeer; currency: string; amount: long; + message?: Api.TypeTextWithEntities; }; export class InputStorePaymentPremiumGiveaway extends VirtualClass<{ // flags: undefined; @@ -10485,21 +10491,27 @@ namespace Api { export class StarGift extends VirtualClass<{ // flags: undefined; limited?: true; + soldOut?: true; id: long; sticker: Api.TypeDocument; stars: long; availabilityRemains?: int; availabilityTotal?: int; convertStars: long; + firstSaleDate?: int; + lastSaleDate?: int; }> { // flags: undefined; limited?: true; + soldOut?: true; id: long; sticker: Api.TypeDocument; stars: long; availabilityRemains?: int; availabilityTotal?: int; convertStars: long; + firstSaleDate?: int; + lastSaleDate?: int; }; export class UserStarGift extends VirtualClass<{ // flags: undefined; diff --git a/src/lib/gramjs/tl/apiTl.js b/src/lib/gramjs/tl/apiTl.js index 730110929..0180a466b 100644 --- a/src/lib/gramjs/tl/apiTl.js +++ b/src/lib/gramjs/tl/apiTl.js @@ -143,13 +143,13 @@ messageActionSetChatTheme#aa786345 emoticon:string = MessageAction; messageActionChatJoinedByRequest#ebbca3cb = MessageAction; messageActionWebViewDataSentMe#47dd8079 text:string data:string = MessageAction; messageActionWebViewDataSent#b4c38cb5 text:string = MessageAction; -messageActionGiftPremium#c83d6aec flags:# currency:string amount:long months:int crypto_currency:flags.0?string crypto_amount:flags.0?long = MessageAction; +messageActionGiftPremium#6c6274fa flags:# currency:string amount:long months:int crypto_currency:flags.0?string crypto_amount:flags.0?long message:flags.1?TextWithEntities = MessageAction; messageActionTopicCreate#d999256 flags:# title:string icon_color:int icon_emoji_id:flags.0?long = MessageAction; messageActionTopicEdit#c0944820 flags:# title:flags.0?string icon_emoji_id:flags.1?long closed:flags.2?Bool hidden:flags.3?Bool = MessageAction; messageActionSuggestProfilePhoto#57de635e photo:Photo = MessageAction; messageActionRequestedPeer#31518e9b button_id:int peers:Vector = MessageAction; messageActionSetChatWallPaper#5060a3f4 flags:# same:flags.0?true for_both:flags.1?true wallpaper:WallPaper = MessageAction; -messageActionGiftCode#678c2e09 flags:# via_giveaway:flags.0?true unclaimed:flags.2?true boost_peer:flags.1?Peer months:int slug:string currency:flags.2?string amount:flags.2?long crypto_currency:flags.3?string crypto_amount:flags.3?long = MessageAction; +messageActionGiftCode#56d03994 flags:# via_giveaway:flags.0?true unclaimed:flags.2?true boost_peer:flags.1?Peer months:int slug:string currency:flags.2?string amount:flags.2?long crypto_currency:flags.3?string crypto_amount:flags.3?long message:flags.4?TextWithEntities = MessageAction; messageActionGiveawayLaunch#a80f51e4 flags:# stars:flags.0?long = MessageAction; messageActionGiveawayResults#87e2f155 flags:# stars:flags.0?true winners_count:int unclaimed_count:int = MessageAction; messageActionBoostApply#cc02aa6d boosts:int = MessageAction; @@ -1121,7 +1121,7 @@ messages.transcribedAudio#cfb9d957 flags:# pending:flags.0?true transcription_id help.premiumPromo#5334759c status_text:string status_entities:Vector video_sections:Vector videos:Vector period_options:Vector users:Vector = help.PremiumPromo; inputStorePaymentPremiumSubscription#a6751e66 flags:# restore:flags.0?true upgrade:flags.1?true = InputStorePaymentPurpose; inputStorePaymentGiftPremium#616f7fe8 user_id:InputUser currency:string amount:long = InputStorePaymentPurpose; -inputStorePaymentPremiumGiftCode#a3805f3f flags:# users:Vector boost_peer:flags.0?InputPeer currency:string amount:long = InputStorePaymentPurpose; +inputStorePaymentPremiumGiftCode#fb790393 flags:# users:Vector boost_peer:flags.0?InputPeer currency:string amount:long message:flags.1?TextWithEntities = InputStorePaymentPurpose; inputStorePaymentPremiumGiveaway#160544ca flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.3?true boost_peer:InputPeer additional_peers:flags.1?Vector countries_iso2:flags.2?Vector prize_description:flags.4?string random_id:long until_date:int currency:string amount:long = InputStorePaymentPurpose; inputStorePaymentStarsTopup#dddd0f56 stars:long currency:string amount:long = InputStorePaymentPurpose; inputStorePaymentStarsGift#1d741ef7 user_id:InputUser stars:long currency:string amount:long = InputStorePaymentPurpose; @@ -1352,7 +1352,7 @@ starsSubscription#538ecf18 flags:# canceled:flags.0?true can_refulfill:flags.1?t messageReactor#4ba3a95a flags:# top:flags.0?true my:flags.1?true anonymous:flags.2?true peer_id:flags.3?Peer count:int = MessageReactor; starsGiveawayOption#94ce852a flags:# extended:flags.0?true default:flags.1?true stars:long yearly_boosts:int store_product:flags.2?string currency:string amount:long winners:Vector = StarsGiveawayOption; starsGiveawayWinnersOption#54236209 flags:# default:flags.0?true users:int per_user_stars:long = StarsGiveawayWinnersOption; -starGift#aea174ee flags:# limited:flags.0?true id:long sticker:Document stars:long availability_remains:flags.0?int availability_total:flags.0?int convert_stars:long = StarGift; +starGift#49c577cd flags:# limited:flags.0?true sold_out:flags.1?true id:long sticker:Document stars:long availability_remains:flags.0?int availability_total:flags.0?int convert_stars:long first_sale_date:flags.1?int last_sale_date:flags.1?int = StarGift; payments.starGiftsNotModified#a388a368 = payments.StarGifts; payments.starGifts#901689ea hash:int gifts:Vector = payments.StarGifts; userStarGift#eea49a6e flags:# name_hidden:flags.0?true unsaved:flags.5?true from_id:flags.1?long date:int gift:StarGift message:flags.2?TextWithEntities msg_id:flags.3?int convert_stars:flags.4?long = UserStarGift; diff --git a/src/lib/gramjs/tl/static/api.tl b/src/lib/gramjs/tl/static/api.tl index e19062cd4..d3eb2038c 100644 --- a/src/lib/gramjs/tl/static/api.tl +++ b/src/lib/gramjs/tl/static/api.tl @@ -169,13 +169,13 @@ messageActionSetChatTheme#aa786345 emoticon:string = MessageAction; messageActionChatJoinedByRequest#ebbca3cb = MessageAction; messageActionWebViewDataSentMe#47dd8079 text:string data:string = MessageAction; messageActionWebViewDataSent#b4c38cb5 text:string = MessageAction; -messageActionGiftPremium#c83d6aec flags:# currency:string amount:long months:int crypto_currency:flags.0?string crypto_amount:flags.0?long = MessageAction; +messageActionGiftPremium#6c6274fa flags:# currency:string amount:long months:int crypto_currency:flags.0?string crypto_amount:flags.0?long message:flags.1?TextWithEntities = MessageAction; messageActionTopicCreate#d999256 flags:# title:string icon_color:int icon_emoji_id:flags.0?long = MessageAction; messageActionTopicEdit#c0944820 flags:# title:flags.0?string icon_emoji_id:flags.1?long closed:flags.2?Bool hidden:flags.3?Bool = MessageAction; messageActionSuggestProfilePhoto#57de635e photo:Photo = MessageAction; messageActionRequestedPeer#31518e9b button_id:int peers:Vector = MessageAction; messageActionSetChatWallPaper#5060a3f4 flags:# same:flags.0?true for_both:flags.1?true wallpaper:WallPaper = MessageAction; -messageActionGiftCode#678c2e09 flags:# via_giveaway:flags.0?true unclaimed:flags.2?true boost_peer:flags.1?Peer months:int slug:string currency:flags.2?string amount:flags.2?long crypto_currency:flags.3?string crypto_amount:flags.3?long = MessageAction; +messageActionGiftCode#56d03994 flags:# via_giveaway:flags.0?true unclaimed:flags.2?true boost_peer:flags.1?Peer months:int slug:string currency:flags.2?string amount:flags.2?long crypto_currency:flags.3?string crypto_amount:flags.3?long message:flags.4?TextWithEntities = MessageAction; messageActionGiveawayLaunch#a80f51e4 flags:# stars:flags.0?long = MessageAction; messageActionGiveawayResults#87e2f155 flags:# stars:flags.0?true winners_count:int unclaimed_count:int = MessageAction; messageActionBoostApply#cc02aa6d boosts:int = MessageAction; @@ -1476,7 +1476,7 @@ help.premiumPromo#5334759c status_text:string status_entities:Vector boost_peer:flags.0?InputPeer currency:string amount:long = InputStorePaymentPurpose; +inputStorePaymentPremiumGiftCode#fb790393 flags:# users:Vector boost_peer:flags.0?InputPeer currency:string amount:long message:flags.1?TextWithEntities = InputStorePaymentPurpose; inputStorePaymentPremiumGiveaway#160544ca flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.3?true boost_peer:InputPeer additional_peers:flags.1?Vector countries_iso2:flags.2?Vector prize_description:flags.4?string random_id:long until_date:int currency:string amount:long = InputStorePaymentPurpose; inputStorePaymentStarsTopup#dddd0f56 stars:long currency:string amount:long = InputStorePaymentPurpose; inputStorePaymentStarsGift#1d741ef7 user_id:InputUser stars:long currency:string amount:long = InputStorePaymentPurpose; @@ -1862,7 +1862,7 @@ starsGiveawayOption#94ce852a flags:# extended:flags.0?true default:flags.1?true starsGiveawayWinnersOption#54236209 flags:# default:flags.0?true users:int per_user_stars:long = StarsGiveawayWinnersOption; -starGift#aea174ee flags:# limited:flags.0?true id:long sticker:Document stars:long availability_remains:flags.0?int availability_total:flags.0?int convert_stars:long = StarGift; +starGift#49c577cd flags:# limited:flags.0?true sold_out:flags.1?true id:long sticker:Document stars:long availability_remains:flags.0?int availability_total:flags.0?int convert_stars:long first_sale_date:flags.1?int last_sale_date:flags.1?int = StarGift; payments.starGiftsNotModified#a388a368 = payments.StarGifts; payments.starGifts#901689ea hash:int gifts:Vector = payments.StarGifts; @@ -2563,4 +2563,4 @@ smsjobs.getStatus#10a698e8 = smsjobs.Status; smsjobs.getSmsJob#778d902f job_id:string = SmsJob; smsjobs.finishJob#4f1ebf24 flags:# job_id:string error:flags.0?string = Bool; -fragment.getCollectibleInfo#be1e85ba collectible:InputCollectible = fragment.CollectibleInfo; \ No newline at end of file +fragment.getCollectibleInfo#be1e85ba collectible:InputCollectible = fragment.CollectibleInfo;