@@ -81,6 +81,10 @@ import { MessageDeleteItem } from '$components/message/modals/MessageDelete';
8181import { MessageReportItem } from '$components/message/modals/MessageReport' ;
8282import { filterPronounsByLanguage } from '$utils/pronouns' ;
8383import { useMentionClickHandler } from '$hooks/useMentionClickHandler' ;
84+ import {
85+ addStickerToDefaultPack ,
86+ doesStickerExistInDefaultPack ,
87+ } from '$utils/addStickerToDefaultStickerPack' ;
8488import { MessageEditor } from './MessageEditor' ;
8589import * as css from './styles.css' ;
8690
@@ -669,6 +673,7 @@ function MessageInternal(
669673 } ) ;
670674
671675 const isThreadedMessage = mEvent . threadRootId !== undefined ;
676+ const isStickerMessage = mEvent . getType ( ) === 'm.sticker' ;
672677
673678 const evtId = mEvent . getId ( ) ! ;
674679 const evtTimeline = room . getTimelineForEvent ( evtId ) ;
@@ -820,6 +825,33 @@ function MessageInternal(
820825 </ Text >
821826 </ MenuItem >
822827 ) }
828+ { isStickerMessage &&
829+ ! doesStickerExistInDefaultPack ( mx , mEvent . getContent ( ) . url ) && (
830+ < MenuItem
831+ size = "300"
832+ after = { < Icon size = "100" src = { Icons . Star } /> }
833+ radii = "300"
834+ onClick = { ( ) => {
835+ addStickerToDefaultPack (
836+ mx ,
837+ `sticker-${ mEvent . getId ( ) } ` ,
838+ mEvent . getContent ( ) . url ,
839+ mEvent . getContent ( ) . body ,
840+ mEvent . getContent ( ) . info
841+ ) ;
842+ closeMenu ( ) ;
843+ } }
844+ >
845+ < Text
846+ className = { css . MessageMenuItemText }
847+ as = "span"
848+ size = "T300"
849+ truncate
850+ >
851+ Add to User Sticker Pack
852+ </ Text >
853+ </ MenuItem >
854+ ) }
823855 { relations && < MessageAllReactionItem room = { room } relations = { relations } /> }
824856 < MenuItem
825857 size = "300"
0 commit comments