stream-chat-react-native-core 3.10.0 → 3.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Attachment/Attachment.js +4 -3
- package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +18 -12
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Attachment.js +4 -3
- package/lib/module/components/Attachment/Attachment.js.map +1 -1
- package/lib/module/components/Message/Message.js +18 -12
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/package.json +1 -1
- package/src/components/Attachment/Attachment.tsx +2 -2
- package/src/components/Message/Message.tsx +2 -2
- package/src/version.json +1 -1
|
@@ -92,15 +92,16 @@ var AttachmentWithContext = function AttachmentWithContext(props) {
|
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
if (attachment.type === 'video' && attachment.asset_url
|
|
96
|
-
return _react["default"].createElement(
|
|
95
|
+
if (attachment.type === 'video' && attachment.asset_url) {
|
|
96
|
+
return _react["default"].createElement(FileAttachment, {
|
|
97
|
+
attachment: attachment,
|
|
97
98
|
__self: _this,
|
|
98
99
|
__source: {
|
|
99
100
|
fileName: _jsxFileName,
|
|
100
101
|
lineNumber: 90,
|
|
101
102
|
columnNumber: 7
|
|
102
103
|
}
|
|
103
|
-
})
|
|
104
|
+
});
|
|
104
105
|
}
|
|
105
106
|
|
|
106
107
|
if (hasAttachmentActions) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Attachment.tsx"],"names":["AttachmentWithContext","props","attachment","AttachmentActions","Card","FileAttachment","Gallery","Giphy","UrlPreview","hasAttachmentActions","actions","length","type","title_link","og_scrape_url","image_url","thumb_url","id","asset_url","areEqual","prevProps","nextProps","prevAttachment","nextAttachment","attachmentEqual","MemoizedAttachment","React","memo","Attachment","PropAttachmentActions","PropCard","PropFileAttachment","PropGallery","PropGiphy","PropUrlPreview","ContextAttachmentActions","ContextCard","ContextFileAttachment","ContextGallery","ContextGiphy","ContextUrlPreview","AttachmentActionsDefault","CardDefault","FileAttachmentDefault","GalleryDefault","GiphyDefault"],"mappings":";;;;;;;;;AAAA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;AAsCA,IAAMA,qBAAqB,GAAG,SAAxBA,qBAAwB,CAS5BC,KAT4B,EAUzB;AAAA;;AACH,MAAQC,UAAR,GAA4FD,KAA5F,CAAQC,UAAR;AAAA,MAAoBC,iBAApB,GAA4FF,KAA5F,CAAoBE,iBAApB;AAAA,MAAuCC,IAAvC,GAA4FH,KAA5F,CAAuCG,IAAvC;AAAA,MAA6CC,cAA7C,GAA4FJ,KAA5F,CAA6CI,cAA7C;AAAA,MAA6DC,OAA7D,GAA4FL,KAA5F,CAA6DK,OAA7D;AAAA,MAAsEC,KAAtE,GAA4FN,KAA5F,CAAsEM,KAAtE;AAAA,MAA6EC,UAA7E,GAA4FP,KAA5F,CAA6EO,UAA7E;AAEA,MAAMC,oBAAoB,GAAG,CAAC,yBAACP,UAAU,CAACQ,OAAZ,aAAC,oBAAoBC,MAArB,CAA9B;;AAEA,MAAIT,UAAU,CAACU,IAAX,KAAoB,OAApB,IAA+BV,UAAU,CAACU,IAAX,KAAoB,OAAvD,EAAgE;AAC9D,WAAO,gCAAC,KAAD;AAAO,MAAA,UAAU,EAAEV,UAAnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAP;AACD;;AAED,MACE,CAACA,UAAU,CAACW,UAAX,IAAyBX,UAAU,CAACY,aAArC,MACCZ,UAAU,CAACa,SAAX,IAAwBb,UAAU,CAACc,SADpC,CADF,EAGE;AACA,WAAO,gCAAC,UAAD,gCAAgBd,UAAhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAP;AACD;;AAED,MAAIA,UAAU,CAACU,IAAX,KAAoB,OAAxB,EAAiC;AAC/B,WACE,kEACE,gCAAC,OAAD;AAAS,MAAA,MAAM,EAAE,CAACV,UAAD,CAAjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MADF,EAEGO,oBAAoB,IACnB,gCAAC,iBAAD;AAAmB,MAAA,GAAG,mBAAiBP,UAAU,CAACe;AAAlD,OAA4Df,UAA5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAHJ,CADF;AAQD;;AAED,MAAIA,UAAU,CAACU,IAAX,KAAoB,MAApB,IAA8BV,UAAU,CAACU,IAAX,KAAoB,OAAtD,EAA+D;AAC7D,WAAO,gCAAC,cAAD;AAAgB,MAAA,UAAU,EAAEV,UAA5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAP;AACD;;AAED,MAAIA,UAAU,CAACU,IAAX,KAAoB,OAApB,IAA+BV,UAAU,CAACgB,SAA1C,IAAuDhB,UAAU,CAACa,SAAtE,EAAiF;AAC/E,WAEE,gCAAC,IAAD,gCAAUb,UAAV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAFF;AAID;;AAED,MAAIO,oBAAJ,EAA0B;AACxB,WACE,kEACE,gCAAC,IAAD,gCAAUP,UAAV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OADF,EAEE,gCAAC,iBAAD;AAAmB,MAAA,GAAG,mBAAiBA,UAAU,CAACe;AAAlD,OAA4Df,UAA5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAFF,CADF;AAMD,GAPD,MAOO;AACL,WAAO,gCAAC,IAAD,gCAAUA,UAAV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAP;AACD;AACF,CA1DD;;AA4DA,IAAMiB,QAAQ,GAAG,SAAXA,QAAW,CASfC,SATe,EAUfC,SAVe,EAWZ;AAAA;;AACH,MAAoBC,cAApB,GAAuCF,SAAvC,CAAQlB,UAAR;AACA,MAAoBqB,cAApB,GAAuCF,SAAvC,CAAQnB,UAAR;AAEA,MAAMsB,eAAe,GACnB,0BAAAF,cAAc,CAACZ,OAAf,2CAAwBC,MAAxB,gCAAmCY,cAAc,CAACb,OAAlD,qBAAmC,sBAAwBC,MAA3D,KACAW,cAAc,CAACP,SAAf,KAA6BQ,cAAc,CAACR,SAD5C,IAEAO,cAAc,CAACN,SAAf,KAA6BO,cAAc,CAACP,SAH9C;AAKA,SAAOQ,eAAP;AACD,CArBD;;AAuBA,IAAMC,kBAAkB,GAAGC,kBAAMC,IAAN,CACzB3B,qBADyB,EAEzBmB,QAFyB,CAA3B;;AAwBO,IAAMS,UAAU,GAAG,SAAbA,UAAa,CASxB3B,KATwB,EAUrB;AACH,MACEC,UADF,GAQID,KARJ,CACEC,UADF;AAAA,MAEqB2B,qBAFrB,GAQI5B,KARJ,CAEEE,iBAFF;AAAA,MAGQ2B,QAHR,GAQI7B,KARJ,CAGEG,IAHF;AAAA,MAIkB2B,kBAJlB,GAQI9B,KARJ,CAIEI,cAJF;AAAA,MAKW2B,WALX,GAQI/B,KARJ,CAKEK,OALF;AAAA,MAMS2B,SANT,GAQIhC,KARJ,CAMEM,KANF;AAAA,MAOc2B,cAPd,GAQIjC,KARJ,CAOEO,UAPF;;AAUA,4BAOI,0CAPJ;AAAA,MACqB2B,wBADrB,uBACEhC,iBADF;AAAA,MAEQiC,WAFR,uBAEEhC,IAFF;AAAA,MAGkBiC,qBAHlB,uBAGEhC,cAHF;AAAA,MAIWiC,cAJX,uBAIEhC,OAJF;AAAA,MAKSiC,YALT,uBAKEhC,KALF;AAAA,MAMciC,iBANd,uBAMEhC,UANF;;AASA,MAAI,CAACN,UAAL,EAAiB;AACf,WAAO,IAAP;AACD;;AAED,MAAMC,iBAAiB,GACrB0B,qBAAqB,IAAIM,wBAAzB,IAAqDM,oCADvD;AAEA,MAAMrC,IAAI,GAAG0B,QAAQ,IAAIM,WAAZ,IAA2BM,UAAxC;AACA,MAAMrC,cAAc,GAAG0B,kBAAkB,IAAIM,qBAAtB,IAA+CM,8BAAtE;AACA,MAAMrC,OAAO,GAAG0B,WAAW,IAAIM,cAAf,IAAiCM,gBAAjD;AACA,MAAMrC,KAAK,GAAG0B,SAAS,IAAIM,YAAb,IAA6BM,YAA3C;AACA,MAAMrC,UAAU,GAAG0B,cAAc,IAAIM,iBAAlB,IAAuCE,UAA1D;AAEA,SACE,gCAAC,kBAAD;AAEIxC,IAAAA,UAAU,EAAVA,UAFJ;AAGIC,IAAAA,iBAAiB,EAAjBA,iBAHJ;AAIIC,IAAAA,IAAI,EAAJA,IAJJ;AAKIC,IAAAA,cAAc,EAAdA,cALJ;AAMIC,IAAAA,OAAO,EAAPA,OANJ;AAOIC,IAAAA,KAAK,EAALA,KAPJ;AAQIC,IAAAA,UAAU,EAAVA,UARJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF;AAaD,CAvDM","sourcesContent":["import React from 'react';\n\nimport { AttachmentActions as AttachmentActionsDefault } from '../../components/Attachment/AttachmentActions';\nimport { Card as CardDefault } from '../../components/Attachment/Card';\nimport { Gallery as GalleryDefault } from '../../components/Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../../components/Attachment/Giphy';\nimport { FileAttachment as FileAttachmentDefault } from '../../components/Attachment/FileAttachment';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\n\nimport type { Attachment as AttachmentType } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nexport type ActionHandler = (name: string, value: string) => void;\n\nexport type AttachmentPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'AttachmentActions' | 'Card' | 'FileAttachment' | 'Gallery' | 'Giphy' | 'UrlPreview'\n> & {\n /**\n * The attachment to render\n */\n attachment: AttachmentType<At>;\n};\n\nconst AttachmentWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { attachment, AttachmentActions, Card, FileAttachment, Gallery, Giphy, UrlPreview } = props;\n\n const hasAttachmentActions = !!attachment.actions?.length;\n\n if (attachment.type === 'giphy' || attachment.type === 'imgur') {\n return <Giphy attachment={attachment} />;\n }\n\n if (\n (attachment.title_link || attachment.og_scrape_url) &&\n (attachment.image_url || attachment.thumb_url)\n ) {\n return <UrlPreview {...attachment} />;\n }\n\n if (attachment.type === 'image') {\n return (\n <>\n <Gallery images={[attachment]} />\n {hasAttachmentActions && (\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n )}\n </>\n );\n }\n\n if (attachment.type === 'file' || attachment.type === 'audio') {\n return <FileAttachment attachment={attachment} />;\n }\n\n if (attachment.type === 'video' && attachment.asset_url && attachment.image_url) {\n return (\n // TODO: Put in video component\n <Card {...attachment} />\n );\n }\n\n if (hasAttachmentActions) {\n return (\n <>\n <Card {...attachment} />\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n </>\n );\n } else {\n return <Card {...attachment} />;\n }\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { attachment: prevAttachment } = prevProps;\n const { attachment: nextAttachment } = nextProps;\n\n const attachmentEqual =\n prevAttachment.actions?.length === nextAttachment.actions?.length &&\n prevAttachment.image_url === nextAttachment.image_url &&\n prevAttachment.thumb_url === nextAttachment.thumb_url;\n\n return attachmentEqual;\n};\n\nconst MemoizedAttachment = React.memo(\n AttachmentWithContext,\n areEqual,\n) as typeof AttachmentWithContext;\n\nexport type AttachmentProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'AttachmentActions' | 'Card' | 'FileAttachment' | 'Gallery' | 'Giphy' | 'UrlPreview'\n >\n> &\n Pick<AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'attachment'>;\n\n/**\n * Attachment - The message attachment\n */\nexport const Attachment = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: AttachmentProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n attachment,\n AttachmentActions: PropAttachmentActions,\n Card: PropCard,\n FileAttachment: PropFileAttachment,\n Gallery: PropGallery,\n Giphy: PropGiphy,\n UrlPreview: PropUrlPreview,\n } = props;\n\n const {\n AttachmentActions: ContextAttachmentActions,\n Card: ContextCard,\n FileAttachment: ContextFileAttachment,\n Gallery: ContextGallery,\n Giphy: ContextGiphy,\n UrlPreview: ContextUrlPreview,\n } = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n if (!attachment) {\n return null;\n }\n\n const AttachmentActions =\n PropAttachmentActions || ContextAttachmentActions || AttachmentActionsDefault;\n const Card = PropCard || ContextCard || CardDefault;\n const FileAttachment = PropFileAttachment || ContextFileAttachment || FileAttachmentDefault;\n const Gallery = PropGallery || ContextGallery || GalleryDefault;\n const Giphy = PropGiphy || ContextGiphy || GiphyDefault;\n const UrlPreview = PropUrlPreview || ContextUrlPreview || CardDefault;\n\n return (\n <MemoizedAttachment\n {...{\n attachment,\n AttachmentActions,\n Card,\n FileAttachment,\n Gallery,\n Giphy,\n UrlPreview,\n }}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["Attachment.tsx"],"names":["AttachmentWithContext","props","attachment","AttachmentActions","Card","FileAttachment","Gallery","Giphy","UrlPreview","hasAttachmentActions","actions","length","type","title_link","og_scrape_url","image_url","thumb_url","id","asset_url","areEqual","prevProps","nextProps","prevAttachment","nextAttachment","attachmentEqual","MemoizedAttachment","React","memo","Attachment","PropAttachmentActions","PropCard","PropFileAttachment","PropGallery","PropGiphy","PropUrlPreview","ContextAttachmentActions","ContextCard","ContextFileAttachment","ContextGallery","ContextGiphy","ContextUrlPreview","AttachmentActionsDefault","CardDefault","FileAttachmentDefault","GalleryDefault","GiphyDefault"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { AttachmentActions as AttachmentActionsDefault } from '../../components/Attachment/AttachmentActions';\nimport { Card as CardDefault } from '../../components/Attachment/Card';\nimport { Gallery as GalleryDefault } from '../../components/Attachment/Gallery';\nimport { Giphy as GiphyDefault } from '../../components/Attachment/Giphy';\nimport { FileAttachment as FileAttachmentDefault } from '../../components/Attachment/FileAttachment';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\n\nimport type { Attachment as AttachmentType } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nexport type ActionHandler = (name: string, value: string) => void;\n\nexport type AttachmentPropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'AttachmentActions' | 'Card' | 'FileAttachment' | 'Gallery' | 'Giphy' | 'UrlPreview'\n> & {\n /**\n * The attachment to render\n */\n attachment: AttachmentType<At>;\n};\n\nconst AttachmentWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { attachment, AttachmentActions, Card, FileAttachment, Gallery, Giphy, UrlPreview } = props;\n\n const hasAttachmentActions = !!attachment.actions?.length;\n\n if (attachment.type === 'giphy' || attachment.type === 'imgur') {\n return <Giphy attachment={attachment} />;\n }\n\n if (\n (attachment.title_link || attachment.og_scrape_url) &&\n (attachment.image_url || attachment.thumb_url)\n ) {\n return <UrlPreview {...attachment} />;\n }\n\n if (attachment.type === 'image') {\n return (\n <>\n <Gallery images={[attachment]} />\n {hasAttachmentActions && (\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n )}\n </>\n );\n }\n\n if (attachment.type === 'file' || attachment.type === 'audio') {\n return <FileAttachment attachment={attachment} />;\n }\n\n if (attachment.type === 'video' && attachment.asset_url) {\n return (\n // TODO: Put in video component\n <FileAttachment attachment={attachment} />\n );\n }\n\n if (hasAttachmentActions) {\n return (\n <>\n <Card {...attachment} />\n <AttachmentActions key={`key-actions-${attachment.id}`} {...attachment} />\n </>\n );\n } else {\n return <Card {...attachment} />;\n }\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const { attachment: prevAttachment } = prevProps;\n const { attachment: nextAttachment } = nextProps;\n\n const attachmentEqual =\n prevAttachment.actions?.length === nextAttachment.actions?.length &&\n prevAttachment.image_url === nextAttachment.image_url &&\n prevAttachment.thumb_url === nextAttachment.thumb_url;\n\n return attachmentEqual;\n};\n\nconst MemoizedAttachment = React.memo(\n AttachmentWithContext,\n areEqual,\n) as typeof AttachmentWithContext;\n\nexport type AttachmentProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n 'AttachmentActions' | 'Card' | 'FileAttachment' | 'Gallery' | 'Giphy' | 'UrlPreview'\n >\n> &\n Pick<AttachmentPropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'attachment'>;\n\n/**\n * Attachment - The message attachment\n */\nexport const Attachment = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: AttachmentProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n attachment,\n AttachmentActions: PropAttachmentActions,\n Card: PropCard,\n FileAttachment: PropFileAttachment,\n Gallery: PropGallery,\n Giphy: PropGiphy,\n UrlPreview: PropUrlPreview,\n } = props;\n\n const {\n AttachmentActions: ContextAttachmentActions,\n Card: ContextCard,\n FileAttachment: ContextFileAttachment,\n Gallery: ContextGallery,\n Giphy: ContextGiphy,\n UrlPreview: ContextUrlPreview,\n } = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n\n if (!attachment) {\n return null;\n }\n\n const AttachmentActions =\n PropAttachmentActions || ContextAttachmentActions || AttachmentActionsDefault;\n const Card = PropCard || ContextCard || CardDefault;\n const FileAttachment = PropFileAttachment || ContextFileAttachment || FileAttachmentDefault;\n const Gallery = PropGallery || ContextGallery || GalleryDefault;\n const Giphy = PropGiphy || ContextGiphy || GiphyDefault;\n const UrlPreview = PropUrlPreview || ContextUrlPreview || CardDefault;\n\n return (\n <MemoizedAttachment\n {...{\n attachment,\n AttachmentActions,\n Card,\n FileAttachment,\n Gallery,\n Giphy,\n UrlPreview,\n }}\n />\n );\n};\n"]}
|
|
@@ -271,7 +271,7 @@ var MessageWithContext = function MessageWithContext(props) {
|
|
|
271
271
|
|
|
272
272
|
var alignment = forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right') ? forceAlignMessages : isMyMessage ? 'right' : 'left';
|
|
273
273
|
var attachments = !message.deleted_at && Array.isArray(message.attachments) ? message.attachments.reduce(function (acc, cur) {
|
|
274
|
-
if (cur.type === 'file') {
|
|
274
|
+
if (cur.type === 'file' || cur.type === 'video') {
|
|
275
275
|
acc.files.push(cur);
|
|
276
276
|
acc.other = [];
|
|
277
277
|
} else if (cur.type === 'image' && !cur.title_link && !cur.og_scrape_url) {
|
|
@@ -613,8 +613,8 @@ var MessageWithContext = function MessageWithContext(props) {
|
|
|
613
613
|
|
|
614
614
|
case 4:
|
|
615
615
|
blockUser = blockUserProp ? blockUserProp(message) : blockUserProp === null ? null : {
|
|
616
|
-
action: function
|
|
617
|
-
|
|
616
|
+
action: function () {
|
|
617
|
+
var _action = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6() {
|
|
618
618
|
var _message$user4;
|
|
619
619
|
|
|
620
620
|
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
@@ -642,7 +642,13 @@ var MessageWithContext = function MessageWithContext(props) {
|
|
|
642
642
|
}
|
|
643
643
|
}, _callee6);
|
|
644
644
|
}));
|
|
645
|
-
|
|
645
|
+
|
|
646
|
+
function action() {
|
|
647
|
+
return _action.apply(this, arguments);
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
return action;
|
|
651
|
+
}(),
|
|
646
652
|
icon: _react["default"].createElement(_icons.UserDelete, {
|
|
647
653
|
pathFill: grey,
|
|
648
654
|
__self: _this,
|
|
@@ -837,7 +843,7 @@ var MessageWithContext = function MessageWithContext(props) {
|
|
|
837
843
|
title: t('Flag Message')
|
|
838
844
|
};
|
|
839
845
|
handleReaction = !error ? selectReaction ? selectReaction(message) : function () {
|
|
840
|
-
var
|
|
846
|
+
var _ref8 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee9(reactionType) {
|
|
841
847
|
return _regenerator["default"].wrap(function _callee9$(_context9) {
|
|
842
848
|
while (1) {
|
|
843
849
|
switch (_context9.prev = _context9.next) {
|
|
@@ -858,12 +864,12 @@ var MessageWithContext = function MessageWithContext(props) {
|
|
|
858
864
|
}));
|
|
859
865
|
|
|
860
866
|
return function (_x4) {
|
|
861
|
-
return
|
|
867
|
+
return _ref8.apply(this, arguments);
|
|
862
868
|
};
|
|
863
869
|
}() : undefined;
|
|
864
870
|
muteUser = muteUserProp ? muteUserProp(message) : muteUserProp === null ? null : {
|
|
865
871
|
action: function () {
|
|
866
|
-
var
|
|
872
|
+
var _action2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee10() {
|
|
867
873
|
var _message$user6;
|
|
868
874
|
|
|
869
875
|
return _regenerator["default"].wrap(function _callee10$(_context10) {
|
|
@@ -893,7 +899,7 @@ var MessageWithContext = function MessageWithContext(props) {
|
|
|
893
899
|
}));
|
|
894
900
|
|
|
895
901
|
function action() {
|
|
896
|
-
return
|
|
902
|
+
return _action2.apply(this, arguments);
|
|
897
903
|
}
|
|
898
904
|
|
|
899
905
|
return action;
|
|
@@ -932,7 +938,7 @@ var MessageWithContext = function MessageWithContext(props) {
|
|
|
932
938
|
};
|
|
933
939
|
retry = retryProp ? retryProp(message) : retryProp === null ? null : {
|
|
934
940
|
action: function () {
|
|
935
|
-
var
|
|
941
|
+
var _action3 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee11() {
|
|
936
942
|
var messageWithoutReservedFields;
|
|
937
943
|
return _regenerator["default"].wrap(function _callee11$(_context11) {
|
|
938
944
|
while (1) {
|
|
@@ -957,7 +963,7 @@ var MessageWithContext = function MessageWithContext(props) {
|
|
|
957
963
|
}));
|
|
958
964
|
|
|
959
965
|
function action() {
|
|
960
|
-
return
|
|
966
|
+
return _action3.apply(this, arguments);
|
|
961
967
|
}
|
|
962
968
|
|
|
963
969
|
return action;
|
|
@@ -1311,10 +1317,10 @@ var areEqual = function areEqual(prevProps, nextProps) {
|
|
|
1311
1317
|
return attachment.type === 'image' ? attachment.image_url === nextMessageAttachments[index].image_url && attachment.thumb_url === nextMessageAttachments[index].thumb_url : attachment.type === nextMessageAttachments[index].type;
|
|
1312
1318
|
}) || prevMessageAttachments === nextMessageAttachments;
|
|
1313
1319
|
if (!attachmentsEqual) return false;
|
|
1314
|
-
var latestReactionsEqual = Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions) ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length && prevMessage.latest_reactions.every(function (
|
|
1320
|
+
var latestReactionsEqual = Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions) ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length && prevMessage.latest_reactions.every(function (_ref9, index) {
|
|
1315
1321
|
var _nextMessage$latest_r;
|
|
1316
1322
|
|
|
1317
|
-
var type =
|
|
1323
|
+
var type = _ref9.type;
|
|
1318
1324
|
return type === ((_nextMessage$latest_r = nextMessage.latest_reactions) == null ? void 0 : _nextMessage$latest_r[index].type);
|
|
1319
1325
|
}) : prevMessage.latest_reactions === nextMessage.latest_reactions;
|
|
1320
1326
|
if (!latestReactionsEqual) return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Message.tsx"],"names":["prefetchImage","height","url","includes","Image","prefetch","replace","PixelRatio","getPixelSizeForLayoutSize","Number","MessageWithContext","props","animatedLongPress","Platform","OS","message","deleted_at","blockUserProp","blockUser","channel","client","copyMessageProp","copyMessage","deleteMessageProp","deleteMessage","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","editMessageProp","editMessage","enableLongPress","enforceUniqueReaction","flagMessageProp","flagMessage","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","isAdmin","isModerator","lastReceivedId","members","messageActions","messageActionsProp","defaultMessageActions","messageContentOrderProp","messageContentOrder","messagesContext","MessageSimple","mutesEnabled","muteUserProp","muteUser","onDoubleTapMessageProp","onDoubleTapMessage","onLongPressProp","onLongPress","onLongPressMessageProp","onLongPressMessage","onPressProp","onPress","onPressMessageProp","onPressMessage","onPressInProp","onPressIn","onPressInMessageProp","onPressInMessage","onThreadSelect","openThread","OverlayReactionList","preventPress","quotedRepliesEnabled","reactionsEnabled","readEventsEnabled","removeMessage","quotedReplyProp","quotedReply","retryProp","retry","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","targetedMessage","threadList","threadRepliesEnabled","threadReplyProp","threadReply","updateMessage","theme","colors","accent_blue","accent_red","bg_gradient_start","grey","targetedMessageBackground","messageSimple","gallery","halfSize","size","targetedMessageUnderlay","doubleTapRef","pressActive","scale","value","scaleStyle","transform","targetedOpacity","targetedStyle","opacity","duration","actionsEnabled","type","status","isMyMessage","userID","user","id","canModifyMessage","handleAction","name","sendAction","data","parent_id","onPressQuotedMessage","quotedMessage","error","Keyboard","dismiss","quoted_message","showMessageOverlay","alignment","attachments","Array","isArray","reduce","acc","cur","files","push","other","title_link","og_scrape_url","image_url","thumb_url","images","length","hasAttachmentActions","some","attachment","actions","attachmentImageLength","slice","forEach","image","index","filter","content","text","onlyEmojis","emojiRegex","test","onOpenThread","hasReactions","latest_reactions","clientId","reactions","reactionType","reactionsOfReactionType","reaction","hasOwnReaction","user_id","own","handleToggleReaction","messageId","ownReaction","find","deleteReaction","sendReaction","enforce_unique","console","log","handleResendMessage","handleQuotedReplyMessage","isMuted","mutedUsers","mute","target","handleToggleMuteUser","unmuteUser","handleDeleteMessage","handleEditMessage","handleToggleBanUser","messageUser","banned","unbanUser","banUser","messageReactions","action","icon","title","Clipboard","setString","Alert","alert","cancelable","titleStyle","color","undefined","messageWithoutReservedFields","isThreadMessage","dismissOverlay","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","onLongPressTouchable","onFinish","onStart","triggerHaptic","onDoubleTap","onActive","backgroundColor","StyleSheet","absoluteFillObject","areEqual","prevProps","nextProps","prevGoToMessage","prevLastReceivedId","prevMessage","prevMutedUsers","prevShowUnreadUnderlay","prevT","prevTargetedMessage","nextGoToMessage","nextLastReceivedId","nextMessage","nextMutedUsers","nextShowUnreadUnderlay","nextT","nextTargetedMessage","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","messageEqual","readBy","updated_at","quotedMessageEqual","messageUserBannedEqual","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","latestReactionsEqual","mutedUserSame","mutedUser","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport {\n Alert,\n Clipboard,\n GestureResponderEvent,\n Image,\n Keyboard,\n PixelRatio,\n Platform,\n StyleProp,\n StyleSheet,\n ViewStyle,\n} from 'react-native';\nimport { TapGestureHandler, TapGestureHandlerGestureEvent } from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useSharedValue,\n withSequence,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { useCreateMessageContext } from './hooks/useCreateMessageContext';\nimport { messageActions as defaultMessageActions } from './utils/messageActions';\nimport { removeReservedFields } from './utils/removeReservedFields';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n} from '../MessageList/hooks/useMessageList';\n\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n KeyboardContextValue,\n useKeyboardContext,\n} from '../../contexts/keyboardContext/KeyboardContext';\nimport {\n MessageContextValue,\n MessageProvider,\n Reactions,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessageAction,\n MessageOverlayContextValue,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport {\n Copy,\n CurveLineLeftUp,\n Delete,\n Edit,\n MessageFlag,\n Mute,\n SendUp,\n ThreadReply,\n UserDelete,\n} from '../../icons';\nimport { triggerHaptic } from '../../native';\nimport { emojiRegex } from '../../utils/utils';\n\nimport type { Attachment, MessageResponse, Reaction } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nconst prefetchImage = ({ height, url }: { height: number | string; url: string }) => {\n if (url.includes('&h=%2A')) {\n Image.prefetch(\n url.replace('h=%2A', `h=${PixelRatio.getPixelSizeForLayoutSize(Number(height))}`),\n )\n .catch(() => Image.prefetch(url))\n .catch(() => {\n // do nothing, not a big deal that prefetch failed\n });\n } else {\n Image.prefetch(url).catch(() => {\n // do nothing, not a big deal that prefetch failed\n });\n }\n};\nexport type TouchableHandlerPayload = {\n defaultHandler?: () => void;\n emitter?:\n | 'card'\n | 'fileAttachment'\n | 'gallery'\n | 'giphy'\n | 'message'\n | 'messageContent'\n | 'messageReplies'\n | 'reactionList'\n | 'textLink'\n | 'textMention';\n event?: GestureResponderEvent;\n};\n\nexport type MessageTouchableHandlerPayload<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\n message?: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n};\n\nexport type MessageActionHandlers = {\n deleteMessage: () => Promise<void>;\n editMessage: () => void;\n quotedReply: () => void;\n resendMessage: () => Promise<void>;\n showMessageOverlay: () => void;\n toggleBanUser: () => Promise<void>;\n toggleMuteUser: () => Promise<void>;\n toggleReaction: (reactionType: string) => Promise<void>;\n};\n\nexport type MessagePropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'channel'\n | 'disabled'\n | 'enforceUniqueReaction'\n | 'isAdmin'\n | 'isModerator'\n | 'members'\n | 'readEventsEnabled'\n> &\n Pick<ChatContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'client' | 'mutedUsers'> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'animatedLongPress'\n | 'blockUser'\n | 'copyMessage'\n | 'deleteMessage'\n | 'dismissKeyboardOnMessageTouch'\n | 'editMessage'\n | 'flagMessage'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'mutesEnabled'\n | 'muteUser'\n | 'onDoubleTapMessage'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'quotedRepliesEnabled'\n | 'quotedReply'\n | 'reactionsEnabled'\n | 'removeMessage'\n | 'retry'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'threadRepliesEnabled'\n | 'threadReply'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n messagesContext: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\n /**\n * Array of allowed actions or null on message, this can also be a function returning the array.\n * If all the actions need to be disabled an empty array should be provided as value of prop\n */\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/master/src/components/Message/Message.tsx)\n *\n * By default, we show the overlay with all the message actions on long press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n **/\n onLongPress?: (\n payload: Partial<MessageTouchableHandlerPayload<At, Ch, Co, Ev, Me, Re, Us>>,\n ) => void;\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/master/src/components/Message/Message.tsx)\n *\n * By default, we will dismiss the keyboard on press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n * */\n onPress?: (\n payload: Partial<MessageTouchableHandlerPayload<At, Ch, Co, Ev, Me, Re, Us>>,\n ) => void;\n\n onPressIn?: (\n payload: Partial<MessageTouchableHandlerPayload<At, Ch, Co, Ev, Me, Re, Us>>,\n ) => void;\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: MessageType<At, Ch, Co, Ev, Me, Re, Us>) => void;\n showUnreadUnderlay?: boolean;\n style?: StyleProp<ViewStyle>;\n targetedMessage?: boolean;\n };\n\n/**\n * Since this component doesn't consume `messages` from `MessagesContext`,\n * we memoized and broke it up to prevent new messages from re-rendering\n * each individual Message component.\n */\nconst MessageWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n animatedLongPress = Platform.OS === 'ios' && !props.message.deleted_at,\n blockUser: blockUserProp,\n channel,\n client,\n copyMessage: copyMessageProp,\n deleteMessage: deleteMessageProp,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n editMessage: editMessageProp,\n enableLongPress = true,\n enforceUniqueReaction,\n flagMessage: flagMessageProp,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n isAdmin,\n isModerator,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n mutesEnabled,\n muteUser: muteUserProp,\n onDoubleTapMessage: onDoubleTapMessageProp,\n onLongPress: onLongPressProp,\n onLongPressMessage: onLongPressMessageProp,\n onPress: onPressProp,\n onPressMessage: onPressMessageProp,\n onPressIn: onPressInProp,\n onPressInMessage: onPressInMessageProp,\n onThreadSelect,\n openThread,\n OverlayReactionList,\n preventPress,\n quotedRepliesEnabled,\n reactionsEnabled,\n readEventsEnabled,\n removeMessage,\n quotedReply: quotedReplyProp,\n retry: retryProp,\n retrySendMessage,\n selectReaction,\n setData,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n showAvatar,\n showMessageStatus,\n showUnreadUnderlay,\n style,\n supportedReactions,\n t,\n targetedMessage,\n threadList = false,\n threadRepliesEnabled,\n threadReply: threadReplyProp,\n updateMessage,\n } = props;\n\n const {\n theme: {\n colors: { accent_blue, accent_red, bg_gradient_start, grey, targetedMessageBackground },\n messageSimple: {\n gallery: { halfSize, size },\n targetedMessageUnderlay,\n },\n },\n } = useTheme();\n\n const doubleTapRef = useRef<TapGestureHandler>(null);\n const pressActive = useSharedValue(false);\n const scale = useSharedValue(1);\n\n /**\n * This is a cleanup effect to prevent the onLongPress\n * handler from being called if the component has dismounted.\n */\n useEffect(\n () => () => {\n pressActive.value = false;\n cancelAnimation(scale);\n },\n [],\n );\n const scaleStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n scale: scale.value,\n },\n ],\n }),\n [],\n );\n const targetedOpacity = useSharedValue(0);\n const targetedStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: targetedOpacity.value,\n }),\n [],\n );\n\n useEffect(() => {\n targetedOpacity.value = withTiming(targetedMessage ? 1 : 0, {\n duration: 1000,\n });\n }, [targetedMessage]);\n\n const actionsEnabled = message.type === 'regular' && message.status === 'received';\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const canModifyMessage = isMyMessage || isModerator || isAdmin;\n\n const handleAction = async (name: string, value: string) => {\n if (message.id) {\n const data = await channel?.sendAction(message.id, { [name]: value });\n if (data?.message) {\n updateMessage(data.message);\n } else {\n removeMessage({\n id: message.id,\n parent_id: message.parent_id,\n });\n }\n }\n };\n\n const onPressQuotedMessage = (quotedMessage: MessageType<At, Ch, Co, Ev, Me, Re, Us>) => {\n if (!goToMessage) return;\n\n pressActive.value = false;\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n goToMessage(quotedMessage.id);\n };\n\n const onPress = (error = message.type === 'error' || message.status === 'failed') => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n if (error) {\n showMessageOverlay(false, true);\n } else if (quotedMessage) {\n onPressQuotedMessage(quotedMessage);\n }\n };\n\n const alignment =\n forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right')\n ? forceAlignMessages\n : isMyMessage\n ? 'right'\n : 'left';\n\n /**\n * attachments contain files/images or other attachments\n *\n * if a URL attachment is present with a file/image then we\n * show just the text and markdown should make the link\n * clickable\n */\n const attachments =\n !message.deleted_at && Array.isArray(message.attachments)\n ? message.attachments.reduce(\n (acc, cur) => {\n if (cur.type === 'file') {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'image' && !cur.title_link && !cur.og_scrape_url) {\n /**\n * this next if is not combined with the above one for cases where we have\n * an image with no url links at all falling back to being an attachment\n */\n if (cur.image_url || cur.thumb_url) {\n acc.images.push(cur);\n acc.other = []; // remove other attachments if an image exists\n }\n // only add other attachments if there are no files/images\n } else if (!acc.files.length && !acc.images.length) {\n acc.other.push(cur);\n }\n\n return acc;\n },\n {\n files: [] as Attachment<At>[],\n images: [] as Attachment<At>[],\n other: [] as Attachment<At>[],\n },\n )\n : {\n files: [] as Attachment<At>[],\n images: [] as Attachment<At>[],\n other: [] as Attachment<At>[],\n };\n\n /**\n * Check if any actions to prevent long press\n */\n const hasAttachmentActions =\n !message.deleted_at &&\n Array.isArray(message.attachments) &&\n message.attachments.some((attachment) => attachment.actions && attachment.actions.length);\n\n // prefetch images for Gallery component rendering\n const attachmentImageLength = attachments.images.length;\n useEffect(() => {\n if (attachmentImageLength) {\n attachments.images.slice(0, 4).forEach((image, index) => {\n const url = image.image_url || image.thumb_url;\n if (url) {\n if (attachmentImageLength <= 2) {\n prefetchImage({ height: size || 200, url });\n } else if (attachmentImageLength === 3) {\n if (index === 0) {\n prefetchImage({ height: size || 200, url });\n } else {\n prefetchImage({ height: halfSize || 100, url });\n }\n } else {\n prefetchImage({ height: halfSize || 100, url });\n }\n }\n });\n }\n }, [attachmentImageLength]);\n\n const messageContentOrder = messageContentOrderProp.filter((content) => {\n if (content === 'quoted_reply') {\n return !!message.quoted_message;\n }\n\n switch (content) {\n case 'attachments':\n return !!attachments.other.length;\n case 'files':\n return !!attachments.files.length;\n case 'gallery':\n return !!attachments.images.length;\n case 'text':\n default:\n return !!message.text;\n }\n });\n\n const onlyEmojis =\n !attachments.files.length &&\n !attachments.images.length &&\n !attachments.other.length &&\n !!message.text &&\n emojiRegex.test(message.text);\n\n const onOpenThread = () => {\n if (onThreadSelect) {\n onThreadSelect(message);\n }\n if (openThread) {\n openThread(message);\n }\n };\n\n const hasReactions =\n !!reactionsEnabled &&\n !message.deleted_at &&\n !!message.latest_reactions &&\n message.latest_reactions.length > 0;\n\n const clientId = client.userID;\n\n const reactions = hasReactions\n ? supportedReactions.reduce((acc, cur) => {\n const reactionType = cur.type;\n const reactionsOfReactionType = message.latest_reactions?.filter(\n (reaction) => reaction.type === reactionType,\n );\n\n if (reactionsOfReactionType?.length) {\n const hasOwnReaction = reactionsOfReactionType.some(\n (reaction) => reaction.user_id === clientId,\n );\n acc.push({ own: hasOwnReaction, type: reactionType });\n }\n\n return acc;\n }, [] as Reactions)\n : [];\n\n const handleToggleReaction = async (reactionType: string) => {\n const messageId = message.id;\n const ownReaction = !!reactions.find(\n (reaction) => reaction.own && reaction.type === reactionType,\n );\n\n // Change reaction in local state, make API call in background, revert to old message if fails\n try {\n if (channel && messageId) {\n if (ownReaction) {\n await channel.deleteReaction(messageId, reactionType);\n } else {\n await channel.sendReaction(\n messageId,\n {\n type: reactionType,\n } as Reaction<Re, Us>,\n { enforce_unique: enforceUniqueReaction },\n );\n }\n }\n } catch (err) {\n console.log(err);\n }\n };\n\n const handleResendMessage = () =>\n retrySendMessage(message as MessageResponse<At, Ch, Co, Me, Re, Us>);\n\n const handleQuotedReplyMessage = () => {\n setQuotedMessageState(message);\n };\n\n const isMuted = (client.mutedUsers || []).some(\n (mute) => mute.user.id === client.userID && mute.target.id === message.user?.id,\n );\n\n const handleToggleMuteUser = async () => {\n if (!message.user?.id) {\n return;\n }\n\n if (isMuted) {\n await client.unmuteUser(message.user.id);\n } else {\n await client.muteUser(message.user.id);\n }\n };\n\n const handleDeleteMessage = async () => {\n const data = await client.deleteMessage(message.id);\n updateMessage(data.message);\n };\n\n const handleEditMessage = () => {\n setEditingState(message);\n };\n\n const handleToggleBanUser = async () => {\n const messageUser = message.user;\n if (!messageUser) {\n return;\n }\n\n if (messageUser.banned) {\n await client.unbanUser(messageUser.id);\n } else {\n await client.banUser(messageUser.id);\n }\n };\n\n const showMessageOverlay = async (\n messageReactions = false,\n error = message.type === 'error' || message.status === 'failed',\n ) => {\n await dismissKeyboard();\n\n const blockUser = blockUserProp\n ? blockUserProp(message)\n : blockUserProp === null\n ? null\n : {\n action: () => async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleBlock) {\n handleBlock(message);\n }\n\n await handleToggleBanUser();\n }\n },\n icon: <UserDelete pathFill={grey} />,\n title: message.user?.banned ? t('Unblock User') : t('Block User'),\n };\n\n const copyMessage = copyMessageProp\n ? copyMessageProp(message)\n : copyMessageProp === null\n ? null\n : {\n // using depreciated Clipboard from react-native until expo supports the community version or their own\n action: () => {\n setOverlay('none');\n if (handleCopy) {\n handleCopy(message);\n }\n Clipboard.setString(message.text || '');\n },\n icon: <Copy pathFill={grey} />,\n title: t('Copy Message'),\n };\n\n const deleteMessage = deleteMessageProp\n ? deleteMessageProp(message)\n : deleteMessageProp === null\n ? null\n : {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Delete Message'),\n t('Are you sure you want to permanently delete this message?'),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n setOverlay('none');\n if (handleDelete) {\n handleDelete(message);\n }\n\n await handleDeleteMessage();\n },\n style: 'destructive',\n text: t('Delete'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n icon: <Delete pathFill={accent_red} />,\n title: t('Delete Message'),\n titleStyle: { color: accent_red },\n };\n\n const editMessage = editMessageProp\n ? editMessageProp(message)\n : editMessageProp === null\n ? null\n : {\n action: () => {\n setOverlay('none');\n if (handleEdit) {\n handleEdit(message);\n }\n handleEditMessage();\n },\n icon: <Edit pathFill={grey} />,\n title: t('Edit Message'),\n };\n\n const flagMessage = flagMessageProp\n ? flagMessageProp(message)\n : flagMessageProp === null\n ? null\n : {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Flag Message'),\n t(\n 'Do you want to send a copy of this message to a moderator for further investigation?',\n ),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n try {\n if (handleFlag) {\n handleFlag(message);\n }\n await client.flagMessage(message.id);\n Alert.alert(\n t('Message flagged'),\n t('The message has been reported to a moderator.'),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Dismiss'),\n },\n ],\n );\n } catch (err) {\n Alert.alert(\n t('Something went wrong'),\n t(\"The operation couldn't be completed.\"),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Dismiss'),\n },\n ],\n );\n }\n },\n text: t('Flag'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n icon: <MessageFlag pathFill={grey} />,\n title: t('Flag Message'),\n };\n\n const handleReaction = !error\n ? selectReaction\n ? selectReaction(message)\n : async (reactionType: string) => {\n if (handleReactionProp) {\n handleReactionProp(message, reactionType);\n }\n\n await handleToggleReaction(reactionType);\n }\n : undefined;\n\n const muteUser = muteUserProp\n ? muteUserProp(message)\n : muteUserProp === null\n ? null\n : {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleMute) {\n handleMute(message);\n }\n\n await handleToggleMuteUser();\n }\n },\n icon: <Mute pathFill={grey} />,\n title: isMuted ? t('Unmute User') : t('Mute User'),\n };\n\n const quotedReply = quotedReplyProp\n ? quotedReplyProp(message)\n : quotedReplyProp === null\n ? null\n : {\n action: () => {\n setOverlay('none');\n if (handleQuotedReply) {\n handleQuotedReply(message);\n }\n handleQuotedReplyMessage();\n },\n icon: <CurveLineLeftUp pathFill={grey} />,\n title: t('Reply'),\n };\n\n const retry = retryProp\n ? retryProp(message)\n : retryProp === null\n ? null\n : {\n action: async () => {\n setOverlay('none');\n const messageWithoutReservedFields = removeReservedFields(message);\n if (handleRetry) {\n handleRetry(messageWithoutReservedFields);\n }\n\n await handleResendMessage();\n },\n icon: <SendUp pathFill={accent_blue} />,\n title: t('Resend'),\n };\n\n const threadReply = threadReplyProp\n ? threadReplyProp(message)\n : threadReplyProp === null\n ? null\n : {\n action: () => {\n setOverlay('none');\n if (handleThreadReply) {\n handleThreadReply(message);\n }\n onOpenThread();\n },\n icon: <ThreadReply pathFill={grey} />,\n title: t('Thread Reply'),\n };\n\n const isThreadMessage = threadList || !!message.parent_id;\n\n const dismissOverlay = () => setOverlay('none');\n\n const messageActions =\n typeof messageActionsProp !== 'function'\n ? messageActionsProp\n : messageActionsProp({\n blockUser,\n canModifyMessage,\n copyMessage,\n deleteMessage,\n dismissOverlay,\n editMessage,\n error,\n flagMessage,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n mutesEnabled,\n muteUser,\n quotedRepliesEnabled,\n quotedReply,\n retry,\n threadRepliesEnabled,\n threadReply,\n });\n\n setData({\n alignment,\n clientId: client.userID,\n files: attachments.files,\n groupStyles,\n handleReaction: reactionsEnabled ? handleReaction : undefined,\n images: attachments.images,\n message,\n messageActions: messageActions?.filter(Boolean) as MessageAction[] | undefined,\n messageContext: { ...messageContext, disabled: true, preventPress: true },\n messageReactionTitle: !error && messageReactions ? t('Message Reactions') : undefined,\n messagesContext: { ...messagesContext, messageContentOrder },\n onlyEmojis,\n otherAttachments: attachments.other,\n OverlayReactionList,\n supportedReactions,\n threadList,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\n quotedReply: handleQuotedReplyMessage,\n resendMessage: handleResendMessage,\n showMessageOverlay,\n toggleBanUser: handleToggleBanUser,\n toggleMuteUser: handleToggleMuteUser,\n toggleReaction: handleToggleReaction,\n };\n\n const onLongPressMessage =\n disabled || hasAttachmentActions\n ? () => null\n : onLongPressMessageProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressMessageProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n message,\n })\n : onLongPressProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n })\n : enableLongPress\n ? () => showMessageOverlay(false)\n : () => null;\n\n const onDoubleTapMessage = () => {\n if (onDoubleTapMessageProp) {\n onDoubleTapMessageProp({ actionHandlers, message });\n }\n };\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n canModifyMessage,\n channel,\n disabled,\n files: attachments.files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images: attachments.images,\n isMyMessage,\n lastGroupMessage: groupStyles?.[0] === 'single' || groupStyles?.[0] === 'bottom',\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress: !animatedLongPress ? onLongPressMessage : () => null,\n onlyEmojis,\n onOpenThread,\n onPress: (payload) => {\n onPressProp\n ? onPressProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n })\n : onPressMessageProp\n ? onPressMessageProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n })\n : payload.defaultHandler\n ? payload.defaultHandler()\n : onPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n onPressInProp\n ? onPressInProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n })\n : onPressInMessageProp &&\n onPressInMessageProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n });\n }\n : null,\n otherAttachments: attachments.other,\n preventPress,\n reactions,\n readEventsEnabled,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n });\n\n const onLongPressTouchable = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>(\n {\n onFinish: () => {\n pressActive.value = false;\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n },\n onStart: () => {\n pressActive.value = true;\n cancelAnimation(scale);\n /**\n * React native longPress active occurs on 370ms,\n * to hijack this we must make sure the timing is\n * longer, otherwise onPress will fire instead\n */\n scale.value = withSequence(\n withTiming(1, { duration: 100 }),\n withTiming(0.98, { duration: 400 }, () => {\n if (pressActive.value) {\n runOnJS(onLongPressMessage)();\n runOnJS(triggerHaptic)('impactMedium');\n }\n }),\n withTiming(1.02, { duration: 100 }),\n withTiming(1.0, { duration: 300 }),\n );\n },\n },\n [onLongPressMessage],\n );\n\n const onDoubleTap = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>(\n {\n onActive: () => {\n pressActive.value = false;\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n runOnJS(onDoubleTapMessage)();\n },\n },\n [onDoubleTapMessage],\n );\n\n return message.deleted_at || messageContentOrder.length ? (\n <TapGestureHandler\n enabled={animatedLongPress && !preventPress}\n maxDeltaX={8}\n maxDurationMs={3000}\n onGestureEvent={animatedLongPress ? onLongPressTouchable : undefined}\n waitFor={doubleTapRef}\n >\n <Animated.View testID='message-wrapper'>\n <TapGestureHandler\n enabled={!preventPress}\n numberOfTaps={2}\n onGestureEvent={onDoubleTap}\n ref={doubleTapRef}\n >\n <Animated.View\n style={[\n style,\n {\n backgroundColor: showUnreadUnderlay ? bg_gradient_start : undefined,\n },\n scaleStyle,\n ]}\n >\n <Animated.View\n style={[\n StyleSheet.absoluteFillObject,\n targetedMessageUnderlay,\n { backgroundColor: targetedMessageBackground },\n targetedStyle,\n ]}\n />\n <MessageProvider value={messageContext}>\n <MessageSimple />\n </MessageProvider>\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n ) : null;\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n lastReceivedId: prevLastReceivedId,\n message: prevMessage,\n mutedUsers: prevMutedUsers,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n lastReceivedId: nextLastReceivedId,\n message: nextMessage,\n mutedUsers: nextMutedUsers,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const lastReceivedIdChangedAndMatters =\n prevLastReceivedId !== nextLastReceivedId &&\n (prevLastReceivedId === prevMessage.id ||\n prevLastReceivedId === nextMessage.id ||\n nextLastReceivedId === prevMessage.id ||\n nextLastReceivedId === nextMessage.id);\n\n if (lastReceivedIdChangedAndMatters) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n\n if (goToMessageChangedAndMatters) return false;\n\n const messageEqual =\n prevMessage.deleted_at === nextMessage.deleted_at &&\n (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===\n (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy) &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.updated_at === nextMessage.updated_at;\n\n if (!messageEqual) return false;\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n prevMessage.quoted_message?.deleted_at === nextMessage.quoted_message?.deleted_at;\n\n if (!quotedMessageEqual) return false;\n\n const messageUserBannedEqual = prevMessage.user?.banned === nextMessage.user?.banned;\n if (!messageUserBannedEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n (Array.isArray(prevMessageAttachments) &&\n Array.isArray(nextMessageAttachments) &&\n prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) =>\n attachment.type === 'image'\n ? attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url\n : attachment.type === nextMessageAttachments[index].type,\n )) ||\n prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const mutedUserSame =\n prevMutedUsers.length === nextMutedUsers.length ||\n prevMutedUsers.some((mutedUser) => mutedUser.target.id === prevMessage.user?.id) ===\n nextMutedUsers.some((mutedUser) => mutedUser.target.id === nextMessage.user?.id);\n if (!mutedUserSame) return false;\n\n const showUnreadUnderlayEqual = prevShowUnreadUnderlay === nextShowUnreadUnderlay;\n if (!showUnreadUnderlayEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;\n if (!targetedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessage = React.memo(MessageWithContext, areEqual) as typeof MessageWithContext;\n\nexport type MessageProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<Omit<MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'>;\n\n/**\n * Message - A high level component which implements all the logic required for a message.\n * The actual rendering of the message is delegated via the \"Message\" property\n *\n * @example ./Message.md\n */\nexport const Message = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: MessageProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n channel,\n disabled,\n enforceUniqueReaction,\n isAdmin,\n isModerator,\n members,\n readEventsEnabled,\n } = useChannelContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { client, mutedUsers } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<At, Ch, Co, Ev, Me, Re, Us>();\n const messagesContext = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<At, Ch, Co, Ev, Me, Re, Us>\n {...messagesContext}\n {...{\n channel,\n client,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n isAdmin,\n isModerator,\n members,\n messagesContext,\n mutedUsers,\n openThread,\n readEventsEnabled,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["Message.tsx"],"names":["prefetchImage","height","url","includes","Image","prefetch","replace","PixelRatio","getPixelSizeForLayoutSize","Number","MessageWithContext","props","animatedLongPress","Platform","OS","message","deleted_at","blockUserProp","blockUser","channel","client","copyMessageProp","copyMessage","deleteMessageProp","deleteMessage","disabled","dismissKeyboard","dismissKeyboardOnMessageTouch","editMessageProp","editMessage","enableLongPress","enforceUniqueReaction","flagMessageProp","flagMessage","forceAlignMessages","goToMessage","groupStyles","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","isAdmin","isModerator","lastReceivedId","members","messageActions","messageActionsProp","defaultMessageActions","messageContentOrderProp","messageContentOrder","messagesContext","MessageSimple","mutesEnabled","muteUserProp","muteUser","onDoubleTapMessageProp","onDoubleTapMessage","onLongPressProp","onLongPress","onLongPressMessageProp","onLongPressMessage","onPressProp","onPress","onPressMessageProp","onPressMessage","onPressInProp","onPressIn","onPressInMessageProp","onPressInMessage","onThreadSelect","openThread","OverlayReactionList","preventPress","quotedRepliesEnabled","reactionsEnabled","readEventsEnabled","removeMessage","quotedReplyProp","quotedReply","retryProp","retry","retrySendMessage","selectReaction","setData","setEditingState","setOverlay","setQuotedMessageState","showAvatar","showMessageStatus","showUnreadUnderlay","style","supportedReactions","t","targetedMessage","threadList","threadRepliesEnabled","threadReplyProp","threadReply","updateMessage","theme","colors","accent_blue","accent_red","bg_gradient_start","grey","targetedMessageBackground","messageSimple","gallery","halfSize","size","targetedMessageUnderlay","doubleTapRef","pressActive","scale","value","scaleStyle","transform","targetedOpacity","targetedStyle","opacity","duration","actionsEnabled","type","status","isMyMessage","userID","user","id","canModifyMessage","handleAction","name","sendAction","data","parent_id","onPressQuotedMessage","quotedMessage","error","Keyboard","dismiss","quoted_message","showMessageOverlay","alignment","attachments","Array","isArray","reduce","acc","cur","files","push","other","title_link","og_scrape_url","image_url","thumb_url","images","length","hasAttachmentActions","some","attachment","actions","attachmentImageLength","slice","forEach","image","index","filter","content","text","onlyEmojis","emojiRegex","test","onOpenThread","hasReactions","latest_reactions","clientId","reactions","reactionType","reactionsOfReactionType","reaction","hasOwnReaction","user_id","own","handleToggleReaction","messageId","ownReaction","find","deleteReaction","sendReaction","enforce_unique","console","log","handleResendMessage","handleQuotedReplyMessage","isMuted","mutedUsers","mute","target","handleToggleMuteUser","unmuteUser","handleDeleteMessage","handleEditMessage","handleToggleBanUser","messageUser","banned","unbanUser","banUser","messageReactions","action","icon","title","Clipboard","setString","Alert","alert","cancelable","titleStyle","color","undefined","messageWithoutReservedFields","isThreadMessage","dismissOverlay","Boolean","messageContext","messageReactionTitle","otherAttachments","actionHandlers","resendMessage","toggleBanUser","toggleMuteUser","toggleReaction","payload","defaultHandler","emitter","event","lastGroupMessage","onLongPressTouchable","onFinish","onStart","triggerHaptic","onDoubleTap","onActive","backgroundColor","StyleSheet","absoluteFillObject","areEqual","prevProps","nextProps","prevGoToMessage","prevLastReceivedId","prevMessage","prevMutedUsers","prevShowUnreadUnderlay","prevT","prevTargetedMessage","nextGoToMessage","nextLastReceivedId","nextMessage","nextMutedUsers","nextShowUnreadUnderlay","nextT","nextTargetedMessage","repliesEqual","reply_count","lastReceivedIdChangedAndMatters","goToMessageChangedAndMatters","quoted_message_id","messageEqual","readBy","updated_at","quotedMessageEqual","messageUserBannedEqual","prevMessageAttachments","nextMessageAttachments","attachmentsEqual","every","latestReactionsEqual","mutedUserSame","mutedUser","showUnreadUnderlayEqual","tEqual","targetedMessageEqual","MemoizedMessage","React","memo","Message"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport {\n Alert,\n Clipboard,\n GestureResponderEvent,\n Image,\n Keyboard,\n PixelRatio,\n Platform,\n StyleProp,\n StyleSheet,\n ViewStyle,\n} from 'react-native';\nimport { TapGestureHandler, TapGestureHandlerGestureEvent } from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useSharedValue,\n withSequence,\n withTiming,\n} from 'react-native-reanimated';\n\nimport { useCreateMessageContext } from './hooks/useCreateMessageContext';\nimport { messageActions as defaultMessageActions } from './utils/messageActions';\nimport { removeReservedFields } from './utils/removeReservedFields';\n\nimport {\n isMessageWithStylesReadByAndDateSeparator,\n MessageType,\n} from '../MessageList/hooks/useMessageList';\n\nimport {\n ChannelContextValue,\n useChannelContext,\n} from '../../contexts/channelContext/ChannelContext';\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\nimport {\n KeyboardContextValue,\n useKeyboardContext,\n} from '../../contexts/keyboardContext/KeyboardContext';\nimport {\n MessageContextValue,\n MessageProvider,\n Reactions,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessageAction,\n MessageOverlayContextValue,\n useMessageOverlayContext,\n} from '../../contexts/messageOverlayContext/MessageOverlayContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { ThreadContextValue, useThreadContext } from '../../contexts/threadContext/ThreadContext';\nimport {\n TranslationContextValue,\n useTranslationContext,\n} from '../../contexts/translationContext/TranslationContext';\n\nimport {\n Copy,\n CurveLineLeftUp,\n Delete,\n Edit,\n MessageFlag,\n Mute,\n SendUp,\n ThreadReply,\n UserDelete,\n} from '../../icons';\nimport { triggerHaptic } from '../../native';\nimport { emojiRegex } from '../../utils/utils';\n\nimport type { Attachment, MessageResponse, Reaction } from 'stream-chat';\n\nimport type {\n DefaultAttachmentType,\n DefaultChannelType,\n DefaultCommandType,\n DefaultEventType,\n DefaultMessageType,\n DefaultReactionType,\n DefaultUserType,\n UnknownType,\n} from '../../types/types';\n\nconst prefetchImage = ({ height, url }: { height: number | string; url: string }) => {\n if (url.includes('&h=%2A')) {\n Image.prefetch(\n url.replace('h=%2A', `h=${PixelRatio.getPixelSizeForLayoutSize(Number(height))}`),\n )\n .catch(() => Image.prefetch(url))\n .catch(() => {\n // do nothing, not a big deal that prefetch failed\n });\n } else {\n Image.prefetch(url).catch(() => {\n // do nothing, not a big deal that prefetch failed\n });\n }\n};\nexport type TouchableHandlerPayload = {\n defaultHandler?: () => void;\n emitter?:\n | 'card'\n | 'fileAttachment'\n | 'gallery'\n | 'giphy'\n | 'message'\n | 'messageContent'\n | 'messageReplies'\n | 'reactionList'\n | 'textLink'\n | 'textMention';\n event?: GestureResponderEvent;\n};\n\nexport type MessageTouchableHandlerPayload<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = TouchableHandlerPayload & {\n actionHandlers?: MessageActionHandlers;\n message?: MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n};\n\nexport type MessageActionHandlers = {\n deleteMessage: () => Promise<void>;\n editMessage: () => void;\n quotedReply: () => void;\n resendMessage: () => Promise<void>;\n showMessageOverlay: () => void;\n toggleBanUser: () => Promise<void>;\n toggleMuteUser: () => Promise<void>;\n toggleReaction: (reactionType: string) => Promise<void>;\n};\n\nexport type MessagePropsWithContext<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Pick<\n ChannelContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'channel'\n | 'disabled'\n | 'enforceUniqueReaction'\n | 'isAdmin'\n | 'isModerator'\n | 'members'\n | 'readEventsEnabled'\n> &\n Pick<ChatContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'client' | 'mutedUsers'> &\n Pick<KeyboardContextValue, 'dismissKeyboard'> &\n Partial<Omit<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'>> &\n Pick<MessageContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'> &\n Pick<\n MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>,\n | 'animatedLongPress'\n | 'blockUser'\n | 'copyMessage'\n | 'deleteMessage'\n | 'dismissKeyboardOnMessageTouch'\n | 'editMessage'\n | 'flagMessage'\n | 'forceAlignMessages'\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleMute'\n | 'handleQuotedReply'\n | 'handleReaction'\n | 'handleRetry'\n | 'handleThreadReply'\n | 'messageActions'\n | 'messageContentOrder'\n | 'MessageSimple'\n | 'mutesEnabled'\n | 'muteUser'\n | 'onDoubleTapMessage'\n | 'onLongPressMessage'\n | 'onPressInMessage'\n | 'onPressMessage'\n | 'OverlayReactionList'\n | 'quotedRepliesEnabled'\n | 'quotedReply'\n | 'reactionsEnabled'\n | 'removeMessage'\n | 'retry'\n | 'retrySendMessage'\n | 'selectReaction'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n | 'threadRepliesEnabled'\n | 'threadReply'\n | 'updateMessage'\n > &\n Pick<MessageOverlayContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'setData'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<At, Ch, Co, Ev, Me, Re, Us>, 'openThread'> &\n Pick<TranslationContextValue, 't'> & {\n messagesContext: MessagesContextValue<At, Ch, Co, Ev, Me, Re, Us>;\n /**\n * Whether or not users are able to long press messages.\n */\n enableLongPress?: boolean;\n goToMessage?: (messageId: string) => void;\n /**\n * Array of allowed actions or null on message, this can also be a function returning the array.\n * If all the actions need to be disabled an empty array should be provided as value of prop\n */\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/master/src/components/Message/Message.tsx)\n *\n * By default, we show the overlay with all the message actions on long press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n **/\n onLongPress?: (\n payload: Partial<MessageTouchableHandlerPayload<At, Ch, Co, Ev, Me, Re, Us>>,\n ) => void;\n /**\n * You can call methods available on the Message\n * component such as handleEdit, handleDelete, handleAction etc.\n *\n * Source - [Message](https://github.com/GetStream/stream-chat-react-native/blob/master/src/components/Message/Message.tsx)\n *\n * By default, we will dismiss the keyboard on press.\n *\n * @param message Message object which was long pressed\n * @param event Event object for onLongPress event\n * */\n onPress?: (\n payload: Partial<MessageTouchableHandlerPayload<At, Ch, Co, Ev, Me, Re, Us>>,\n ) => void;\n\n onPressIn?: (\n payload: Partial<MessageTouchableHandlerPayload<At, Ch, Co, Ev, Me, Re, Us>>,\n ) => void;\n /**\n * Handler to open the thread on message. This is callback for touch event for replies button.\n *\n * @param message A message object to open the thread upon.\n */\n onThreadSelect?: (message: MessageType<At, Ch, Co, Ev, Me, Re, Us>) => void;\n showUnreadUnderlay?: boolean;\n style?: StyleProp<ViewStyle>;\n targetedMessage?: boolean;\n };\n\n/**\n * Since this component doesn't consume `messages` from `MessagesContext`,\n * we memoized and broke it up to prevent new messages from re-rendering\n * each individual Message component.\n */\nconst MessageWithContext = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n animatedLongPress = Platform.OS === 'ios' && !props.message.deleted_at,\n blockUser: blockUserProp,\n channel,\n client,\n copyMessage: copyMessageProp,\n deleteMessage: deleteMessageProp,\n disabled,\n dismissKeyboard,\n dismissKeyboardOnMessageTouch,\n editMessage: editMessageProp,\n enableLongPress = true,\n enforceUniqueReaction,\n flagMessage: flagMessageProp,\n forceAlignMessages = false,\n goToMessage,\n groupStyles = ['bottom'],\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n isAdmin,\n isModerator,\n lastReceivedId,\n members,\n message,\n messageActions: messageActionsProp = defaultMessageActions,\n messageContentOrder: messageContentOrderProp,\n messagesContext,\n MessageSimple,\n mutesEnabled,\n muteUser: muteUserProp,\n onDoubleTapMessage: onDoubleTapMessageProp,\n onLongPress: onLongPressProp,\n onLongPressMessage: onLongPressMessageProp,\n onPress: onPressProp,\n onPressMessage: onPressMessageProp,\n onPressIn: onPressInProp,\n onPressInMessage: onPressInMessageProp,\n onThreadSelect,\n openThread,\n OverlayReactionList,\n preventPress,\n quotedRepliesEnabled,\n reactionsEnabled,\n readEventsEnabled,\n removeMessage,\n quotedReply: quotedReplyProp,\n retry: retryProp,\n retrySendMessage,\n selectReaction,\n setData,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n showAvatar,\n showMessageStatus,\n showUnreadUnderlay,\n style,\n supportedReactions,\n t,\n targetedMessage,\n threadList = false,\n threadRepliesEnabled,\n threadReply: threadReplyProp,\n updateMessage,\n } = props;\n\n const {\n theme: {\n colors: { accent_blue, accent_red, bg_gradient_start, grey, targetedMessageBackground },\n messageSimple: {\n gallery: { halfSize, size },\n targetedMessageUnderlay,\n },\n },\n } = useTheme();\n\n const doubleTapRef = useRef<TapGestureHandler>(null);\n const pressActive = useSharedValue(false);\n const scale = useSharedValue(1);\n\n /**\n * This is a cleanup effect to prevent the onLongPress\n * handler from being called if the component has dismounted.\n */\n useEffect(\n () => () => {\n pressActive.value = false;\n cancelAnimation(scale);\n },\n [],\n );\n const scaleStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n transform: [\n {\n scale: scale.value,\n },\n ],\n }),\n [],\n );\n const targetedOpacity = useSharedValue(0);\n const targetedStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: targetedOpacity.value,\n }),\n [],\n );\n\n useEffect(() => {\n targetedOpacity.value = withTiming(targetedMessage ? 1 : 0, {\n duration: 1000,\n });\n }, [targetedMessage]);\n\n const actionsEnabled = message.type === 'regular' && message.status === 'received';\n\n const isMyMessage = client && message && client.userID === message.user?.id;\n\n const canModifyMessage = isMyMessage || isModerator || isAdmin;\n\n const handleAction = async (name: string, value: string) => {\n if (message.id) {\n const data = await channel?.sendAction(message.id, { [name]: value });\n if (data?.message) {\n updateMessage(data.message);\n } else {\n removeMessage({\n id: message.id,\n parent_id: message.parent_id,\n });\n }\n }\n };\n\n const onPressQuotedMessage = (quotedMessage: MessageType<At, Ch, Co, Ev, Me, Re, Us>) => {\n if (!goToMessage) return;\n\n pressActive.value = false;\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n goToMessage(quotedMessage.id);\n };\n\n const onPress = (error = message.type === 'error' || message.status === 'failed') => {\n if (dismissKeyboardOnMessageTouch) {\n Keyboard.dismiss();\n }\n const quotedMessage = message.quoted_message as MessageType<At, Ch, Co, Ev, Me, Re, Us>;\n if (error) {\n showMessageOverlay(false, true);\n } else if (quotedMessage) {\n onPressQuotedMessage(quotedMessage);\n }\n };\n\n const alignment =\n forceAlignMessages && (forceAlignMessages === 'left' || forceAlignMessages === 'right')\n ? forceAlignMessages\n : isMyMessage\n ? 'right'\n : 'left';\n\n /**\n * attachments contain files/images or other attachments\n *\n * if a URL attachment is present with a file/image then we\n * show just the text and markdown should make the link\n * clickable\n */\n const attachments =\n !message.deleted_at && Array.isArray(message.attachments)\n ? message.attachments.reduce(\n (acc, cur) => {\n if (cur.type === 'file' || cur.type === 'video') {\n acc.files.push(cur);\n acc.other = []; // remove other attachments if a file exists\n } else if (cur.type === 'image' && !cur.title_link && !cur.og_scrape_url) {\n /**\n * this next if is not combined with the above one for cases where we have\n * an image with no url links at all falling back to being an attachment\n */\n if (cur.image_url || cur.thumb_url) {\n acc.images.push(cur);\n acc.other = []; // remove other attachments if an image exists\n }\n // only add other attachments if there are no files/images\n } else if (!acc.files.length && !acc.images.length) {\n acc.other.push(cur);\n }\n\n return acc;\n },\n {\n files: [] as Attachment<At>[],\n images: [] as Attachment<At>[],\n other: [] as Attachment<At>[],\n },\n )\n : {\n files: [] as Attachment<At>[],\n images: [] as Attachment<At>[],\n other: [] as Attachment<At>[],\n };\n\n /**\n * Check if any actions to prevent long press\n */\n const hasAttachmentActions =\n !message.deleted_at &&\n Array.isArray(message.attachments) &&\n message.attachments.some((attachment) => attachment.actions && attachment.actions.length);\n\n // prefetch images for Gallery component rendering\n const attachmentImageLength = attachments.images.length;\n useEffect(() => {\n if (attachmentImageLength) {\n attachments.images.slice(0, 4).forEach((image, index) => {\n const url = image.image_url || image.thumb_url;\n if (url) {\n if (attachmentImageLength <= 2) {\n prefetchImage({ height: size || 200, url });\n } else if (attachmentImageLength === 3) {\n if (index === 0) {\n prefetchImage({ height: size || 200, url });\n } else {\n prefetchImage({ height: halfSize || 100, url });\n }\n } else {\n prefetchImage({ height: halfSize || 100, url });\n }\n }\n });\n }\n }, [attachmentImageLength]);\n\n const messageContentOrder = messageContentOrderProp.filter((content) => {\n if (content === 'quoted_reply') {\n return !!message.quoted_message;\n }\n\n switch (content) {\n case 'attachments':\n return !!attachments.other.length;\n case 'files':\n return !!attachments.files.length;\n case 'gallery':\n return !!attachments.images.length;\n case 'text':\n default:\n return !!message.text;\n }\n });\n\n const onlyEmojis =\n !attachments.files.length &&\n !attachments.images.length &&\n !attachments.other.length &&\n !!message.text &&\n emojiRegex.test(message.text);\n\n const onOpenThread = () => {\n if (onThreadSelect) {\n onThreadSelect(message);\n }\n if (openThread) {\n openThread(message);\n }\n };\n\n const hasReactions =\n !!reactionsEnabled &&\n !message.deleted_at &&\n !!message.latest_reactions &&\n message.latest_reactions.length > 0;\n\n const clientId = client.userID;\n\n const reactions = hasReactions\n ? supportedReactions.reduce((acc, cur) => {\n const reactionType = cur.type;\n const reactionsOfReactionType = message.latest_reactions?.filter(\n (reaction) => reaction.type === reactionType,\n );\n\n if (reactionsOfReactionType?.length) {\n const hasOwnReaction = reactionsOfReactionType.some(\n (reaction) => reaction.user_id === clientId,\n );\n acc.push({ own: hasOwnReaction, type: reactionType });\n }\n\n return acc;\n }, [] as Reactions)\n : [];\n\n const handleToggleReaction = async (reactionType: string) => {\n const messageId = message.id;\n const ownReaction = !!reactions.find(\n (reaction) => reaction.own && reaction.type === reactionType,\n );\n\n // Change reaction in local state, make API call in background, revert to old message if fails\n try {\n if (channel && messageId) {\n if (ownReaction) {\n await channel.deleteReaction(messageId, reactionType);\n } else {\n await channel.sendReaction(\n messageId,\n {\n type: reactionType,\n } as Reaction<Re, Us>,\n { enforce_unique: enforceUniqueReaction },\n );\n }\n }\n } catch (err) {\n console.log(err);\n }\n };\n\n const handleResendMessage = () =>\n retrySendMessage(message as MessageResponse<At, Ch, Co, Me, Re, Us>);\n\n const handleQuotedReplyMessage = () => {\n setQuotedMessageState(message);\n };\n\n const isMuted = (client.mutedUsers || []).some(\n (mute) => mute.user.id === client.userID && mute.target.id === message.user?.id,\n );\n\n const handleToggleMuteUser = async () => {\n if (!message.user?.id) {\n return;\n }\n\n if (isMuted) {\n await client.unmuteUser(message.user.id);\n } else {\n await client.muteUser(message.user.id);\n }\n };\n\n const handleDeleteMessage = async () => {\n const data = await client.deleteMessage(message.id);\n updateMessage(data.message);\n };\n\n const handleEditMessage = () => {\n setEditingState(message);\n };\n\n const handleToggleBanUser = async () => {\n const messageUser = message.user;\n if (!messageUser) {\n return;\n }\n\n if (messageUser.banned) {\n await client.unbanUser(messageUser.id);\n } else {\n await client.banUser(messageUser.id);\n }\n };\n\n const showMessageOverlay = async (\n messageReactions = false,\n error = message.type === 'error' || message.status === 'failed',\n ) => {\n await dismissKeyboard();\n\n const blockUser = blockUserProp\n ? blockUserProp(message)\n : blockUserProp === null\n ? null\n : {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleBlock) {\n handleBlock(message);\n }\n\n await handleToggleBanUser();\n }\n },\n icon: <UserDelete pathFill={grey} />,\n title: message.user?.banned ? t('Unblock User') : t('Block User'),\n };\n\n const copyMessage = copyMessageProp\n ? copyMessageProp(message)\n : copyMessageProp === null\n ? null\n : {\n // using depreciated Clipboard from react-native until expo supports the community version or their own\n action: () => {\n setOverlay('none');\n if (handleCopy) {\n handleCopy(message);\n }\n Clipboard.setString(message.text || '');\n },\n icon: <Copy pathFill={grey} />,\n title: t('Copy Message'),\n };\n\n const deleteMessage = deleteMessageProp\n ? deleteMessageProp(message)\n : deleteMessageProp === null\n ? null\n : {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Delete Message'),\n t('Are you sure you want to permanently delete this message?'),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n setOverlay('none');\n if (handleDelete) {\n handleDelete(message);\n }\n\n await handleDeleteMessage();\n },\n style: 'destructive',\n text: t('Delete'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n icon: <Delete pathFill={accent_red} />,\n title: t('Delete Message'),\n titleStyle: { color: accent_red },\n };\n\n const editMessage = editMessageProp\n ? editMessageProp(message)\n : editMessageProp === null\n ? null\n : {\n action: () => {\n setOverlay('none');\n if (handleEdit) {\n handleEdit(message);\n }\n handleEditMessage();\n },\n icon: <Edit pathFill={grey} />,\n title: t('Edit Message'),\n };\n\n const flagMessage = flagMessageProp\n ? flagMessageProp(message)\n : flagMessageProp === null\n ? null\n : {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Flag Message'),\n t(\n 'Do you want to send a copy of this message to a moderator for further investigation?',\n ),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n try {\n if (handleFlag) {\n handleFlag(message);\n }\n await client.flagMessage(message.id);\n Alert.alert(\n t('Message flagged'),\n t('The message has been reported to a moderator.'),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Dismiss'),\n },\n ],\n );\n } catch (err) {\n Alert.alert(\n t('Something went wrong'),\n t(\"The operation couldn't be completed.\"),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Dismiss'),\n },\n ],\n );\n }\n },\n text: t('Flag'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n icon: <MessageFlag pathFill={grey} />,\n title: t('Flag Message'),\n };\n\n const handleReaction = !error\n ? selectReaction\n ? selectReaction(message)\n : async (reactionType: string) => {\n if (handleReactionProp) {\n handleReactionProp(message, reactionType);\n }\n\n await handleToggleReaction(reactionType);\n }\n : undefined;\n\n const muteUser = muteUserProp\n ? muteUserProp(message)\n : muteUserProp === null\n ? null\n : {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleMute) {\n handleMute(message);\n }\n\n await handleToggleMuteUser();\n }\n },\n icon: <Mute pathFill={grey} />,\n title: isMuted ? t('Unmute User') : t('Mute User'),\n };\n\n const quotedReply = quotedReplyProp\n ? quotedReplyProp(message)\n : quotedReplyProp === null\n ? null\n : {\n action: () => {\n setOverlay('none');\n if (handleQuotedReply) {\n handleQuotedReply(message);\n }\n handleQuotedReplyMessage();\n },\n icon: <CurveLineLeftUp pathFill={grey} />,\n title: t('Reply'),\n };\n\n const retry = retryProp\n ? retryProp(message)\n : retryProp === null\n ? null\n : {\n action: async () => {\n setOverlay('none');\n const messageWithoutReservedFields = removeReservedFields(message);\n if (handleRetry) {\n handleRetry(messageWithoutReservedFields);\n }\n\n await handleResendMessage();\n },\n icon: <SendUp pathFill={accent_blue} />,\n title: t('Resend'),\n };\n\n const threadReply = threadReplyProp\n ? threadReplyProp(message)\n : threadReplyProp === null\n ? null\n : {\n action: () => {\n setOverlay('none');\n if (handleThreadReply) {\n handleThreadReply(message);\n }\n onOpenThread();\n },\n icon: <ThreadReply pathFill={grey} />,\n title: t('Thread Reply'),\n };\n\n const isThreadMessage = threadList || !!message.parent_id;\n\n const dismissOverlay = () => setOverlay('none');\n\n const messageActions =\n typeof messageActionsProp !== 'function'\n ? messageActionsProp\n : messageActionsProp({\n blockUser,\n canModifyMessage,\n copyMessage,\n deleteMessage,\n dismissOverlay,\n editMessage,\n error,\n flagMessage,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n mutesEnabled,\n muteUser,\n quotedRepliesEnabled,\n quotedReply,\n retry,\n threadRepliesEnabled,\n threadReply,\n });\n\n setData({\n alignment,\n clientId: client.userID,\n files: attachments.files,\n groupStyles,\n handleReaction: reactionsEnabled ? handleReaction : undefined,\n images: attachments.images,\n message,\n messageActions: messageActions?.filter(Boolean) as MessageAction[] | undefined,\n messageContext: { ...messageContext, disabled: true, preventPress: true },\n messageReactionTitle: !error && messageReactions ? t('Message Reactions') : undefined,\n messagesContext: { ...messagesContext, messageContentOrder },\n onlyEmojis,\n otherAttachments: attachments.other,\n OverlayReactionList,\n supportedReactions,\n threadList,\n });\n\n setOverlay('message');\n };\n\n const actionHandlers: MessageActionHandlers = {\n deleteMessage: handleDeleteMessage,\n editMessage: handleEditMessage,\n quotedReply: handleQuotedReplyMessage,\n resendMessage: handleResendMessage,\n showMessageOverlay,\n toggleBanUser: handleToggleBanUser,\n toggleMuteUser: handleToggleMuteUser,\n toggleReaction: handleToggleReaction,\n };\n\n const onLongPressMessage =\n disabled || hasAttachmentActions\n ? () => null\n : onLongPressMessageProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressMessageProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n message,\n })\n : onLongPressProp\n ? (payload?: TouchableHandlerPayload) =>\n onLongPressProp({\n actionHandlers,\n defaultHandler: payload?.defaultHandler || showMessageOverlay,\n emitter: payload?.emitter || 'message',\n event: payload?.event,\n })\n : enableLongPress\n ? () => showMessageOverlay(false)\n : () => null;\n\n const onDoubleTapMessage = () => {\n if (onDoubleTapMessageProp) {\n onDoubleTapMessageProp({ actionHandlers, message });\n }\n };\n\n const messageContext = useCreateMessageContext({\n actionsEnabled,\n alignment,\n canModifyMessage,\n channel,\n disabled,\n files: attachments.files,\n goToMessage,\n groupStyles,\n handleAction,\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleToggleReaction,\n hasReactions,\n images: attachments.images,\n isMyMessage,\n lastGroupMessage: groupStyles?.[0] === 'single' || groupStyles?.[0] === 'bottom',\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress: !animatedLongPress ? onLongPressMessage : () => null,\n onlyEmojis,\n onOpenThread,\n onPress: (payload) => {\n onPressProp\n ? onPressProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n })\n : onPressMessageProp\n ? onPressMessageProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler || onPress,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n })\n : payload.defaultHandler\n ? payload.defaultHandler()\n : onPress();\n },\n onPressIn:\n onPressInProp || onPressInMessageProp\n ? (payload) => {\n onPressInProp\n ? onPressInProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n })\n : onPressInMessageProp &&\n onPressInMessageProp({\n actionHandlers,\n defaultHandler: payload.defaultHandler,\n emitter: payload.emitter || 'message',\n event: payload.event,\n message,\n });\n }\n : null,\n otherAttachments: attachments.other,\n preventPress,\n reactions,\n readEventsEnabled,\n showAvatar,\n showMessageOverlay,\n showMessageStatus: typeof showMessageStatus === 'boolean' ? showMessageStatus : isMyMessage,\n threadList,\n });\n\n const onLongPressTouchable = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>(\n {\n onFinish: () => {\n pressActive.value = false;\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n },\n onStart: () => {\n pressActive.value = true;\n cancelAnimation(scale);\n /**\n * React native longPress active occurs on 370ms,\n * to hijack this we must make sure the timing is\n * longer, otherwise onPress will fire instead\n */\n scale.value = withSequence(\n withTiming(1, { duration: 100 }),\n withTiming(0.98, { duration: 400 }, () => {\n if (pressActive.value) {\n runOnJS(onLongPressMessage)();\n runOnJS(triggerHaptic)('impactMedium');\n }\n }),\n withTiming(1.02, { duration: 100 }),\n withTiming(1.0, { duration: 300 }),\n );\n },\n },\n [onLongPressMessage],\n );\n\n const onDoubleTap = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>(\n {\n onActive: () => {\n pressActive.value = false;\n cancelAnimation(scale);\n scale.value = withTiming(1, { duration: 100 });\n runOnJS(onDoubleTapMessage)();\n },\n },\n [onDoubleTapMessage],\n );\n\n return message.deleted_at || messageContentOrder.length ? (\n <TapGestureHandler\n enabled={animatedLongPress && !preventPress}\n maxDeltaX={8}\n maxDurationMs={3000}\n onGestureEvent={animatedLongPress ? onLongPressTouchable : undefined}\n waitFor={doubleTapRef}\n >\n <Animated.View testID='message-wrapper'>\n <TapGestureHandler\n enabled={!preventPress}\n numberOfTaps={2}\n onGestureEvent={onDoubleTap}\n ref={doubleTapRef}\n >\n <Animated.View\n style={[\n style,\n {\n backgroundColor: showUnreadUnderlay ? bg_gradient_start : undefined,\n },\n scaleStyle,\n ]}\n >\n <Animated.View\n style={[\n StyleSheet.absoluteFillObject,\n targetedMessageUnderlay,\n { backgroundColor: targetedMessageBackground },\n targetedStyle,\n ]}\n />\n <MessageProvider value={messageContext}>\n <MessageSimple />\n </MessageProvider>\n </Animated.View>\n </TapGestureHandler>\n </Animated.View>\n </TapGestureHandler>\n ) : null;\n};\n\nconst areEqual = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n prevProps: MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n nextProps: MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n lastReceivedId: prevLastReceivedId,\n message: prevMessage,\n mutedUsers: prevMutedUsers,\n showUnreadUnderlay: prevShowUnreadUnderlay,\n t: prevT,\n targetedMessage: prevTargetedMessage,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n lastReceivedId: nextLastReceivedId,\n message: nextMessage,\n mutedUsers: nextMutedUsers,\n showUnreadUnderlay: nextShowUnreadUnderlay,\n t: nextT,\n targetedMessage: nextTargetedMessage,\n } = nextProps;\n\n const repliesEqual = prevMessage.reply_count === nextMessage.reply_count;\n if (!repliesEqual) return false;\n\n const lastReceivedIdChangedAndMatters =\n prevLastReceivedId !== nextLastReceivedId &&\n (prevLastReceivedId === prevMessage.id ||\n prevLastReceivedId === nextMessage.id ||\n nextLastReceivedId === prevMessage.id ||\n nextLastReceivedId === nextMessage.id);\n\n if (lastReceivedIdChangedAndMatters) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n\n if (goToMessageChangedAndMatters) return false;\n\n const messageEqual =\n prevMessage.deleted_at === nextMessage.deleted_at &&\n (isMessageWithStylesReadByAndDateSeparator(prevMessage) && prevMessage.readBy) ===\n (isMessageWithStylesReadByAndDateSeparator(nextMessage) && nextMessage.readBy) &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.updated_at === nextMessage.updated_at;\n\n if (!messageEqual) return false;\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n prevMessage.quoted_message?.deleted_at === nextMessage.quoted_message?.deleted_at;\n\n if (!quotedMessageEqual) return false;\n\n const messageUserBannedEqual = prevMessage.user?.banned === nextMessage.user?.banned;\n if (!messageUserBannedEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n (Array.isArray(prevMessageAttachments) &&\n Array.isArray(nextMessageAttachments) &&\n prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) =>\n attachment.type === 'image'\n ? attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url\n : attachment.type === nextMessageAttachments[index].type,\n )) ||\n prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const mutedUserSame =\n prevMutedUsers.length === nextMutedUsers.length ||\n prevMutedUsers.some((mutedUser) => mutedUser.target.id === prevMessage.user?.id) ===\n nextMutedUsers.some((mutedUser) => mutedUser.target.id === nextMessage.user?.id);\n if (!mutedUserSame) return false;\n\n const showUnreadUnderlayEqual = prevShowUnreadUnderlay === nextShowUnreadUnderlay;\n if (!showUnreadUnderlayEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const targetedMessageEqual = prevTargetedMessage === nextTargetedMessage;\n if (!targetedMessageEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessage = React.memo(MessageWithContext, areEqual) as typeof MessageWithContext;\n\nexport type MessageProps<\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n> = Partial<Omit<MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'>> &\n Pick<MessagePropsWithContext<At, Ch, Co, Ev, Me, Re, Us>, 'groupStyles' | 'message'>;\n\n/**\n * Message - A high level component which implements all the logic required for a message.\n * The actual rendering of the message is delegated via the \"Message\" property\n *\n * @example ./Message.md\n */\nexport const Message = <\n At extends UnknownType = DefaultAttachmentType,\n Ch extends UnknownType = DefaultChannelType,\n Co extends string = DefaultCommandType,\n Ev extends UnknownType = DefaultEventType,\n Me extends UnknownType = DefaultMessageType,\n Re extends UnknownType = DefaultReactionType,\n Us extends UnknownType = DefaultUserType,\n>(\n props: MessageProps<At, Ch, Co, Ev, Me, Re, Us>,\n) => {\n const {\n channel,\n disabled,\n enforceUniqueReaction,\n isAdmin,\n isModerator,\n members,\n readEventsEnabled,\n } = useChannelContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { client, mutedUsers } = useChatContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { dismissKeyboard } = useKeyboardContext();\n const { setData } = useMessageOverlayContext<At, Ch, Co, Ev, Me, Re, Us>();\n const messagesContext = useMessagesContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { setOverlay } = useOverlayContext();\n const { openThread } = useThreadContext<At, Ch, Co, Ev, Me, Re, Us>();\n const { t } = useTranslationContext();\n\n return (\n <MemoizedMessage<At, Ch, Co, Ev, Me, Re, Us>\n {...messagesContext}\n {...{\n channel,\n client,\n disabled,\n dismissKeyboard,\n enforceUniqueReaction,\n isAdmin,\n isModerator,\n members,\n messagesContext,\n mutedUsers,\n openThread,\n readEventsEnabled,\n setData,\n setOverlay,\n t,\n }}\n {...props}\n />\n );\n};\n"]}
|
|
@@ -92,15 +92,16 @@ var AttachmentWithContext = function AttachmentWithContext(props) {
|
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
if (attachment.type === 'video' && attachment.asset_url
|
|
96
|
-
return _react["default"].createElement(
|
|
95
|
+
if (attachment.type === 'video' && attachment.asset_url) {
|
|
96
|
+
return _react["default"].createElement(FileAttachment, {
|
|
97
|
+
attachment: attachment,
|
|
97
98
|
__self: _this,
|
|
98
99
|
__source: {
|
|
99
100
|
fileName: _jsxFileName,
|
|
100
101
|
lineNumber: 90,
|
|
101
102
|
columnNumber: 7
|
|
102
103
|
}
|
|
103
|
-
})
|
|
104
|
+
});
|
|
104
105
|
}
|
|
105
106
|
|
|
106
107
|
if (hasAttachmentActions) {
|