diff --git a/src/api/gramjs/gramjsBuilders/index.ts b/src/api/gramjs/gramjsBuilders/index.ts index bbbb3a98c..3dccbbbe6 100644 --- a/src/api/gramjs/gramjsBuilders/index.ts +++ b/src/api/gramjs/gramjsBuilders/index.ts @@ -294,6 +294,8 @@ export function buildMtpMessageEntity(entity: ApiMessageEntity): GramJs.TypeMess length, userId: new GramJs.InputUser({ userId: BigInt(userId!), accessHash: user!.accessHash! }), }); + case ApiMessageEntityTypes.Spoiler: + return new GramJs.MessageEntitySpoiler({ offset, length }); default: return new GramJs.MessageEntityUnknown({ offset, length }); } diff --git a/src/components/common/helpers/renderMessageText.tsx b/src/components/common/helpers/renderMessageText.tsx index 482129b21..01be7df45 100644 --- a/src/components/common/helpers/renderMessageText.tsx +++ b/src/components/common/helpers/renderMessageText.tsx @@ -499,6 +499,8 @@ function processEntityAsHtml( data-entity-type="${entity.type}" dir="auto" >${renderedContent}`; + case ApiMessageEntityTypes.Spoiler: + return `||${renderedContent}||`; default: return renderedContent; } diff --git a/src/components/middle/composer/TextFormatter.tsx b/src/components/middle/composer/TextFormatter.tsx index ee1aae35d..190b421cd 100644 --- a/src/components/middle/composer/TextFormatter.tsx +++ b/src/components/middle/composer/TextFormatter.tsx @@ -253,6 +253,12 @@ const TextFormatter: FC = ({ selectedRange, selectedTextFormats.strikethrough, ]); + const handleSpoilerText = useCallback(() => { + const text = getSelectedText(); + document.execCommand('insertHTML', false, `||${text}||`); + onClose(); + }, [getSelectedText, onClose]); + const handleMonospaceText = useCallback(() => { if (selectedTextFormats.monospace) { const element = getSelectedElement(); @@ -314,6 +320,7 @@ const TextFormatter: FC = ({ i: handleItalicText, m: handleMonospaceText, s: handleStrikethroughText, + p: handleSpoilerText, }; const handler = HANDLERS_BY_KEY[getKeyFromEvent(e)]; @@ -330,9 +337,8 @@ const TextFormatter: FC = ({ e.stopPropagation(); handler(); }, [ - handleBoldText, handleItalicText, handleUnderlineText, - handleMonospaceText, handleStrikethroughText, - openLinkControl, + openLinkControl, handleBoldText, handleUnderlineText, handleItalicText, handleMonospaceText, + handleStrikethroughText, handleSpoilerText, ]); useEffect(() => { @@ -380,6 +386,13 @@ const TextFormatter: FC = ({ onKeyDown={handleContainerKeyDown} >
+